如何在BTRFS文件系统上以读写方式列出打开的文件



我正在编写一个bash备份脚本,该脚本在已装入的卷(即/mnt/BTRFS/subvolume(上创建BTRFS子卷快照。像往常一样,我会使用"lsof/mnt/btrfs/subvolume"并将其输出管道传输到类似"awk'NR==1||$4~/[0-9][uw]/'"的文件,这样我就可以查看是否有任何更改文件。

COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
sh       5019 root    1w   REG   8,35  2088960      12 /mnt/ext4/currently_generated_archive.tar.xz

这将不会以相同的方式在BTRFS上工作,也不会返回打开的文件进行写入。我的最佳猜测是,BTRFS子卷使用"写时复制",因此kernel/lsof在某种程度上被愚弄了,没有显示这些更改。有人知道吗,我如何检查在安装的BTRFS子卷下是否有任何文件被更改/写入?

问候

我通过省略lsof的所有参数来解决这个问题,并直接为BTRFS安装点进行grepping,最后应用写过滤器,所以它变成了一种:

lsof | grep /some/BTRFS_mount_point | awk '$4~/[0-9][uw]/'

我使用Debian 10进行测试,出于某种原因,lsof/some/BTRFS_mount_point永远不会返回写操作,这在类似的ext4卷上运行良好。

最新更新