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