zfs list -t snaphost用于标识池是否已更改

时间:2017-12-01 02:15:20

标签: snapshot zfs

我使用zfs list -t snapshot来确定池是否已更改。如果最后一个快照显示它使用了一些空间,那么我确信池已更改,而我(实际上是一个脚本)执行了另一个快照。

我注意到如果我将文件从1个文件夹移动到池中的另一个文件夹而不是命令zfs list -t snapshot仍然返回0作为上一个快照的大小。这对我不利,因为我需要确定我的游泳池是否已更改。我做错了什么?是否还有其他更可靠的方法来确定池是否实际更改了?

1 个答案:

答案 0 :(得分:3)

快照显示文件系统如何查看过去的特定点(包括其大小)。如果之后删除或修改文件,那么不同的块(意味着现在删除或修改的块)将保留在文件系统上(将它们视为已锁定;或类似于Unix上的硬链接工作方式,只要存在对文件的引用,它不会被删除)。

相反,如果您只是添加一个新文件,旧块保持不变,因此快照的大小不会有所不同。在同一文件系统中移动文件夹不会添加新数据,因此不会显示大小。

要查看差异,您可以使用zfs diff pool/dataset@snapshot pool/dataset将当前状态与上一个快照进行比较。有关在脚本中使用输出的详细信息,请参阅my other answer here