23

У меня есть команда rsync в приложении, которое копирует содержимое папки на другую машину. У меня есть опция --remove-source-files потому что меня интересуют только файлы на целевом компьютере после завершения rsync.

Тем не менее, мне было интересно, как rsync ведет себя, если он падает или прерывается при передаче файлов?

Предположим, у меня есть два файла для синхронизации, a и b . Будет ли rsync скопировать a , затем удалить его из источника и начать копирование b , или он будет ждать, пока оба a и b будут скопированы на конечный компьютер, прежде чем удалять их обоих? Я видел, что вы можете настроить это поведение при удалении посторонних файлов с некоторыми флагами, но не нашел ничего об удалении исходных файлов.

2 ответа2

16

Проверка кода rsync показывает, что исходные файлы удаляются по мере их отправки, хотя это может произойти не сразу. rsync мультиплексирует свои операции, поэтому сообщение о том, что файл был успешно получен (и, следовательно, может быть удален), может быть помещено в буфер за другими данными.

4

Я попробовал это (и вы могли бы легко сделать это, чтобы быть уверенным). Они удаляются после успешной передачи всех файлов. Если передача прервана или возникла другая ошибка, исходные файлы не удаляются, даже если некоторые из них были переданы в порядке.

РЕДАКТИРОВАТЬ: в соответствии с ответом Кайла Джонса, дело может отличаться, когда участвует много файлов.

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