ZFS:回滚快照但保留较新的快照

ZFS: Rollback snapshot but keep newer snapshots

我有以下 ZFS 快照:

data/server/dev1@snap1
data/server/dev1@snap2
data/server/dev1@snap3

如果我想回滚到 snap1,我会执行以下操作:

zfs rollback data/server/dev1@snap1

但是 ZFS returns:

more recent snapshots or bookmarks exist
use '-r' to force deletion..

我知道可以简单地将文件从 /data/server/dev1/.zfs/snapshot/snap1 复制到 /data/server/dev1,但这比 zfs rollback.

花费的时间长得多

有没有办法回滚 AND 保留较新的快照 snap2 & snap3

更新 21/11/2016

看起来有办法做到这一点。我阅读了有关使用 zfs promotezfs clone 的信息,但我无法弄清楚它到底是如何工作的。

我认为您的评论非常接近您想要的。但是,您可以在克隆之前重命名文件系统,然后克隆为原始文件系统的名称。例如:

zfs rename data/server/dev1 data/server/dev2 
zfs clone data/server/dev2@snap1 data/server/dev1

在需要删除之前,您不必担心推广问题 data/server/dev2@snap1

zfs 手册页有一个更完整的示例,可能会或可能不会更具体地满足您的需求:

The following commands illustrate how to test out changes to a file system, and then replace the original file system with the changed one, using clones, clone promotion, and renaming:

     # zfs create pool/project/production
       populate /pool/project/production with data
     # zfs snapshot pool/project/production@today
     # zfs clone pool/project/production@today pool/project/beta
     make changes to /pool/project/beta and test them
     # zfs promote pool/project/beta
     # zfs rename pool/project/production pool/project/legacy
     # zfs rename pool/project/beta pool/project/production
     once the legacy version is no longer needed, it can be destroyed
     # zfs destroy pool/project/legacy