Как сделать rsync удалять файлы, которые были удалены из исходной папки?

104

Недавно я установил машину с сервером Ubuntu для размещения игровых серверов. Я установил резервный плагин для каждого игрового сервера, который создает частые резервные копии файлов мира игр в определенной папке на машине. Я также создал задачу cron , чтобы автоматически копировать эти резервные копии в мою папку Dropbox каждую ночь, используя rsync с опцией -a .

Через несколько месяцев моя учетная запись Dropbox достигла предела для хранения, и я понял, что не смогу хранить столько резервных копий, поэтому я настроил плагин для резервного копирования игрового сервера, чтобы не сохранить столько резервных копий, а затем подождал несколько дней, чтобы увидеть если он удалит старые резервные копии, как это запланировано делать еженедельно. Плагин резервного копирования в конечном итоге выполнил свою работу и удалил старые резервные копии, поэтому я ожидал, что задача rsync cron впоследствии удалит старые резервные копии из моей папки Dropbox, чтобы соответствовать исходной папке, но она этого не сделала. Поэтому у меня есть несколько вопросов:

  • По умолчанию используется только rsync только добавить файлы в папку назначения которые были добавлены в исходную папку и изменить файлы, которые были изменены в исходной папке, но НЕ удалять файлы которые были удалены из исходной папки?

  • Если это так, то каков наилучший способ сделать rsync сделать это? я хотите, чтобы папка назначения идеально отражала исходную папку, и это означает удаление любых файлов, которые были удалены из источника папку.

Я вижу некоторые параметры, перечисленные на странице руководства для rsync , которые могут сделать трюк, но так как я не знаком.

    
задан user254251 03.06.2014 в 05:53
источник

3 ответа

114

Чтобы удалить файлы в цель, добавьте параметр --delete в свою команду. Например:

rsync -avh source/ dest/ --delete
    
ответ дан GarethD 26.08.2015 в 09:14
источник
29

Команда rsync не удаляет любой файл, пока вы используете некоторые из его опций delete в этой команде. Поэтому, если какой-либо файл или папка добавлены в исходный код, он будет синхронизироваться с целью без каких-либо удаления.

Я предлагаю вам использовать rsync для создания резервной копии из исходных файлов и использовать find ... rm для файлов удаления за период времени или размер файлов:

rsync [options] SOURCE TARGET
find TARGET -maxdepth 1 -type f -mtime +60 -exec rm -f {} \;

Вышеупомянутый блок кода, сделайте резервную копию из источника, а затем удалите все файлы, для которых последнее изменение было более двух месяцев.

UPDATE

Как я обнаружил, что опции delete предназначены только для TARGET, если некоторые файлы удаляются из источника, rsync --delete удаляет их из TARGET. И параметр delete на after и before , как указано на его странице руководства:

--delete-before         receiver deletes before transfer, not during

Означает, что:

  1. rsync удалите файл из TARGET, который удален из SOURCE.
  2. rsync запускает синхронизацию файлов.

--delete-after receiver deletes after transfer, not during

Означает, что:

  1. rsync запускает синхронизацию файлов.
  2. rsync удалите файл из TARGET, который удаляется из SOURCE после синхронизации.

ПРИМЕЧАНИЕ : реализация --delete-{before/after} выполняется только в TARGET.

    
ответ дан shgnInc 03.06.2014 в 06:13
источник
5

Эта команда будет копировать данные инкремента и синхронизировать их с удаленным сервером.

  1. Он будет копировать только инкрементные данные.
  2. Он удалит, если удалены данные из источника.
  3. Он будет копировать снова из источника, если любые данные удалены в пункте назначения.
  4. В основном эта команда будет поддерживать синхронизацию обеих сторон.

rsync -avWe ssh --delete-before (source) root@localhost:(destination) rsync -avW --delete-before -e ssh (source) root@localhost:(destination)

Пример:

rsync -avWe ssh --delete-before /data root@192.168.254.254:/backup
rsync -avW --delete-before -e ssh /data root@192.168.254.254:/backup
    
ответ дан Ganesh Ghube 29.07.2015 в 14:12
источник

Ознакомьтесь с другими вопросами по меткам