Я ищу любой механизм уровня ядра, который является сквозным и изменяет хэши файлов, либо шифруя содержимое файла, либо добавляя данные. Наиболее очевидным решением является шифрование, но я не могу найти подходящих (например, полностью только для ядра, без ecryptfs, без FUSE и т.д.) Методов шифрования.

В частности, у меня есть большое количество файлов в /foo которые я хотел бы также отображать в /foobar любым способом, который запутывает исходный MD5 файлов, не дублируя необработанные данные. Меня не волнует, будут ли файлы в /foobar бесполезными из-за дополнений - я рад добавить несколько случайных байтов к каждому файлу и позволить этому нарушить многие форматы файлов, но я не знаю, как это сделать с каким-то креплением

1 ответ1

1

Если вы ищете пользовательский оверлей файловой системы, FUSE - правильное направление. Существуют различные пользовательские файловые системы, написанные с использованием FUSE (sshfs, ntfs-3g, wikipediafs ...), включая простые оверлеи, такие как bindfs.

Можно взять исходный код bindfs и изменить его, скажем, на XOR первого байта с некоторыми случайными данными всякий раз, когда он обрабатывает операцию чтения.

Для чистого варианта ядра вы можете изменить overlayfs или unionfs аналогичным образом.

Другой вариант - взять Samba, написать модуль Samba vfs для поврежденных файлов, открыть общий доступ к исходному каталогу и смонтировать его на той же машине, используя драйвер Linux cifs . (То же самое возможно также с помощью 9p водителя и u9fs демон, или с водителем и nfs или другой сервер-демон 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .