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

问题描述 投票:0回答:1

我正在编写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子卷下更改/写入任何文件?

问候

snapshot lsof btrfs
1个回答
0
投票

我通过将所有参数都省略给lsof并直接grepping BTRFS挂载点并最终应用写过滤器来解决此问题,因此它变成了:]

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

我正在使用Debian 10进行测试,由于某种原因lsof / some / BTRFS_mount_point将永远不会返回写入,这在类似的已安装ext4卷上可以正常使用。

© www.soinside.com 2019 - 2024. All rights reserved.