Я должен передать 2-3 ГБ с помощью Rsync.Все работает нормально, но моя сеть иногда отключалась, и весь процесс зависал. Я хочу повторить попытку для сети каждые 3 минуты, и однажды, если сеть вернулась, копирование должно продолжаться. Я планирую написать это на языке Perl.

1 ответ1

0

Я не понимаю, почему это должно иметь какое-либо отношение к 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 Конечно, замените каталог и имена хостов на реальные значения.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .