我必须使用 Rsync 传输 2-3 GB。一切都运行正常,但我的网络有时会断开连接,整个过程失败。我想每 3 分钟重试一次网络,一旦网络恢复,复制应该会继续。我打算用 Perl 脚本编写它。
答案1
我不明白为什么这需要与 Perl 有任何关系。我的意思是,如果失败了,您只想继续运行 rsync(一个命令行应用程序)。这样的事情难道还不够吗?
while ! rsync -a /mydir myuser@remotehost:/other_dir; do
sleep 180;
done
解释
这将不断尝试运行rsync
命令,直到成功完成(退出代码为 0)。每次迭代都会等待 180 秒后再继续。顺便说一下,这都是 bash 脚本,将在您的终端中不加修改地运行。
在 perl 中
我从来没有编写过 Perl,但是由于您要求提供 Perl 版本,我使用 Google 和 Perl 解释器在几分钟内就完成了这个……
my $rsync = 'rsync -a /mydir myuser@remotehost:/other_dir';
while ( system($rsync) == -1 ) {
sleep 180;
}
另存为sync.pl
并运行perl sync.pl
。当然,将目录和主机名替换为真实值。