Я должен передать 2-3 ГБ с помощью Rsync.Все работает нормально, но моя сеть иногда отключалась, и весь процесс зависал. Я хочу повторить попытку для сети каждые 3 минуты, и однажды, если сеть вернулась, копирование должно продолжаться. Я планирую написать это на языке Perl.
1 ответ
Я не понимаю, почему это должно иметь какое-либо отношение к Perl. Я имею в виду, что вы просто хотите продолжить запуск rsync - приложения командной строки - если это не удастся. Разве этого не достаточно?
while ! rsync -a /mydir myuser@remotehost:/other_dir; do
sleep 180;
done
объяснение
Это будет пытаться выполнить команду rsync
до ее успешного завершения (с кодом выхода 0). На каждой итерации он будет ждать 180 секунд, прежде чем продолжить. Это все bash-скрипт, кстати, и он будет работать без изменений в вашем терминале.
В перл
Я никогда не писал Perl, но с тех пор, как вы запросили версию Perl, я за несколько минут взломал ее, используя Google и интерпретатор Perl ...
my $rsync = 'rsync -a /mydir myuser@remotehost:/other_dir';
while ( system($rsync) == -1 ) {
sleep 180;
}
Сохраните как sync.pl
и запустите с помощью perl sync.pl
Конечно, замените каталог и имена хостов на реальные значения.