私は、パススルーで、ファイルの内容を暗号化するか、データを追加することでファイル ハッシュを変更するカーネル レベルのメカニズムを探しています。最も明白な解決策は暗号化ですが、適切な (たとえば、完全にカーネルのみ、ecryptfs なし、FUSE 対応なしなど) 暗号化方法が見つかりません。
具体的には、ファイルの元のMD5を難読化する方法で/foo
表示したいファイルが多数あります。/foobar
それなし生のデータを複製します。追加によってファイルが/foobar
役に立たなくなるかどうかは気にしていません。各ファイルにランダムなバイトをいくつか追加して、多くのファイル形式を壊してもかまいませんが、何らかのバインドマウントでこれを行う方法がわかりません。
答え1
カスタムファイルシステムオーバーレイを探しているなら、FUSEが正しい選択です。FUSEを使用して書かれたカスタムファイルシステムは様々あります(sshfs、ntfs-3g、wikipediafsなど)。その中には次のようなシンプルなオーバーレイもあります。バインド。
bindfs のソース コードを取得して、読み取り操作を処理するたびに最初のバイトとランダム データとの XOR 演算を実行するように変更することができます。
純粋なカーネル オプションの場合、同様の方法でoverlayfs
またはドライバーを変更できます。unionfs
別の方法としては、Samba を使用し、ファイルを破損する Samba vfs モジュールを作成し、ソース ディレクトリを共有し、Linux ドライバーを使用して同じマシンにマウントする方法があります。(ドライバーとデーモン、またはドライバーと何らかの NFS サーバー デーモンをcifs
使用しても同じことが可能です。)9p
u9fs
nfs
内容を気にしない場合は、必要なサイズのスパース ファイルを作成します。スパース ファイルはまったくスペースを占有しません。
$ 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