rsync --remove-source-files удаляет исходные файлы один за другим или после завершения rsync?

23

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

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

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

brafales
источник
похоже на stackoverflow.com/questions/7380234/… хотя я думаю, что Кайл может быть прав - иногда кажется, что rsync ожидает завершения всех файлов, но иногда он удаляет файлы до завершения. Все еще немного смущен, хотя.
Chris2048

Ответы:

16

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

Кайл Джонс
источник
2
Согласно моему ответу ниже, я попробовал это с парой файлов, и файлы были удалены, только если полная операция прошла успешно. Это заставляет меня думать, что найденный вами сигнал «OK для передачи» проникает только тогда, когда вся операция прошла успешно.
Даниэль Андерссон
5
Если вы попробуете это с более чем несколькими файлами, вы увидите, что исходные файлы исчезают до того, как будет завершена вся передача.
Кайл Джонс
похоже, что при указании каталогов и рекурсивной опции файлы в a не удаляются сразу
Andre Holzner
4

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

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

Даниэль Андерссон
источник