我需要将15 TB
数据从一台机器传输到另一台机器,但在过去三周内已经失败了好几次,我别无选择,不知道该怎么办。
有两台机器:
- 源计算机:使用 Samba 共享挂载点,限制较多(连接到网络外的计算机需要 VPN,如果不设置 VPN,我无法在第二台 [目标] 计算机上正常挂载共享,VPN 每 10 小时会自动断开连接)。我的 15TB 数据都在这台计算机上
- 目标机器:使用 NFS
我尝试做的第一件事是连接到第一台机器并使用简单的 rsync:
rsync -rvz --stats --progress /mnt/samba/my_15TB_data user@second_machine:/mnt/NFS/backup
几个小时后失败了:
rsync error: error in rsync protocol data stream (code 12) at io.c(605) [sender=3.0.9]
bash: syntax error near unexpected token `('
12820840448 55% 9.02MB/s 0:18:31
12820840448: command not found
rsync: writefd_unbuffered failed to write 4 bytes to socket [sender]: Broken pipe (32)
rsync: connection unexpectedly closed (731 bytes received so far) [sender]
syntax error near unexpected token `('
rsync error: error in rsync protocol data stream (code 12) at io.c(605) [sender=3.0.9]
bash: syntax error near unexpected token `('
我不太明白这个错误是什么意思,但从我在网上从几个论坛收集到的信息来看,这看起来像是 rsync 在复制大量数据时产生的错误!另一种可能性是两台机器之间的连接可能已经中断。
然后我尝试尽可能地压缩我的数据,因此我选择了 7z 上最高级别的压缩:
7z a 15T_data_compressed.7z /mnt/samba/my_15TB_data -mx9
这一切都进行得很顺利,但是在 7zip 进程花费了 460 小时的 CPU 时间后,该进程被机器管理员强制终止。我意识到我正在使用机器上所有可用的内核,因此在仅仅压缩文件就如此大量使用资源之后,管理员有权这样做。
我该怎么做才能有效地传输我的数据?更具体地说,我正在寻找一种方法,可以让我恢复转会的可能性以防万一出现问题。例如,在上面使用 rsync 的情况下,我可以看到已经传输了大量数据。
使用 VPN(每 10 小时自动断开连接一次)安装 samba 共享并以某种方式将文件夹镜像到 NFS 上是否更好?这样的事情可能吗?它会更快吗?
顺便说一下,两台机器之间的平均传输速度为 12 MB/s。这是位于两个不同国家的两台不同的机器。
答案1
首先,错误在 rsync 中,您引用的内容似乎是您将内容粘贴到了终端中。这不是原始错误消息。
您粘贴到终端的原始消息表明连接由于某种原因(如重启、网络问题或类似情况)而关闭。但 rsync 应该能够恢复。
只需运行
rsync -rvz --stats --progress /mnt/samba/my_15TB_data user@second_machine:/mnt/NFS/backup
再次,它会检查文件的状态,比较时间戳和大小,并忽略源端和目标端具有相同大小和时间戳的任何文件。这个过程需要一些时间,但除非有大量非常小的文件,否则它会比重新传输文件更快。
通常,您可以使用 rsync 根据需要多次恢复;它是一种相当强大的文件传输机制。