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

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

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

 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 работают в Интернете. В тот же файл можно ссылаться с использованием дополнительных параметров, и это изменяет содержимое файла, прочитанного пользователем.

2 Solutions collect form web for “Что-то вроде символически связанного файла, но с привязанными данными изменения?”

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

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

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

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

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

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

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

  • Где хранится информация о жестких / непрямых ссылках?
  • Есть ли способ создать ссылку, которая действует как ярлык?
  • tomcat: символическая ссылка в цикле
  • Создание символических ссылок с подстановочными знаками
  • Является ли символическая / софт-ссылка похожей на ярлык / псевдоним на рабочем столе?
  • Случайное удаление каталога / lib в Fedora 15
  • Найти использование дисковых папок с символическими ссылками
  • Справочная символьная ссылка на inode, а не на путь (например, жесткие ссылки каталога)
  • Как сделать ls, предупреждающий меня о родительском каталоге, является symlink
  • Не удается удалить сломанную символическую ссылку
  • Как определить, является ли цель софт-ссылки каталогом или файлом?
  • Interesting Posts

    Репозиторий Git в SSHFS: невозможно добавить в .git / logs / HEAD: Недопустимый аргумент

    Соединение WiFi продолжает снижаться

    Vim: s заменить первые N <g вхождения на строку

    Как напечатать код функции оболочки в терминале?

    сценарий оболочки для создания каталогов, подкаталогов и файлов по шаблону

    Возможные объяснения, почему мой сервер стал неактуальным

    find: несколько `-exec` с условиями

    Как заменить Linux Mint на Ubuntu без потери каких-либо внутренних данных?

    Невозможно объединить файлы с помощью cat

    Щелчки мыши перестают работать после случайного времени, используя Awesome WM + Gnome

    systemd-timesyncd на Debian 8 (терпит неудачу?)

    Рекомендации по ведению журналов ошибок (система, драйвер устройства и приложение)

    Невозможно найти способ настройки Mutter в элементарной ОС

    Как настроить раздел «данных», разделяемый несколькими ОС Linux?

    Как скопировать каталог рекурсивно с помощью hardlinks для каждого файла

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