У меня есть команда rsync в приложении, которое копирует содержимое папки на другую машину. У меня есть опция, --remove-source-files
потому что я заинтересован в том, чтобы файлы были на конечном компьютере только после завершения rsync.
Тем не менее, мне было интересно, как rsync ведет себя, если он падает или прерывается при передаче файлов?
Предположим, у меня есть два файла для синхронизации, a
и b
. Будет ли rsync скопировать a
, затем удалить его из источника и начать копирование b
, или он будет ждать обоих a
и b
скопировать их на конечный компьютер, прежде чем удалять их обоих? Я видел, что вы можете настроить это поведение при удалении посторонних файлов с некоторыми флагами, но не нашел ничего об удалении исходных файлов.
file-transfer
rsync
brafales
источник
источник
Ответы:
Проверка кода rsync показывает, что исходные файлы удаляются по мере их отправки, хотя это может произойти не сразу. rsync мультиплексирует свои операции, поэтому сообщение о том, что файл был успешно получен (и, следовательно, может быть удален), может быть помещено в буфер за другими данными.
источник
Я попробовал это (и вы могли бы легко сделать это, чтобы быть уверенным). Они удаляются после успешной передачи всех файлов. Если передача прервана или возникла другая ошибка, исходные файлы не удаляются, даже если некоторые из них были переданы в порядке.
РЕДАКТИРОВАТЬ: согласно ответу Кайла Джонса, дело может отличаться, когда много файлов.
источник