каковы различия между опциями удаления rsync?

<p>я вижу на странице справки <a href="http://www.samba.org/ftp/rsync/rsync.html">rsync</a> , что есть несколько опций <code>delete</code>, но на самом деле не понимаю различий между ними. каковы различия между этими вариантами?</p><pre><code> --del an alias for --delete-during --delete delete extraneous files from dest dirs --delete-before receiver deletes before transfer (default) --delete-during receiver deletes during xfer, not before --delete-delay find deletions during, delete after --delete-after receiver deletes after transfer, not before --delete-excluded also delete excluded files from dest dirs </code></pre>

<ul> <li> <p><code>--del/--delete\_during</code>: удаляет файлы из конечного каталога по мере их копирования (экономит память по сравнению с <code>--delete-before</code>: <code>--delete-before</code> выполняет отдельное сканирование для поиска удаляемых объектов)</p> </li> <li> <p><code>--delete</code>: удаляет файлы в целевом каталоге, если они не существуют в исходном каталоге.</p> </li> <li> <p><code>--delete-before</code>: удалить файлы в целевом каталоге перед копированием файла с тем же именем из исходного каталога</p> </li> <li> <p><code>--delete-during</code>: удалить файлы в целевом каталоге, пока копируете файл с тем же именем из исходного каталога</p> </li> <li> <p><code>--delete-delay</code>: отметка удаляется во время передачи, но подождите, пока передача не будет завершена</p> </li> <li> <p><code>--delete-after</code>: receiver удаляет после передачи, а не до ... если какая-то другая часть rsync переместила дополнительные файлы в другое место, вы захотите это вместо <code>--delete-delay</code>, потому что <code>--delete-delay</code> решает, что будет удалено в середине передачи, тогда как <code>--delete-after</code> проверяет каталог для файлов, которые должны быть удалены после того, как все закончено.</p> </li> <li> <p><code>--delete-excluded</code>: удаляет файлы из целевого каталога, которые явно исключены из передачи из исходного каталога.</p> </li> </ul><p>точка rsync не копирует, а архивирует. это важное различие. обработка удаленных/измененных файлов имеет решающее значение, и во многих случаях нюансы.</p><p>в частности, флаг <code>--delete</code> - это тот, который я видел испорченный много раз. многие люди используют rsync для перемещения файлов в хранилище с низким приоритетом, и в этом случае вы хотите, чтобы файлы, в которые вы перемещаетесь, все еще существовали в существующем каталоге. это не то, что делает удаление: <code>--delete</code> гарантирует, что когда вы удаляете файл из исходного каталога, он также удаляется из вашего каталога назначения, поэтому ваш пункт назначения не переполняется мусором ... однажды увидел, как парень стер его резервное копирование, вставив новый диск, и не отключая его ночной сценарий rsync. скрипт увидел, что исходный каталог теперь пуст, и удалил все файлы в целевом каталоге, чтобы они соответствовали.</p><p>большинство других опций связаны с пространством или производительностью. когда вы удаляете файлы, это важно, если вы хотите убедиться, что передача прошла успешно, прежде чем что-то делать, но если ваше устройство слишком мало для обработки 2 копий всей информации, вам нужно удалить ее по ходу и т.д. немного странный из-за своей длинной истории на разных платформах: были добавлены некоторые опции, чтобы люди, привыкшие к определенному поведению, не были сбиты с толку.</p>

<p>еще один момент, о котором стоит упомянуть: если ваш исходный каталог оканчивается на <code>/*</code>, то rsync будет рассматривать только<em> те </em>файлы, а не сам каталог (и, следовательно, отсутствие файлов, которые вы хотите удалить в месте назначения).</p><p>если вы указали опцию удаления выше, но rsync выглядит так, как будто она не удаляется, то убедитесь, что вы случайно не перетаскиваете и не предоставляете список файлов, когда имеете в виду сам каталог.</p>

<p>происходят две вещи:</p><ol> <li>кто делает удаление</li> <li>когда это произойдет</li> </ol><p>отправителю или получателю может быть поручено удалить (я не уверен, почему это важно). таким образом, когда rsync с одного компьютера подключается к серверу rsync с другой стороны, это определяет, кто эффективно выполняет команду удаления.</p><p>когда это происходит, довольно просто ... before означает, что все файлы удалены, и тогда rsync копирует файлы. во время просмотра списка файлов он удаляет их, когда приходит к ним, а после означает, что ожидает, пока все файлы не будут переданы, а затем удаляет удаленную сторону. это имеет значение только тогда, когда передача прерывается.</p>