Команда cp для резервного копирования

Я пытаюсь скопировать (резервное копирование) файлы определенных папок (без каталогов и файлов подкаталогов) во вторую папку. Я вложил команду find с backstick, но он дал мне ошибку для каждого файла с именем_файла (copy) .extension

cp -a -t /home/gianmarco/backup2 `find /home/gianmarco/backup1 -maxdepth 1 -type f` cp: cannot stat '/home/gianmarco/backup1/helloWorld': No such file or directory cp: cannot stat '(copy).txt': No such file or directory cp: cannot stat '/home/gianmarco/backup1/2nuovoFile': No such file or directory cp: cannot stat '(copy).txt': No such file or directory

Любое предложение? Спасибо!

0
задан 15 January 2018 в 11:22

12 ответов

Используйте find для запуска cp в этих файлах:

find /home/gianmarco/backup1 -maxdepth 1 -type f -exec cp -at /home/gianmarco/backup2 {} +

Таким образом, пробелы и другие специальные символы в именах файлов не будут проблемой. Когда вы используете подстановку команд без кавычек, оболочка будет разбивать выходные данные на пробелы, затем выполнять расширение подстановочных знаков и т. Д. Для этого проще использовать find. Или посмотрите, как я могу исключить все подкаталоги, но включить файлы каталога в rsync?

2
ответ дан 22 May 2018 в 15:31
  • 1
    Большое вам спасибо, он работает на 100% !!! Я полностью забыл -exec в поиске .... – Gianmarco Rubbini 15 January 2018 в 23:12

Используйте find для запуска cp в этих файлах:

find /home/gianmarco/backup1 -maxdepth 1 -type f -exec cp -at /home/gianmarco/backup2 {} +

Таким образом, пробелы и другие специальные символы в именах файлов не будут проблемой. Когда вы используете подстановку команд без кавычек, оболочка будет разбивать выходные данные на пробелы, затем выполнять расширение подстановочных знаков и т. Д. Для этого проще использовать find. Или посмотрите, как я могу исключить все подкаталоги, но включить файлы каталога в rsync?

2
ответ дан 17 July 2018 в 23:01

Используйте find для запуска cp в этих файлах:

find /home/gianmarco/backup1 -maxdepth 1 -type f -exec cp -at /home/gianmarco/backup2 {} +

Таким образом, пробелы и другие специальные символы в именах файлов не будут проблемой. Когда вы используете подстановку команд без кавычек, оболочка будет разбивать выходные данные на пробелы, затем выполнять расширение подстановочных знаков и т. Д. Для этого проще использовать find. Или посмотрите, как я могу исключить все подкаталоги, но включить файлы каталога в rsync?

2
ответ дан 24 July 2018 в 13:35

Попробуйте использовать rsync. В этом exmaple я вызываю syncronize все файлы & amp; папок в src dir в dst, исключая файлы .sh, сохраняющие разрешения, право собственности, временную метку:

rsync -a --exclude '*.sh' /path/to/src /path/to/dst

Кроме того, вы можете добавить некоторые дополнительные параметры, это зависит от ваших ситуация.

0
ответ дан 22 May 2018 в 15:31

Попробуйте выполнить следующую команду:

find /path_to_source/ -depth -type f -exec cp -apt /path_to_target_directory/ {} \;

, где опция -depth делает find перемещение файловой системы в порядке глубины.

0
ответ дан 22 May 2018 в 15:31
find /home/gianmarco/backup1 -maxdepth 1 -type f -exec cp {} /home/gianmarco/backup2

-1
ответ дан 22 May 2018 в 15:31

Попробуйте выполнить следующую команду:

find /path_to_source/ -depth -type f -exec cp -apt /path_to_target_directory/ {} \;

, где опция -depth делает find перемещение файловой системы в порядке глубины.

0
ответ дан 17 July 2018 в 23:01

Попробуйте использовать rsync. В этом exmaple я вызываю syncronize все файлы & amp; папок в src dir в dst, исключая файлы .sh, сохраняющие разрешения, право собственности, временную метку:

rsync -a --exclude '*.sh' /path/to/src /path/to/dst

Кроме того, вы можете добавить некоторые дополнительные параметры, это зависит от ваших ситуация.

0
ответ дан 17 July 2018 в 23:01
[D0] find /home/gianmarco/backup1 -maxdepth 1 -type f -exec cp {} /home/gianmarco/backup2

-1
ответ дан 17 July 2018 в 23:01

Попробуйте выполнить следующую команду:

find /path_to_source/ -depth -type f -exec cp -apt /path_to_target_directory/ {} \;

, где опция -depth делает find перемещение файловой системы в порядке глубины.

0
ответ дан 24 July 2018 в 13:35

Попробуйте использовать rsync. В этом exmaple я вызываю syncronize все файлы & amp; папок в src dir в dst, исключая файлы .sh, сохраняющие разрешения, право собственности, временную метку:

rsync -a --exclude '*.sh' /path/to/src /path/to/dst

Кроме того, вы можете добавить некоторые дополнительные параметры, это зависит от ваших ситуация.

0
ответ дан 24 July 2018 в 13:35
[D0] find /home/gianmarco/backup1 -maxdepth 1 -type f -exec cp {} /home/gianmarco/backup2

-1
ответ дан 24 July 2018 в 13:35

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

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