内核级直通方法来更改文件哈希值

内核级直通方法来更改文件哈希值

我正在寻找任何内核级的直通机制,它将通过加密文件内容或附加数据来更改文件哈希值。最明显的解决方案是加密,但我找不到任何合适的加密方法(例如完全内核、没有 ecryptfs、没有 FUSE 驱动等)。

具体来说,我有大量文件,/foo我希望以/foobar任何方式混淆文件的原始 MD5,没有复制原始数据。我并不担心文件是否/foobar会因添加而变得无用——我很乐意向每个文件附加一些随机字节,并让其破坏许多文件格式,但我不知道如何使用某种绑定挂载来做到这一点

答案1

如果您正在寻找自定义文件系统覆盖,FUSE 是正确的方向。有各种使用 FUSE 编写的自定义文件系统(sshfs、ntfs-3g、wikipediafs……),包括简单的覆盖,例如绑定文件系统

我们可以获取 bindfs 源代码并对其进行修改,比如,在处理读取操作时将第一个字节与一些随机数据进行异或。

对于纯内核选项,您可以以类似的方式修改overlayfs或驱动程序。unionfs

另一种选择是使用 Samba,编写一个 Samba vfs 模块来破坏文件,共享源目录,然后使用 Linux 驱动程序将其安装在同一台机器上。(使用驱动程序和守护程序,或使用驱动程序和某些 NFS 服务器守护程序cifs也可以实现相同的效果。)9pu9fsnfs


如果您不关心内容,请创建具有所需大小的稀疏文件;它们根本不占用任何空间:

$ truncate -s 1G largefile
$ du -h --apparent largefile
1G  largefile
$ du -h largefile
0   largefile

像这样循环一棵树:

cd /foo
find -type d | while read -r file; do
    mkdir -p "/foobar/$file"
done
find -type f | while read -r file; do
    truncate -r "$file" "/foobar/$file"
done

相关内容