Что-то вроде символически связанного файла, но с привязанными данными изменения?

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

Например:
Если у меня есть файл hello-world.txt , и я создаю символически связанный файл, указывающий на него,

  • Вывод общих строк из 2-х файлов и необычных строк из обоих файлов в один выходной файл
  • Как избавиться от информации ogg в Linux?
  • Top говорит, что используется 100% процессор, но 50% ядер простаивают?
  • Переместите установку linux с помощью btrfs в подчиненном стандарте по умолчанию (subvolid = 0) на другой подвыбор
  • Ошибка «mount: wrong fs type ..» при установке USB
  • Разница между cp -r и cp -a
  •  ln -s /path/to/hello-world.txt /path/to/symlink 

    Я не могу изменить содержимое symlink без изменения hello-world.txt , а также изменить все другие файлы, которые указывают на hello-world.txt . Я понимаю, что символически / жестко связанные файлы, как предполагается, остаются теми же (потому что они являются одним и тем же файлом в некотором смысле), но было бы здорово, если бы я мог написать файл, который ссылается на конкретный файл, а затем также предоставляет сведения об изменении которые применяются при каждом чтении файла.

    Я попытался создать свой собственный тип файла, используя обычный текст, который выглядит так:

     /path/to/file/being/referenced change statement change statement ... 

    Затем я предоставил этим файлам собственное расширение файла и тип mime и создаю промежуточную программу для перенаправления на указанный файл и в основном попытаюсь имитировать поведение символической ссылки. Проблема заключается в том, что файл не «действительно» ссылается на другой файл, и поэтому на самом деле чтение файла (с помощью команды cat или с приложением процессора c ++ в файле и т. Д.) Не получит той же информации, что и символически связанный файл. Я не уверен, могу ли я обеспечить крючок для такого рода вещей, и программа выводит правильный текст для того, что его читает. Может быть, что-то с файлами с каналами? Я не знаю.

    Какой был бы лучший способ добиться такого поведения в файловой системе?

    Возможно, аналогия, которая наилучшим образом описывает типы динамических возможностей, которые я хочу иметь, – это то, как файлы php работают в Интернете. В тот же файл можно ссылаться с использованием дополнительных параметров, и это изменяет содержимое файла, прочитанного пользователем.

  • Выброс кеша каталогов, несмотря на наличие большого количества памяти?
  • Сжатие двух одинаковых папок дает разные результаты
  • Сбросить список файлов без их структуры каталогов
  • Как обновить моно на openSuse
  • Ограничение / отключение буферизации на Linux-дисках в виртуальной машине
  • Настройка оболочки OpenSSH для любого / любого подключаемого имени пользователя
  • 2 Solutions collect form web for “Что-то вроде символически связанного файла, но с привязанными данными изменения?”

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

    Существует несколько возможных проблем с реализацией:

    • чтобы применить изменения, вы должны прочитать оба файла и как-то сохранить промежуточную информацию; http://en.wikipedia.org/wiki/Rope_%28data_structure%29 может помочь, но что, если базовый файл и файл изменений имеют размер как несколько Gb? Кроме того, это остановит программу, которая откроет файл во время применения изменений.

    • что произойдет, если основной файл изменится таким образом, что инструкции изменений больше не применяются?

    • на самом деле, что произойдет, если основной файл вообще изменится?

    • что произойдет, если вы попытаетесь записать в исправленный файл?

    Возможно, вы сможете сделать что-то подобное с помощью patch . «Симлинк» тогда будет в основном быть shellscript, который читает оригинал и применяет патчи. Но я не слышал ничего готового, который делает то, что вы хотите; если кто-нибудь еще придумает это, мне будет очень интересно. В противном случае это было бы интересное упражнение по программированию.

    Linux и Unix - лучшая ОС в мире.