假设我有一个包含100个快照的数据集,并且想要rm -rf
所有快照中所有名为“ cache”的文件夹。
我实际上想释放空间,而不仅仅是将其隐藏在快照层中,因此进行克隆并从中删除然后再拍摄新快照似乎并不能满足我的要求。
有任何半自动的方式吗?在zfs列表周围有一些包装-t快照,zfs克隆,zfs升级,zfs快照吗?
(来自/superuser/313197的交叉发布,因为我看到它包含更多的ZFS内容)
假设我有一个包含100个快照的数据集,并且想要rm -rf
所有快照中所有名为“ cache”的文件夹。
我实际上想释放空间,而不仅仅是将其隐藏在快照层中,因此进行克隆并从中删除然后再拍摄新快照似乎并不能满足我的要求。
有任何半自动的方式吗?在zfs列表周围有一些包装-t快照,zfs克隆,zfs升级,zfs快照吗?
(来自/superuser/313197的交叉发布,因为我看到它包含更多的ZFS内容)
Answers:
快照是只读的。如果您需要删除这些文件夹,则必须删除整个快照。
您可以进行备份(使用类似tar的备份),将不受欢迎的文件夹排除在外,然后删除快照。显然,备份现在是tar或其他格式。但至少您还有备份副本。
您可以尝试以下操作:
fsnew
)。fsnew
升级克隆(),以允许您破坏文件系统所基于的快照。fsnew
。现在,在foreach快照之后,从快照到fsnew rsync
的--inplace
标志会跳过不需要的文件。该--inplace
标志减少了写入次数,并允许使用较小的快照。
fsnew
。完成此操作后,您应该具有一个快照fsnew
,该快照与原始文件系统中的快照(已删除有问题的文件)相对应。
如果驱动器上有空间,则可能要跳过“ destroy”命令,直到脚本正常工作为止。
--delete
选项传递给rsync
,否则您将丢失快照之间发生的删除。否则,这是一个好主意。
- 销毁原始快照。
升级操作后,您将无法销毁原始快照。只有这样才能销毁父数据集。
示例(升级克隆后)。
zfs destroy media1/cheers/backup-auto-20190530.2105-2y-clone@auto-20190530.2105-2y
无法销毁'media1/cheers/backup-auto-20190530.2105-2y-clone@auto-20190530.2105-2y':快照具有相关克隆
使用'-R'破坏以下数据集:
media1/media/backup@auto-20190531.1622-2y
媒体1 /媒体/备份
ZFS销毁media1/media/backup@auto-20190531.1622-2y
zfs destroy media1/cheers/backup-auto-20190530.2105-2y-clone@auto-20190530.2105-2y
无法销毁'media1/cheers/backup-auto-20190530.2105-2y-clone@auto-20190530.2105-2y':快照具有相关克隆
使用'-R'破坏以下数据集:
媒体1 /媒体/备份
完成“有趣”的操作后,我必须进行下一个操作
zfs快照media1 / media / backup @ 1
zfs发送media1 / media / backup @ 1 | pv | zfs接收media1 / media / backupnew
zfs销毁media1 / media / backup @ 1
zfs destroy -R media1 / media / backup
zfs重命名media1 / media / backupnew media1 / media / backup
或反转提升一个。zfs升级media1 / media / backup,然后删除克隆副本,因为您在src位置会有一个大快照))
只有rsync / backup可以在这里提供帮助。