43

我正在尝试为我正在编程的设备复制文件系统。经过这么多时间试图弄清楚为什么我正在安装的文件系统无法正常工作后,我发现cp没有完成工作。我曾经du -s检查原始文件系统和我复制的文件系统的大小,cp -r结果发现它们相差大约 150 个字节。

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

是否可以精确复制文件夹/文件系统?如果是这样,我会怎么做?

4

5 回答 5

71

尝试以简单的方式执行此操作:

cp -a src target

man cp

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

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

于 2013-10-17T19:04:48.977 回答
12

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

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

请记住只使用目录名称,不要在名称和目标名称的末尾加上斜杠( /) 或通配符( ),否则不会复制源正下方的隐藏文件。/*

于 2016-02-13T12:14:43.193 回答
8

另一个流行的选择是使用tar c source | (cd target && tar x ). 请参阅这篇 linuxdevcenter.com 文章。

于 2013-10-17T20:23:26.737 回答
3

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

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

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

于 2013-10-17T20:13:24.637 回答
2

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

于 2013-10-17T18:57:45.717 回答