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 promote
和 zfs 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
我有以下 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 promote
和 zfs 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