如何准确复制文件夹

时间:2013-10-17 18:56:48

标签: linux bash unix ubuntu

我正在尝试复制我正在编程的设备的文件系统。经过这么多时间试图找出我安装的文件系统无法正常工作的原因后,我发现cp没有完成任务。我使用du -s来检查原始文件系统的大小以及我使用cp -r复制的文件系统的大小,因为事实证明它们相差大约150个字节。

有些东西告诉我,符号链接或某种内核对象没有被正确复制。

是否可以准确复制文件夹/文件系统?如果是这样我怎么去呢?

5 个答案:

答案 0 :(得分:57)

尝试以直截了当的方式:

cp -a src target

来自man cp

    -a, --archive
           same as -dR --preserve=all

它保留权利,符号链接......

答案 1 :(得分:6)

在这里,我尝试了Linux中的所有代码。似乎@seanmcl提出的Rsync是正确的,而其他人未能保留所有者和/或某些特殊文件拒绝结果。确切的代码是:

$ sudo rsync -aczvAXHS --progress /var/www/html /var/www/backup

请记住只使用目录名称,不要斜杠/)或通配符/* source target 名称,否则不会复制源正下方的隐藏文件。

答案 2 :(得分:3)

我知道复制文件的最准确方法是使用cpio

cd /path/to/source
find . -xdev -print0 | cpio -oa0V | (cd /path/to/target && cpio -imV)

不是很容易使用,但这非常精确,保留了时间戳,所有者,权限和特殊文件。

答案 3 :(得分:2)

Rsync是复制文件系统的最佳方式。它们是myriad arguments,可让您准确控制复制的内容。

答案 4 :(得分:2)

另一种流行的选择是使用tar c source | (cd target && tar x )。见this linuxdevcenter.com article.