cp не копирует файлы?

cp -v /var/www /var/www/dev
cp -vR /var/www/admin /var/www/dev
cp -vR /var/www/cron /var/www/dev
cp -vR /var/www/css /var/www/dev
cp -vR /var/www/files /var/www/dev
cp -vR /var/www/images /var/www/dev
cp -vR /var/www/js /var/www/dev
cp -vR /var/www/medlem /var/www/dev
cp -vR /var/www/snippets /var/www/dev

Это только первый файл, который не копирует файлы. Я знаю, что это далеко не лучшее решение, но да, оно работает довольно хорошо, если часть первого cp не копирует. Каждый cp кроме первого работает. Я хочу, чтобы первый копировал только файлы, а не заходил в каталоги и копировал. Я просто получаю сообщение об ошибке

cp: пропущенный каталог '/ var / www'

1
задан 13 May 2015 в 04:11

2 ответа

По умолчанию, cp не скопирует каталоги. Это защищает Вас от случайного копирования слишком много.

$ cp -v /var/www /var/www/dev
cp: omitting directory `/var/www'

Для переопределения этого значения по умолчанию предоставьте -R опция:

$ cp -vR /var/www /var/www/dev
`/var/www' -> `/var/www/dev/www'

причина, что это было единственной командой, которая перестала работать, состояла в том, что это было единственной командой, которая отсутствовала -R.

7
ответ дан 13 May 2015 в 14:11
  • 1
    Can' t делают это прямо сейчас, но я буду иметь игру и попытаюсь повредить ее снова и обратная связь. – hatterman 16 September 2016 в 10:15

Ответ John1024, действительно отвечает на вопрос, однако, я утверждал бы, что обоснование не совершенно точно. Это корректно, что по умолчанию эти cp команда не скопирует каталоги, однако импликация, что это должно, прежде всего, защитить пользователя от "копирования слишком много", кажется маловероятной.

Ubuntu управляет файловой системой стиля Unix, которая использует понятие inodes , чтобы описать filesystem объект, быть ею файл или каталог.

каталог А является просто списком имен, присвоенных inodes. В этом смысле визуальное представление, обеспеченное GUI, является своего рода иллюзией, т.е. каталог не является на самом деле 'контейнером' других файлов, а скорее списком имен файлов и inode pointers.

.....a directory entry contains only a name for the associated file and a pointer 
to the file itself. This pointer is an integer called the i-number (for index 
number) of the file. When the file is accessed, its i-number is used as an index 
into a system table (the i-list) stored in a known part of the device on which the 
directory resides. The entry found thereby (the file's i-node) contains the 
description of the file:...
   — The UNIX Time-Sharing System, The Bell System Technical Journal, 1978

С этой точки зрения, мы видим, что копирование каталога, просто скопировало бы список имен и связалось inodes; это было бы сродни созданию жесткой ссылки на каталог. Это - (вероятно), не фактическое намерение пользователя при копировании каталога. По всей вероятности, при копировании каталога с помощью эти cp команда, пользователь намеревается сделать физическую копию фактических файлов данных в.

Поэтому я утверждал бы, что использование -r опция при копировании каталогов, делает команду явной.

0
ответ дан 13 May 2015 в 14:11
  • 1
    И Вы хотите использовать ./teste.sh только, когда Ваш сценарий оболочки расположен в текущем каталоге. Удалите запаздывающую точку. – grooveplex 12 August 2016 в 22:03

Другие вопросы по тегам:

Похожие вопросы: