Что именно сделает --delete-исключение для rsync?

32

Я с большим удовольствием использую rsync для резервного копирования своих серверов, хотя у меня есть вопрос о --delete-excludedпараметре.

/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded     --rsh=/usr/bin/ssh root@server01:/etc /.snapshot/hourly.0/server01

От man rsync:

 --delete-excluded       also delete excluded files from dest dirs

Для меня, не являющегося носителем английского языка, это означает, что rsync удалит исключенные каталоги из фактического каталога назначения на удаленном сервере, поэтому, если у меня есть /home/backupи /home/settingsв моих папках exclude, эти папки будут фактически удалены с удаленного сервера .

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

Для меня жизненно важно, чтобы rsync выполнял свою работу только в одностороннем порядке, поскольку люди говорят, что она предназначена для работы. Я не хочу рисковать, имея программное обеспечение, которое удаляет файлы / каталоги на удаленном сервере.

Ujjain
источник

Ответы:

37

Ваша интерпретация верна. Если вы исключили файлы или каталоги для передачи, --delete-exclusive удалит их со стороны назначения (это не обязательно должен быть «удаленный сервер», вы можете использовать его rsyncдля копирования с сервера на локальный компьютер), если он находит их там. Например, если вы используете --exclude=*.o --delete-excluded, то, если rsync найдет какие-либо файлы, оканчивающиеся на .o на стороне назначения, он удалит их независимо от того, существуют они в исходном каталоге или нет.

DerfK
источник
1
Таким образом, он удалит каталоги / файлы из /.snapshot/hourly.0/server01, а не с удаленного сервера?
ujjain
3
@chronoz Если вы копируете с удаленного сервера на локальный компьютер, то местом назначения является локальный компьютер. Если вы копируете с локального компьютера на удаленный сервер, то местом назначения является удаленный сервер. Это то, что здесь важно. Если местом назначения является удаленный сервер, он удалит файлы с удаленного сервера.
DerfK
Подтверждение здесь: comentum.com/rsync.html
SDsolar
1
Недавно я обнаружил, что «--delete-exclusive» полностью эквивалентен «--delete --delete-exclude». В приведенном выше примере ответа удаленные файлы, отсутствующие на стороне источника, также будут удалены.
Уэйн