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

Я пытаюсь скопировать (сделать резервную копию) файлы определенной папки (без файлов каталогов и подкаталогов) во вторую папку. Я вложил команду find с помощью backstick, но она выдает ошибку для каждого файла с именем файла (копия) .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 в 10:22

4 ответа

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

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

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

2
ответ дан 15 January 2018 в 10:22

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

-1
ответ дан 15 January 2018 в 10:22

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

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

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

0
ответ дан 15 January 2018 в 10:22

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

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

Также вы Можно добавить некоторые дополнительные параметры, это зависит от вашей ситуации.

0
ответ дан 15 January 2018 в 10:22

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

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