在 Unix 上复制目录

在 Unix 上复制目录

如何在 Unix 上使用终端窗口将目录结构 dir1 复制到 dir2(包含所有子目录)?

答案1

cp -rf /source/path/ /destination/path/

-r= 递归,复制所有子目录

-f= 强制,如果无法打开现有目标文件,则删除它并重试

笔记使用该标志时应小心谨慎,-f因为它会强制覆盖您复制的任何内容。感谢@Nifle 的建议。

如果需要,您可能需要使用 * 通配符来复制目录中的所有文件。

答案2

虽然cp -R答案是正确的(顺便说一下,BSD 上的标志的大小写必须大写,两者都支持 Linux),但一个古老的咒语,涉及焦油

$ tar cf - . | (cd DIR; tar xf - )

你为什么要这么做?因为 tar 对链接既艰难又具有象征意义。

您是否希望复制以将现有符号链接替换为具有相同文本的符号链接?或者使用指向相同目标的链接(调整相对路径以进行补偿)?或者使用目标的按位副本?

如果原始文件中的两个文件是硬链接的,那么新结构是否应该有两个数据副本还是只有一个?

决策,决策。Tar 有合理的默认值,但允许您对此进行非常具体的设置。

答案3

我喜欢

cp -axv source dest

Rsync 是另一个很好的工具

rsync -va source dest

相关内容