系统相关
首页 > 系统相关> > linux – 类似于符号链接的文件,但是附加了更改细节?

linux – 类似于符号链接的文件,但是附加了更改细节?

作者:互联网

是否存在使用文件的文件类型或方法,其中某些文件的外观和行为类似于符号链接文件,但包含额外的元信息以在读取数据时更改数据?

例如:
如果我有一个名为hello-world.txt的文件,我构建一个指向它的符号链接文件,

ln -s /path/to/hello-world.txt /path/to/symlink

我无法在不更改hello-world.txt的情况下更改符号链接的内容,也无法更改指向hello-world.txt的所有其他文件.我意识到符号/硬链接文件假设保持不变(因为它们在某种意义上是相同的文件),但如果我可以编写引用特定文件的文件,那么它会很棒,然后还提供更改细节每次读取文件时都会应用.

我尝试使用如下所示的纯文本创建自己的文件类型:

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

然后我会给这些文件自己的file extension and mime typecreate an intermediate program重定向到引用的文件,并且基本上尝试模仿符号链接的行为.问题是,文件没有“真正”引用另一个文件,因此实际读取文件(通过使用cat命令,或者让ac处理器拉入文件等),将得不到相同的信息.符号链接文件会.我不确定我是否可以为这种事情提供一个钩子,并且有一个程序输出正确的文本,无论读什么.也许有管道文件的东西?我不知道.

在文件系统上实现这种行为的最佳方法是什么?

也许最能描述我希望文件具有的动态功能的类比,就是php文件在网络上的工作方式.可以使用其他参数引用相同的文件,这会更改用户读取的文件的内容.

解决方法:

您可以使用FUSE或其中一个覆盖系统(如UnionFS)构建它.我不认为没有文件系统驱动程序或使每个访问它的程序都使用LD_PRELOAD hacks来修改read()的行为.

有几个可能的实施问题:

>为了应用更改,您必须以两种方式读取这两个文件并存储中间件; http://en.wikipedia.org/wiki/Rope_%28data_structure%29可能会有所帮助,但是如果基本文件和更改文件的大小都是几个Gb怎么办?此外,这将停止应用更改时打开文件的程序.
>如果基础文件以更改语句不再适用的方式更改,会发生什么?
>事实上,如果底层文件发生了变化会发生什么?
>如果您尝试写入修补文件会发生什么?

标签:linux,mime-types,filesystems,symlink,files
来源: https://codeday.me/bug/20190816/1667416.html