btrfs ioctl:从用户空间获取文件校验和
btrfs ioctl: get file checksums from userspace
我想获得与特定文件相关的 BTRFS 校验和,但不幸的是我没有找到合适的 ioctl 来执行此操作。有可能吗?如果是这样,该怎么做?在类似于 rsync 行为的情况下,我需要存储校验和来尝试减少 CPU 负载。
刚刚将这段乱七八糟的代码推送到我的 github 存储库中。 https://github.com/Lakshmipathi/btrfs-progs/tree/dump_csum
它不是官方代码。我测试了大小在 100K 到 50GB 之间的文件。他们似乎很相配。
用法:
./btrfs-debug-tree -f /path/to/file /btrfs/partition
将在目标位置创建 csumdump 文件。
示例:
sudo ./btrfs-debug-tree -f /btrfs/50gbfile1 /dev/sda4
将创建一个名为“/btrfs/50gbfile1.csumdump”的输出文件,其中包含文件块的 csum。
注意:我是出于 educational/learning 的目的而尝试这个,所以它附带了所有常见的免责声明。计划在本周某个时候清理此代码。
如果您打算使用,我建议您使用以下情况进行测试:
1) Create 20GB (or any file with size > 1KB) on /tmp/
2) mount your btrfs partition on /btrfs and copy file /tmp/file /btrfs/f1
3) Now dump the csum it will produce /btrfs/f1.csumdump
4) cp /tmp/file /btrfs/f2 and dump f2's csum.
5) Now compare f1.csumdump with f2.csumdump If they match, it seems to be
working. If they didn't match something went wrong.
时隔近5年更新!
我想获得与特定文件相关的 BTRFS 校验和,但不幸的是我没有找到合适的 ioctl 来执行此操作。有可能吗?如果是这样,该怎么做?在类似于 rsync 行为的情况下,我需要存储校验和来尝试减少 CPU 负载。
刚刚将这段乱七八糟的代码推送到我的 github 存储库中。 https://github.com/Lakshmipathi/btrfs-progs/tree/dump_csum 它不是官方代码。我测试了大小在 100K 到 50GB 之间的文件。他们似乎很相配。
用法:
./btrfs-debug-tree -f /path/to/file /btrfs/partition
将在目标位置创建 csumdump 文件。
示例:
sudo ./btrfs-debug-tree -f /btrfs/50gbfile1 /dev/sda4
将创建一个名为“/btrfs/50gbfile1.csumdump”的输出文件,其中包含文件块的 csum。
注意:我是出于 educational/learning 的目的而尝试这个,所以它附带了所有常见的免责声明。计划在本周某个时候清理此代码。
如果您打算使用,我建议您使用以下情况进行测试:
1) Create 20GB (or any file with size > 1KB) on /tmp/
2) mount your btrfs partition on /btrfs and copy file /tmp/file /btrfs/f1
3) Now dump the csum it will produce /btrfs/f1.csumdump
4) cp /tmp/file /btrfs/f2 and dump f2's csum.
5) Now compare f1.csumdump with f2.csumdump If they match, it seems to be
working. If they didn't match something went wrong.