unix 如何精确复制文件夹

wvt8vs2t  于 2022-11-04  发布在  Unix
关注(0)|答案(6)|浏览(189)

我正在为一个我正在编程的设备复制一个文件系统。在花了很多时间试图弄清楚为什么我正在安装的文件系统不工作之后,我发现cp没有完成这项工作。我用du -s检查原始文件系统的大小和我用cp -r复制的文件系统的大小,结果发现它们相差大约150个字节。
有些东西告诉我,符号链接或某种内核对象没有被正确复制。
有没有可能准确地复制一个文件夹/文件系统?如果有,我该怎么做?

sc4hvdpw

sc4hvdpw1#

请尝试直接执行此操作:

cp -a src target

man cp开始

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

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

gjmwrych

gjmwrych2#

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

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

只需记住只使用目录名和**,而不要在 sourcetarget name的末尾放置斜杠**(/)或通配符/*),否则不会复制源文件正下方的隐藏文件。

ff29svar

ff29svar3#

另一个常用的选项是使用tar c source | (cd target && tar x )。请参阅this linuxdevcenter.com article.

dnph8jn4

dnph8jn44#

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

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

不太容易使用,但这是 * 非常 * 精确,保存时间戳,所有者,权限,特殊文件。

holgip5t

holgip5t5#

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

2izufjch

2izufjch6#

这就是我所做的,例如复制目录A -〉B:

$ mkdir B
$ cd A
$ cp -a ./ ../B

相关问题