Почему моя команда cp не копирует целые каталоги? [duplicate]

На этот вопрос уже есть ответ:

Я тестировал cp и будет копировать только отдельные файлы. Например, я набрал cp , а затем точное имя файла, затем ввел каталог, и файл был скопирован. Однако, когда я ввел каталог и целевой каталог, на компьютере ничего не изменилось. Я думал, что cp должен копировать содержимое в каталогах.

Я пробовал это несколько раз.

3
задан 26 September 2015 в 05:22

3 ответа

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

 cp sourcefile destinationLocation
 #will copy sourcefile to the specified destinationLocation

, Но если Вы хотите скопировать каталог, необходимо указать рекурсивный аргумент как это

cp -R dir1 dir2 #copies dir1 to dir2
cp -R dir dir2 dir3 #copies dir1 & dir2 to dir3

Идеально, можно указать столько файлов, сколько Вы хотите единственному месту назначения все разделенные пробелами. Это ниже однако копирует dir наряду с его полномочиями

 sudo cp -rp /home/me /media/backup/me
 -p     same as --preserve=mode,ownership,timestamps

, Кроме того, можно использовать rsync

 sudo rsync -a /home/me/ /media/backup/me/
 -a, --archive

          Note that -a does not preserve hardlinks, because finding  multiply-linked
          files is expensive.  You must separately specify -H.

И не забывайте запаздывающие наклонные черты при копировании использующий rsync. См. страницу справочника для каждой команды на опциях использования их доступный на Вашем терминале путем ввода человек cp или человек rsync

9
ответ дан 1 December 2019 в 13:03

Используйте

cp -R

, Это указывает рекурсивную копию т.е. все подкаталоги, и файлы будут скопированы. Используйте man cp для нахождения большего количества переключателей для CP.

3
ответ дан 1 December 2019 в 13:03

cp, по умолчанию, не копирует каталоги. От man 1posix cp :

2. If source_file is of type directory, the following steps  shall  be
   taken:

    a. If  neither the -R or -r options were specified, cp shall write
       a diagnostic message to standard error, do  nothing  more  with
       source_file, and go on to any remaining files.

у Вас должно быть сообщение как так:

cp: omitting directory '...'

, Например:

$ cp Documents Pictures
cp: omitting directory ‘Documents’

Как видно из страницы справочника, используйте -r или -R с cp:

cp -R Documents Pictures
0
ответ дан 1 December 2019 в 13:03

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

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