我很高兴使用快照使用 CentOS 和 ZFSonLinux 以类似于网站上描述的脚本方式进行备份,但遇到了问题。不幸的是,几天前备份没有运行,现在我陷入了一种奇怪的境地。我的备份 ZFS 服务器上有一系列来自主 ZFS 服务器的增量备份,主服务器上有一些较新的快照。不幸的是,由于主服务器上的备份丢失和旧快照的自动销毁,两个系统之间不再有共同的快照来执行增量发送。即在备份上有:
backuppool/x@snap2
backuppool/x@snap3
backuppool/x@snap4
在主 zfs 服务器上有:
mainpool/x@snap6
mainpool/x@snap7
mainpool/x@snap8
有什么方法可以让它们再次同步,还是我必须销毁备份上的所有内容并执行完整备份(没有足够的空间进行两次完整备份)?我尝试从主服务器指定一个引用远程备份服务器上的 snap4 名称的发送,但由于主服务器没有 snap 4,因此无法计算增量。我也尝试将 snap4 从备份发送到主服务器,但似乎唯一的方法是将其作为完整发送(空间不足),并且我需要清除现有快照。如果快照不匹配,删除所有备份历史记录似乎非常不方便,在这种情况下有什么解决方案吗?
答案1
由于您的设置中没有通用基线快照,因此您将无法zfs send
再执行增量。您需要销毁数据集backuppool
:
zfs destroy -r backuppool/x
并将最新的快照重新发送到备份池
zfs send mainpool/x@6 | [transfer magic] | zfs recv backuppool/x
如果快照不匹配,删除所有备份历史记录似乎非常不方便,在这种情况下有什么解决方案吗?
“解决方案”很简单,除非已验证这些快照已成功传输(即显示在远程输出中zfs list -tall
),否则不要删除源快照。我不知道 zfsnap 是否会支持这一点,但即使不支持,您也可以使用 shell 脚本执行此类检查,然后再让 zfsnap 删除任何内容。