cp 命令用于备份

cp 命令用于备份

我正在尝试将特定文件夹文件(无目录和子目录文件)复制(备份)到第二个文件夹。我使用 backstick 嵌套 find 命令,但它为每个带有 file_name (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

有什么建议吗?谢谢!

答案1

用于在这些文件上find运行:cp

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

这样,文件名中的空格和其他特殊字符就不会成为问题。当您使用命令替换而不使用引号时,shell 会根据空格拆分输出,然后执行通配符扩展等。使用其find自身执行此操作更简单。或者参见如何在 rsync 中排除所有子目录但包含目录的文件?

答案2

尝试使用同步。在此示例中,我调用 syncronize 所有文件和文件夹源码目录至夏令时,排除.sh文件,保留权限、所有权、时间戳:

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

此外,您可以添加一些附加参数,这取决于您的情况。

答案3

尝试以下命令:

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

-depth选项find以深度优先的顺序遍历文件系统。

答案4

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

相关内容