如何在 BTRFS 文件系统上以读写和只写方式列出打开的文件?
How to list open files in read-write and write-only on a BTRFS filesystem?
我正在编写 bash 备份脚本,它会在已安装的卷(即 /mnt/btrfs/subvolume)上创建 BTRFS 子卷快照。
像往常一样,我会使用 "lsof /mnt/btrfs/subvolume" 并将其输出通过管道传输到 "awk 'NR==1 || ~/[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 上工作,并且不会 return 打开文件进行写入。我最好的猜测是 BTRFS 子卷使用 "Copy on Write",因此 kernel/lsof 以某种方式被愚弄并且没有显示这些更改。
有谁知道,我如何检查已安装的 BTRFS 子卷下是否有任何文件 changed/written?
此致
我通过省略 lsof 的所有参数并直接搜索 BTRFS 挂载点并最终应用写入过滤器来解决这个问题,所以它变成了:
lsof | grep /some/BTRFS_mount_point | awk '~/[0-9][uw]/'
我正在使用 Debian 10 进行测试,出于某种原因,lsof /some/BTRFS_mount_point 永远不会 return 写入,这在类似的挂载 ext4 卷上运行良好。
我正在编写 bash 备份脚本,它会在已安装的卷(即 /mnt/btrfs/subvolume)上创建 BTRFS 子卷快照。 像往常一样,我会使用 "lsof /mnt/btrfs/subvolume" 并将其输出通过管道传输到 "awk 'NR==1 || ~/[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 上工作,并且不会 return 打开文件进行写入。我最好的猜测是 BTRFS 子卷使用 "Copy on Write",因此 kernel/lsof 以某种方式被愚弄并且没有显示这些更改。 有谁知道,我如何检查已安装的 BTRFS 子卷下是否有任何文件 changed/written?
此致
我通过省略 lsof 的所有参数并直接搜索 BTRFS 挂载点并最终应用写入过滤器来解决这个问题,所以它变成了:
lsof | grep /some/BTRFS_mount_point | awk '~/[0-9][uw]/'
我正在使用 Debian 10 进行测试,出于某种原因,lsof /some/BTRFS_mount_point 永远不会 return 写入,这在类似的挂载 ext4 卷上运行良好。