我正在尝试使用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运行命令,因为在这一点上,无论我尝试什么都会猜测,想法会受到赞赏。
答案 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文件是否存在管道错误,并在必要时重新输入命令。