我一直很高兴地使用
zfsnap与CentOS和ZFSonLinux以类似于在网站上描述的方式编写脚本,但遇到了一个问题.
不幸的是,几天前备份没有运行,现在我陷入了困境.我的主ZFS服务器上的备份ZFS服务器上有一系列增量备份,主服务器上有一些较新的快照.不幸的是,由于在主服务器上丢失了备份和自动销毁旧快照,因此两个系统之间不再存在执行增量发送的公共快照.
即在备份时有:
不幸的是,几天前备份没有运行,现在我陷入了困境.我的主ZFS服务器上的备份ZFS服务器上有一系列增量备份,主服务器上有一些较新的快照.不幸的是,由于在主服务器上丢失了备份和自动销毁旧快照,因此两个系统之间不再存在执行增量发送的公共快照.
即在备份时有:
backuppool/x@snap2 backuppool/x@snap3 backuppool/x@snap4
并在主zfs服务器上有:
mainpool/x@snap6 mainpool/x@snap7 mainpool/x@snap8
有没有办法让它们再次同步,或者我是否必须销毁备份中的所有内容并执行完整备份(没有足够的空间进行两次完整备份)?
我尝试从主服务器指定远程备份服务器上引用snap4名称的send,但由于主服务器没有snap 4,因此无法计算增量.我还尝试将snap4从备份发送到主服务器,但似乎唯一的方法是将其作为完整发送(没有足够的空间),我需要消除现有的快照.
如果快照不匹配,删除所有备份历史记录似乎非常不方便,在这种情况下是否有任何解决方案?
解决方法
由于您的设置中没有共同的基线快照,因此您将无法再执行增量zfs发送.您需要在backuppool中销毁数据集:
zfs destroy -r backuppool/x
并将最新的快照重新发送到backuppool
zfs send mainpool/x@6 | [transfer magic] | zfs recv backuppool/x
The deleting of all your backup history if you get snapshots mismatched seems pretty inconvenient,is there any solution in this scenario?
“解决方案”只是不删除源快照,除非已经验证这些快照已成功传输(即显示在远程的zfs list -tall输出中).我不知道zfsnap是否会支持你,但即使它不支持,你可以使用shell脚本执行这种检查,然后让zfsnap删除任何东西.