2010-12-15 15:45:40 +0000 2010-12-15 15:45:40 +0000
81
81

在Unix上复制一个目录

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

答案 (3)

117
117
117
2010-12-15 15:49:02 +0000
cp -rf /source/path/ /destination/path/

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

-f = 强制,如果现有的目标文件无法打开,将其删除并重新尝试

注意使用-f标志时要小心,因为它会强制覆盖你复制到的任何东西。感谢 @Nifle 的建议。

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

11
11
11
2010-12-15 16:07:16 +0000

虽然cp -R的答案是正确的(BTW上标志的情况必须是大写的,两者在linux上都是支持的),但有【一个涉及tar的老咒语】(http://www.ibm.com/developerworks/aix/library/au-satdirmigration.html)。

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

你为什么要这么做?因为tar对硬链接和符号链接都有相当复杂的理解。

你想让你的拷贝用一个具有相同文本的链接来替换现有的符号链接吗?还是用指向同一个目标的链接(调整相对路径来补偿)?还是用目标的位面拷贝?

如果原来的两个文件是硬链接,新的结构应该有两份数据还是只有一份?

决定,决定。Tar有合理的默认值,但可以让你很具体的去做。

9
9
9
2010-12-15 19:54:18 +0000

我喜欢

cp -axv source dest

Rsync是另一个好工具

rsync -va source dest
```。