Если SFTP доступен на сервере (это обычно), можно использовать SSHFS. Это позволяет Вам смонтировать удаленные файлы на клиенте. Вам нужны демон SFTP на сервере и FUSE на клиенте.
mkdir /net/myserver
sshfs myserver:/ /net/server
Можно затем использовать любую локальную команду такой как cp
, chmod
, rsync
, и т.д., не имея необходимость волноваться, являются ли файлы локальными или удаленными. С rsync
, передайте --no-whole-file
опция сказать этому использовать свой сохраняющий пропускную способность алгоритм передачи дельты (который иначе выключен, когда rsync полагает, что оба пути локальны).
rsync -a --no-whole-file somedir /net/myserver/somewhere
Вы смогли создавать это с FUSE или одной из систем наложения как UnionFS. Я не думаю, что это может быть сделано или без драйвера файловой системы или без создания каждой программы, которая получает доступ к нему, используют взломы LD_PRELOAD для изменения поведения чтения ().
Существует несколько вероятных проблем реализации:
для применения изменений необходимо считать оба файла и сохранить промежуточное звено так или иначе; http://en.wikipedia.org/wiki/Rope_%28data_structure%29 может помочь, но что, если основной файл и файл изменений - оба несколько Гбит в размере? Кроме того, это остановит программу, которая открывает файл, в то время как Вы применяете изменения.
что происходит, если базовый файл изменяется таким способом, которым больше не применяются операторы изменения?
на самом деле, что происходит, если базовый файл изменяется вообще?
что происходит, при попытке записать в исправленный файл?
Вы смогли делать что-то вроде этого использование patch
. "Символьная ссылка" затем в основном была бы сценарием оболочки, который читает оригинал и применяет патчи. Но я не услышал ни о чем готовом, которое делает то, что Вы хотите; если бы кто-либо еще придумывает его, мне очень было бы интересно. Иначе это было бы интересное осуществление программирования.