Я использую rsync
следующим образом:
rsync -a --backup --suffix = "." $ (Дата + "% Y% m% d% H% M") резервные копии источников
blockquote>для выгрузки всей папки source в папку резервных копий , с дополнительной функцией, которая, если я изменяю некоторый файл foo в source , старая версия foo в резервных копиях будет переименована с суффиксом даты перед копированием нового foo в резервных копий .
Эта простая процедура делает всю работу за меня, только я хотел бы, чтобы удаленный файл был переименован в с суффиксом даты, а не удален из резервных копий ]. То есть, если foo удалено из источника, то переименуйте foo в резервных копий с суффиксом даты.
1117 Я пытался добиться этого, но пока безуспешно. Есть идеи?
Для инкрементного резервного копирования 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
Добавление опции --backup-dir
должно делать то, что вы ищете:
- backup-dir = DIR В сочетании с опцией --backup это говорит rsync о необходимости хранить все резервные копии в указанном каталоге на принимающей стороне. Это может быть использовано для инкрементных резервных копий. Вы можете дополнительно указать суффикс резервной копии, используя параметр --suffix (в противном случае файлы, сохраненные в указанном каталоге, сохранят свои исходные имена файлов).
blockquote>, например,
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
Добавьте параметр - удалить
в свою команду 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 цифрами, которые являются форматом суффикса даты. Этот суффикс немного неоднозначен, поэтому я бы предложил использовать какой-либо другой формат с некоторыми специальными символами или уникальной строкой в суффиксе, чтобы обычные файлы не были приняты за файлы резервных копий.