Простое инкрементное резервное копирование rsync с метками времени удаленных файлов

Я использую rsync следующим образом:

rsync -a --backup --suffix = "." $ (Дата + "% Y% m% d% H% M") резервные копии источников

для выгрузки всей папки source в папку резервных копий , с дополнительной функцией, которая, если я изменяю некоторый файл foo в source , старая версия foo в резервных копиях будет переименована с суффиксом даты перед копированием нового foo в резервных копий .

Эта простая процедура делает всю работу за меня, только я хотел бы, чтобы удаленный файл был переименован в с суффиксом даты, а не удален из резервных копий ]. То есть, если foo удалено из источника, то переименуйте foo в резервных копий с суффиксом даты.

1117 Я пытался добиться этого, но пока безуспешно. Есть идеи?

4
задан 12 August 2013 в 14:47

3 ответа

Для инкрементного резервного копирования rsync используется инструмент rsnapshot.

Пример rsnapshot.conf

snapshot_root   /backup

cmd_cp          /bin/cp

cmd_rm          /bin/rm

cmd_rsync       /usr/bin/rsync

cmd_ssh /usr/bin/ssh

cmd_logger      /usr/bin/logger

cmd_du          /usr/bin/du

cmd_rsnapshot_diff      /usr/bin/rsnapshot-diff

retain          daily   7
retain          weekly  4

verbose         2

loglevel        3

logfile /var/log/rsnapshot.log

lockfile        /var/run/rsnapshot.pid

backup  root@localhost:/etc/                   localhost/
backup  root@localhost:/home                   localhost/
backup  root@localhost:/var/www/               localhost/

Установить Cronjobs для автоматического резервного копирования:

# m     h   dom mon dow command
#Run Rsnapshot At 02:00 Everyday
00      02      *       *       *       /usr/bin/rsnapshot daily
#Run Rsnapshot At 06:00 Every Sunday 
00      06      *       *       0       /usr/bin/rsnapshot weekly
0
ответ дан 12 August 2013 в 14:47

Добавление опции --backup-dir должно делать то, что вы ищете:

- backup-dir = DIR В сочетании с опцией --backup это говорит rsync о необходимости хранить все резервные копии в указанном каталоге на принимающей стороне. Это может быть использовано для инкрементных резервных копий. Вы можете дополнительно указать суффикс резервной копии, используя параметр --suffix (в противном случае файлы, сохраненные в указанном каталоге, сохранят свои исходные имена файлов).

, например,

rsync -ab --backup-dir=versions --suffix="."$(date +"%Y%m%d%H%M") --delete /source/folder/ /destination/folder

Это создаст резервные копии ваших файлов в / destination / version

Источник: https://linux.die.net/man/1/rsync

0
ответ дан 12 August 2013 в 14:47

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

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

- -filter = 'P *. [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0- 9] [0-9] [0-9] [0-9] '

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

1
ответ дан 20 January 2020 в 09:03

Другие вопросы по тегам:

Похожие вопросы: