如果在 Rsync 中复制时网络断开连接,如何使用 perl 脚本等待 3 分钟而不会失败?

如果在 Rsync 中复制时网络断开连接,如何使用 perl 脚本等待 3 分钟而不会失败?

我必须使用 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。当然,将目录和主机名替换为真实值。

相关内容