两个服务器之间具有远程rsync的损坏管道

时间:2017-02-06 14:31:22

标签: linux bash rsync scp

我正在尝试使用ubuntu 16.04上的bash将大型数据集(768 Gigs)从一台远程计算机传输到另一台远程计算机。我似乎遇到的问题是我使用rsync并且机器将传输几个小时然后在连接不可避免地被中断时退出。假设我在机器A上,而远程服务器是机器B和C(所有机器都使用ubuntu 16.04)。我ssh到机器B并使用此命令:

nohup rsync -P -r -e ssh /path/to/files/on/machine_B user@machine_C:directory &

请注意,我有授权密钥设置,因此机器B和C之间不需要密码

几个小时后,我在nohup文件中得到以下内容:

sending incremental filelist
file_1.bam
90,310,583,648 100%   36.44MB/s    0:39:23 (xfr#4, to-chk=5/10)
file_2.bam
79,976,321,885 100%   93.25MB/s    0:13:37 (xfr#3, to-chk=6/10)
file_3.bam
88,958,959,616  88%   12.50MB/s    0:15:28  rsync error: unexplained error (code 129) at rsync.c(632) [sender=3.1.1]
rsync: [sender] write error: Broken pipe (32)

我使用了nohup,因为即使有一个挂断,它仍会继续运行。我没有尝试过sh -c而且我没有尝试从机器A运行命令,因为在这一点上,无论我尝试什么都会猜测,想法会受到赞赏。

1 个答案:

答案 0 :(得分:0)

对于那些感兴趣的人我也尝试在机器B上使用nohup命令运行以下脚本。

脚本:

chomp( my @files = `ls /path/to/files/on/machineB/*` );
foreach ( @files ) { system("scp $_ user@machineC:destination/"); }

我仍然截断了文件。

此时以下命令似乎正在运行:

nohup rsync -P --append -r -e ssh /path/to/files/on/machine_B user@machine_C:directory &

您只需检查nohup文件是否存在管道错误,并在必要时重新输入命令。