Я пытаюсь скопировать (сделать резервную копию) файлы определенной папки (без файлов каталогов и подкаталогов) во вторую папку. Я вложил команду 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
Есть предложения? Спасибо!
Используйте find
для запуска cp
для этих файлов:
find /home/gianmarco/backup1 -maxdepth 1 -type f -exec cp -at /home/gianmarco/backup2 {} +
Таким образом, пробелы и другие специальные символы в именах файлов не будут проблемой. Когда вы используете подстановку команд без кавычек, оболочка будет разбивать выходные данные на пробелы, затем выполнять расширение по шаблону и т. Д. Для этого проще использовать find
. Или см. Как я могу исключить все подкаталоги, но включить файлы каталога в rsync?
find /home/gianmarco/backup1 -maxdepth 1 -type f -exec cp {} /home/gianmarco/backup2
Попробуйте выполнить следующую команду:
find /path_to_source/ -depth -type f -exec cp -apt /path_to_target_directory/ {} \;
где опция -depth
заставляет find
проходить файловую систему в порядке глубины.
Попробуйте использовать rsync . В этом примере я называю синхронизировать все файлы & amp; папки в src dir до dst , исключая .sh
файлы, сохраняя права доступа, владельца, метку времени:
rsync -a --exclude '*.sh' /path/to/src /path/to/dst
Также вы Можно добавить некоторые дополнительные параметры, это зависит от вашей ситуации.