我正在尝试复制我正在编程的设备的文件系统。经过这么多时间试图找出我安装的文件系统无法正常工作的原因后,我发现cp
没有完成任务。我使用du -s
来检查原始文件系统的大小以及我使用cp -r
复制的文件系统的大小,因为事实证明它们相差大约150个字节。
有些东西告诉我,符号链接或某种内核对象没有被正确复制。
是否可以准确复制文件夹/文件系统?如果是这样我怎么去呢?
答案 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.