![镜像包含数百万个小文件的目录的最快方法](https://linux22.com/image/555544/%E9%95%9C%E5%83%8F%E5%8C%85%E5%90%AB%E6%95%B0%E7%99%BE%E4%B8%87%E4%B8%AA%E5%B0%8F%E6%96%87%E4%BB%B6%E7%9A%84%E7%9B%AE%E5%BD%95%E7%9A%84%E6%9C%80%E5%BF%AB%E6%96%B9%E6%B3%95.png)
我需要将一个 700G ISCSI 挂载文件夹复制到本地硬盘上的文件夹中,同时保持现有的权限和所有权。文件夹中的数据由大约一百万个文件组成,其中大部分是小文件,新目录需要与原始目录的权限和所有权完全匹配。
使用
rsync -az /original_folder/ /new_folder
可以获得所有正确的权限,但“扫描文件”已经花了一个多小时,甚至还没有开始复制。数据是 openvz 磁盘共享,过去使用“cp”复制时出现过权限问题。
有没有一种更快的方法来复制大量小文件,同时准确保留权限和所有权?也许一些 rsync 标志可以避免初始扫描?理想情况下,如果进程中断,可以使用一种可以从上次中断的地方继续的工具。
答案1
您是否考虑过使用 tar? 类似tar -cpOC <sourcedir> . | tar -xpC <targetdir> -f -
“可能”的命令对您有用。
答案2
你使用的 rsync 是什么版本?版本 3 处理小文件的效果好得多。你还可以使用 -P 来了解进度。
至于从部分恢复.. hrm。您可以进入根目录并运行类似...的命令。
对于 i in * ; 执行 rsync -azP $i /newfolder ; 完成
然后跳过所有已经复制的子目录
答案3
在这种情况下,您可能应该尝试复制卷而不是尝试复制单个文件。
您的 iSCSI 目标是否有办法克隆卷?
答案4
cp -aux
(作为 root)应该可以解决问题。