我正在为一个我正在编程的设备复制一个文件系统。在花了很多时间试图弄清楚为什么我正在安装的文件系统不工作之后,我发现cp没有完成这项工作。我用du -s检查原始文件系统的大小和我用cp -r复制的文件系统的大小,结果发现它们相差大约150个字节。有些东西告诉我,符号链接或某种内核对象没有被正确复制。有没有可能准确地复制一个文件夹/文件系统?如果有,我该怎么做?
cp
du -s
cp -r
sc4hvdpw1#
请尝试直接执行此操作:
cp -a src target
从man cp开始
man cp
-a, --archive same as -dR --preserve=all
它保留权利,符号链接...
gjmwrych2#
这里我尝试了我的Linux中的所有代码。看起来@seanmcl提出的Rsync是正确的,而其他人未能保留 * 所有者 * 和/或 * 一些特殊文件 * 或 * 拒绝结果 *。确切的代码是:
$ sudo rsync -aczvAXHS --progress /var/www/html /var/www/backup
只需记住只使用目录名和**,而不要在 source 和 target name的末尾放置斜杠**(/)或通配符(/*),否则不会复制源文件正下方的隐藏文件。
/
/*
ff29svar3#
另一个常用的选项是使用tar c source | (cd target && tar x )。请参阅this linuxdevcenter.com article.
tar c source | (cd target && tar x )
dnph8jn44#
据我所知,复制文件最准确的方法是使用cpio:
cpio
cd /path/to/source find . -xdev -print0 | cpio -oa0V | (cd /path/to/target && cpio -imV)
不太容易使用,但这是 * 非常 * 精确,保存时间戳,所有者,权限,特殊文件。
holgip5t5#
Rsync是复制文件系统的最佳方法。它们是myriad arguments,可以让您精确地控制复制的内容。
2izufjch6#
这就是我所做的,例如复制目录A -〉B:
$ mkdir B $ cd A $ cp -a ./ ../B
6条答案
按热度按时间sc4hvdpw1#
请尝试直接执行此操作:
从
man cp
开始它保留权利,符号链接...
gjmwrych2#
这里我尝试了我的Linux中的所有代码。看起来@seanmcl提出的Rsync是正确的,而其他人未能保留 * 所有者 * 和/或 * 一些特殊文件 * 或 * 拒绝结果 *。确切的代码是:
只需记住只使用目录名和**,而不要在 source 和 target name的末尾放置斜杠**(
/
)或通配符(/*
),否则不会复制源文件正下方的隐藏文件。ff29svar3#
另一个常用的选项是使用
tar c source | (cd target && tar x )
。请参阅this linuxdevcenter.com article.dnph8jn44#
据我所知,复制文件最准确的方法是使用
cpio
:不太容易使用,但这是 * 非常 * 精确,保存时间戳,所有者,权限,特殊文件。
holgip5t5#
Rsync是复制文件系统的最佳方法。它们是myriad arguments,可以让您精确地控制复制的内容。
2izufjch6#
这就是我所做的,例如复制目录A -〉B: