(Linux) 将多个文件作为一个文件读取,而无需先将块复制到新文件
(Linux) Read mutliple files as a single one without having to copy the chunks to a new file first
(Linux) 当前的问题如下:
假设我们有 foo_1 和 foo_2 实际上是 [=40 的 2 个块=]foo文件,如命令:
cat foo_1 foo_2 >foo
我希望系统能够将 {foo_1 + foo_2} 视为单个 foo 文件 而无需先复制它上面的命令。
取决于你用来读取{foo_1 + foo_2]的命令,假设你想要一个md5sum,你可以只使用命名管道,它提供了这个特性。
你会做:
mkfifo my_named_pipe
cat foo_1 foo_2 >my_named_pipe &
md5sum my_named_pipe
有效!
但是命名管道有一个很大的限制:所有访问必须是顺序的(无查找),因为它基本上是一个管道。
因此这个 "named pipes" 方法不是 "generic read multiple files as a virtual single file"。
在下面的示例中确实适用于 md5sum,因为 md5sum 只需要顺序读取文件。
现在,如果该文件是一个 rar 文件或一个您想使用 VLC 读取的视频,或者一个您想要挂载并进行随机访问的 ISO,那将失败,因为这些软件需要非顺序读取。
问题:
所以,在调用 calvary 之前,我的意思是为自己编写一个 fuse 文件系统,它将执行我上面描述的操作来保存宝贵的 I/O 和 space,我想知道您是否听说过一种通用方法来这样做。
我想到的是这样的:
fuseVirtualFile mountpoint foo foo_1 foo_2
那会在挂载点下显示 "virtual file" foo,所以 mountpoint/foo
此 "virtual file" 将是 foo_1 和 foo_2 的只读串联,而无需实际执行写入 I/O 以节省时间,磁盘 space,并穿在SSD上!
所以,既然它显然不存在,我就创造它!
看哪:mfs
这是一个 fuse 文件系统,可以按照我的问题 "virtually merge several files into a single one"。
然后就可以访问(只读)合并的文件,就好像它实际上已通过 cat
命令合并到一个文件中一样。
如问题中所述,这仅在您需要随机读取访问时才有用,因为流访问可以通过命名管道完成。
这里是:https://github.com/Bylon/mfs
尽情享受吧!
(Linux) 当前的问题如下:
假设我们有 foo_1 和 foo_2 实际上是 [=40 的 2 个块=]foo文件,如命令:
cat foo_1 foo_2 >foo
我希望系统能够将 {foo_1 + foo_2} 视为单个 foo 文件 而无需先复制它上面的命令。
取决于你用来读取{foo_1 + foo_2]的命令,假设你想要一个md5sum,你可以只使用命名管道,它提供了这个特性。
你会做:
mkfifo my_named_pipe
cat foo_1 foo_2 >my_named_pipe &
md5sum my_named_pipe
有效!
但是命名管道有一个很大的限制:所有访问必须是顺序的(无查找),因为它基本上是一个管道。
因此这个 "named pipes" 方法不是 "generic read multiple files as a virtual single file"。
在下面的示例中确实适用于 md5sum,因为 md5sum 只需要顺序读取文件。 现在,如果该文件是一个 rar 文件或一个您想使用 VLC 读取的视频,或者一个您想要挂载并进行随机访问的 ISO,那将失败,因为这些软件需要非顺序读取。
问题: 所以,在调用 calvary 之前,我的意思是为自己编写一个 fuse 文件系统,它将执行我上面描述的操作来保存宝贵的 I/O 和 space,我想知道您是否听说过一种通用方法来这样做。
我想到的是这样的:
fuseVirtualFile mountpoint foo foo_1 foo_2
那会在挂载点下显示 "virtual file" foo,所以 mountpoint/foo
此 "virtual file" 将是 foo_1 和 foo_2 的只读串联,而无需实际执行写入 I/O 以节省时间,磁盘 space,并穿在SSD上!
所以,既然它显然不存在,我就创造它!
看哪:mfs
这是一个 fuse 文件系统,可以按照我的问题 "virtually merge several files into a single one"。
然后就可以访问(只读)合并的文件,就好像它实际上已通过 cat
命令合并到一个文件中一样。
如问题中所述,这仅在您需要随机读取访问时才有用,因为流访问可以通过命名管道完成。
这里是:https://github.com/Bylon/mfs
尽情享受吧!