Достаточно ли безопасно использовать rsync (без параметра --delete) для ежедневного резервного копирования и хранения только одной копии на сервере резервного копирования (вместо нескольких копий с ротацией)?
Если я не включу параметр --delete, ни один файл резервной копии не будет удален, верно?
Спасибо
Если вы не включите --delete, файлы не удаляются да. Хотя файл мог быть усечен до 0 байтов, если это было в источнике.
Также проверьте параметр --backup, чтобы узнать, подходит ли он для вашей работы.
Как вы собираетесь предотвратить повреждение данных от простого копирования и уничтожения вашей единственной резервной копии, или вы их куда-то архивируете?
В зависимости от того, как выглядит источник и как он изменяется, вы можете со временем накопить таким образом много ненужных и старых данных, если никогда не удалите его.
Взгляни на rsnapshot. Он выполняет rsync для измененных файлов, но создает жесткую ссылку для файлов, не измененных с момента последней ротации. Его почти так же просто использовать, как и raw rsync, но вы можете сэкономить место, о котором беспокоитесь.
(это началось как комментарий к OnoeOfOne ответ, но затянулось ...)
Я использую rsync
+cp -al
метод, аналогичный показанному в http://www.mikerubel.org/computers/rsync_snapshots/ (эта страница была моим первоначальным листом для шпаргалки в 2005 году, и с тех пор я не очень сильно менял) как для моих личных резервных копий, так и для управления резервными копиями онлайн + на месте и онлайн + на работе.
Сколько места это займет, зависит от баланса размеров и от того, как часто файлы меняются и удаляются. Для нас хранение ежедневных снимков в течение более года таким образом не занимает много места, чем три полные копии данных, поскольку большинство наших файлов в общих сетевых папках не изменяются и не удаляются часто. Фактически для многих снимков структура каталогов занимает больше места, чем данные в измененных файлах.
Следует опасаться того, что, поскольку каждая копия одной и той же версии файла на самом деле представляет собой одни и те же данные, повреждение на диске может уничтожить файл во всех ваших снимках одним махом, поэтому все еще есть основания для сохранения несколько копий. Мы смягчаем это, имея несколько копий на разных машинах, и все машины используют RAID1 для защиты от определенных возможных физических проблем. Другой способ решить эту проблему, если у вас есть только одно онлайн-хранилище резервных копий, - это фактически хранить две копии и синхронизировать их по отдельности или просто периодически выполнять полное обновление (например, раз в месяц или раз в неделю), чтобы в итоге вы получали группы снимков : т.е. для ежемесячного принудительного обновления - все идентичные файлы в снимках состояния за январь являются одним и тем же блоком данных, как и в феврале, но есть как минимум две копии фактических данных, если они существовали в обоих месяцах.
Лично я использую rsync с использованием жестких ссылок и хранением 5 копий. Хитрость в том, что если файл не изменится, он не займет лишнего места, и это очень упрощает восстановление, если что-то взорвется.
#!/bin/sh
BACKUP_DIR=/mnt/data-3/backups/
cd ${BACKUP_DIR}
#remove the oldest backup
rm -rf backup.4 backup.4.log.bz2 &>/dev/null
recycle() {
i=$1; y=$(($i+1))
b=${2-backup}
mv "${b}.$i" "${b}.$y" &>/dev/null
mv "${b}.$i.log.bz2" "${b}.$y.log.bz2" &>/dev/null
}
recycle 3
recycle 2
recycle 1
recycle 0
OPTS="--numeric-ids --delete --delete-after --delete-excluded"
DIRS_TO_BACKUP="/home /var"
nice -n20 ionice -c2 -n2 rsync -axlHh -v --link-dest=../backup.1 ${OPTS} ${DIRS_TO_BACKUP} backup.0/ --exclude-from=/root/.rsync-exclude 2>&1 | bzip2 -9 > backup.0.log.bz2
мой /root/.rsync-exclude:
*~
*.cmd*
*.log
cache4
/tmp/
.ccache
.thumbnails/
lost+found
/var/log/
/var/run/
/var/lock/
/var/tmp/
/usr/src/