使用 rsync(不带 --delete 选项)进行每日备份并在备份服务器上仅保留 1 个副本(而不是轮换保留多个副本)是否合理安全?
如果我不启用 --delete 选项,任何备份文件都不会被删除,对吗?
谢谢
答案1
(这开始于对OnoeOfOne 的回答,但时间太长了……)
我使用rsync
类似于cp -al
在http://www.mikerubel.org/computers/rsync_snapshots/(该页面是我在 2005 年某个时候的原始小抄,从那时起我就没有进行过太多修改)既用于我的个人备份,也用于管理工作中的在线+现场和在线+办公室备份。
这需要多少空间取决于大小平衡以及文件更改和删除的频率。对我们来说,以这种方式保存一年以上的每日快照所占用的空间不会比三份完整的数据副本多多少,因为我们在一般网络共享上的大多数文件都不会经常被修改或删除。事实上,对于许多快照来说,目录结构所占用的空间比更改文件中的数据还要多。
需要注意的一点是,由于同一版本文件的每个副本实际上都是相同的数据,磁盘损坏可能会一下子毁掉所有快照中的文件,因此仍然需要保留多个副本。我们通过在不同的机器上保留多个副本以及使用 RAID1 的所有机器来防止某些可能的物理问题,从而缓解这种情况。如果您只有一个在线备份位置,解决此问题的另一种方法是实际保留两个副本并分别同步它们,或者只是偶尔强制进行完全刷新(例如,每月一次或每周一次),这样您就会得到快照组:例如,对于每月强制刷新,1 月份快照中的所有相同文件都是相同的数据块,2 月份也是如此,但如果实际数据在两个月都存在,则至少有两个副本。
答案2
如果不启用 --delete,则不会删除文件。尽管如果源文件是 0 字节,则文件可能会被截断为 0 字节。
还要检查--backup选项,看看它是否适合您正在做的事情。
您如何防止数据损坏,因为数据只是被复制并毁坏了您唯一的备份副本,或者您是否将它们存档在某处?
根据来源的样子和它的变化方式,如果您不删除它,随着时间的推移,您可能会积累大量的垃圾和旧数据。
答案3
看一眼快照。它对已修改的文件执行 rsync,但为自上次轮换以来未修改的文件创建硬链接。它几乎和原始 rsync 一样简单易用,但您可以节省您担心的空间。
答案4
我个人使用的是使用硬链接的 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-排除:
*~
*.cmd*
*.log
cache4
/tmp/
.ccache
.thumbnails/
lost+found
/var/log/
/var/run/
/var/lock/
/var/tmp/
/usr/src/