Я пытаюсь синхронизировать файлы с удаленного сервера, который не является надежным, что означает, что соединение обычно обрывается "случайно" с
rsync: соединение неожиданно закрыто
Rsync вызывается с --partial, поэтому я хотел бы иметь возможность вызывать rsync в цикле до полной передачи файлов. Похоже, нет флага, который бы сказал rsync повторить попытку.
Каков был бы лучший способ написать это? Баш за петлю?
Ответы:
Если вы синхронизируете все за одну синхронизацию, вызывайте rsync в цикле, пока rsync не выдаст вам успешный код возврата.
Что-то типа:
Это зациклится, вызывая rsync, пока не получит код возврата 0. Возможно, вы захотите добавить туда спящий режим, чтобы избежать DOSing вашего сервера.
источник
RC=12; while [[ $RC -eq 12 || $RC -eq 30 ]]
(или любых других состояний выхода, которые вы видите из-за сбоя сети).Я столкнулся с этой же проблемой некоторое время назад. В конце я написал что-то похожее на ответ Дэвида, но немного обдумал его с помощью максимальных попыток, отвечая на Ctrl-C, и так далее: http://blog.iangreenleaf.com/2009/03/rsync-and-retry- пока-мы-получить-это.html .
источник
все это вместе с sshpass
источник