Если вы ищете пользовательский оверлей файловой системы, FUSE - правильное направление. Существуют различные пользовательские файловые системы, написанные с использованием FUSE (sshfs, ntfs-3g, wikipediafs ...), включая простые оверлеи, такие как bindfs .
Можно взять исходный код bindfs и изменить его, скажем, на XOR первого байта с некоторыми случайными данными всякий раз, когда он обрабатывает операцию чтения.
Для варианта чистого ядра, вы можете изменить overlayfs
или unionfs
драйвер аналогичным образом.
Другой вариант - взять Samba, написать модуль Samba vfs для поврежденных файлов, открыть общий доступ к исходному каталогу и смонтировать его на той же машине, используя cifs
драйвер Linux . (То же самое возможно и с помощью 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