从 ZFS 快照中恢复已删除的文件(仍然可以通过 lsof 查看)

Gre*_*SAT 6 zfs

我在 Linux Debian 上有一个 ZFS 卷。
每天晚上在此卷上拍摄快照。
不管什么原因,几天前删除了一个大文件(虚拟磁盘)。此文件仍在使用中(由kvm)。lsof显示此文件已删除。

如果我暂停该kvm过程,我可以恢复已删除的文件cp /proc/<pid>/fd/21 myfile.bak并在另一个虚拟机中使用它。但我不需要这个当前文件。

我需要这个文件的 2 天旧版本。
由于该文件在几天前被删除,因此它不在备份中。
我认为该文件存在于 ZFS 快照中,但不确定。我没有看到它/zpool/.zfs/snapshotname/path/to/file

有谁知道从 ZFS 快照中获取未真正删除的文件的方法?

小智 5

在看/zpool/.zfs/snapshot/$NAMEOFSNAPSHOT/path/to/file


use*_*391 0

每晚都会在此卷上拍摄一个快照。[...] 我需要该文件 2 天前的版本。由于该文件几天前已被删除,因此不在备份中。

每个快照都会显示指定时刻的文件系统。快照是只读的,这意味着快照中的单个文件不能被删除,只能销毁完整的快照。

如果您在 T-1、T-2、T-3 点进行夜间快照,并在 T-3 点之后删除文件本身,则您的快照 T-1 和 T-2 将不再有此文件(但其他人仍然会拥有它)。

因此,您的解决方案是从较旧的快照(在您的情况下,是实际文件尚未删除的最新快照)恢复文件,然后可以选择将其与当前版本进行比较以了解差异。当然,这仅在旧快照仍然存在的情况下才有效。