什么是 cp 命令复制所有文件 + 目录结构和 cp 命令在文件已存在时跳过复制文件

什么是 cp 命令复制所有文件 + 目录结构和 cp 命令在文件已存在时跳过复制文件

我需要将目录中的所有文件复制到备份硬盘上,同时保留目录结构。这样可行吗:

find . -name '*.*' -exec cp --parents \{\} /target \;

然后我想将备份硬盘复制到新计算机,但如果该文件已存在于目标位置我不想复制它,我只是想跳过它。

做这个的最好方式是什么?

答案1

不需要 afindcp组合。我会用它rsync来完成这样的任务。

要复制“所有内容”并保留权限和所有权(并跳过不需要复制的内容),请使用“试运行”等

sudo rsync -Havn sourcedir/ targetdir/

当事情看起来不错时,删除n并进行真正的复制,

sudo rsync -Hav sourcedir/ targetdir/

斜杠结尾sourcedir/很重要,这在 中进行了描述man rsync

如果没有硬链接,可以跳过H,搜索过程会更快。

如果权限和所有权没有问题,则可以运行rsync不带sudo.

答案2

只需检查 cp 的手册页,但 -n 标志应该可以解决问题。

find . -name '.' -exec cp -n --parents {} /target ;

-n 不要覆盖现有文件。

但请检查您的系统并进行测试。

在 cp 上,我可能会考虑添加 -p 标志来保留修改时间和访问时间,但它将保留您可能不想保留的许多其他文件系统信息,例如权限、ACL、所有者...

我会写 '{}' 而不是只写 {} 并用 ; 关闭指令

find . -name '*.*' -exec cp -n --parents '{}' /target \;

相关内容