Rsync 巨大小文件数据集 5TB,+M 个小文件

Rsync 巨大小文件数据集 5TB,+M 个小文件

我遇到过一种情况,应用服务器配置错误导致创建了大约 5TB 的数据集,其中每个目录包含大量小文件。我们正在传输文件并更改应用程序,但 rsync 在传输数据时失败。它甚至在本地驱动器之间本地失败。我设法在一夜之间只复制了 3.5G!我试图更改 rsync 开关,但仍然没有运气。以下是当前在服务器上运行的没有任何进度指示的内容:rsync -avhWc --no-compress --progress source destination 有人建议使用 gigasync,但 github 和网站不可用。有人可以建议一种传输文件的方法吗?非常感谢任何帮助

答案1

尝试 xargs+rsync:

 find . -type f -print0 | xargs -J % -0 rsync -aP % user@host:some/dir/

您可以控制每次 rsync 调用时传递多少个文件作为源,例如-n 每次 rsync 复制 200 个文件:

 find . -type f -print0 | xargs -n 200 -J % -0 rsync -aP % user@host:some/dir/

如果速度太慢,您可以使用以下命令并行运行 rsync 的多个副本-P

find . -type f -print0 | xargs -P 8 -n 200 -J % -0 rsync -aP % user@host:some/dir/

这将并行启动 8 个 rsync 副本。

答案2

如果这是一个受信任/安全的网络,并且您可以在目标主机上打开端口,那么在另一台机器上重现树的一个好方法是结合使用 tar 和 netcat。我没有在终端机旁,所以无法写出完整的演示,但这个页面做得相当不错:

http://toast.djw.org.uk/tarpipe.html

一定要使用压缩。在最佳情况下,您可以以三个潜在瓶颈(源上的读取、网络、目标上的写入)中速度最慢的吞吐率传输数据。

答案3

未指定服务器操作系统 - 您考虑过 robocopy 吗?但它基于 Windows。支持线程、重试和带宽限制。支持 UNC 到 UNC。 RoboCopy 文档

快速谷歌搜索 rsync 显示 unix / windows...也许您正在使用 windows。

答案4

如果您有 ZFS,则可以使用 ZFS 级别的复制将文件系统发送到新目的地。

如果这不是一个选项,请考虑 UDR+rsync,详细信息如下: 传输大量小文件

相关内容