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

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

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

  • Почему root утрачивает разрешение символической ссылки 1-го и 2-го уровней?
  • как изменить, где точка символической ссылки
  • Создание / удаление символической ссылки при подключении / отключении устройства USB
  • cp -a не копирует символические ссылки на virtfs
  • Архивирование домашней папки пользователя на удаленный сервер без каких-либо символических ссылок?
  • Как создать ярлык для папки в Документы
  • Сделать Nginx следовать символическим ссылкам
  • Копировать разницу с KDE Dolphin
  • 2 Solutions collect form web for “Что-то вроде символически связанного файла, но с привязанными данными изменения?”

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

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

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

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

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

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

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

    Interesting Posts

    Как рабочий стол Linux выполняет действия системы?

    -bash: unalias: ls: not found

    Как запустить java-приложение после перезагрузки компьютера?

    Как сгенерировать много паролей с помощью kpcli?

    Конфигурация Shorewall: провайдеры и LAN

    вставить значение из ссылочного файла

    Короткая простая команда для создания группы, если она еще не существует?

    В случае успешного входа через IMAP сервер электронной почты отвечает без «ОК» и тега

    Как прокручивать мультитайл-выход при использовании фильтров командной строки?

    Как уменьшить время ожидания (блокировки) процессов для чтения диска (только для обнаружения ошибки)?

    ImageMagick: как сгущать линии

    Как создать открытую точку доступа Wi-Fi без пароля в Linux Mint?

    Xrandr –addmode не работает, и система не использует драйвер nvidia X

    Получение скорости соединения USB Ethernet

    Команда sftp с именем «\» в имени пользователя не работает

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