如何动态输出替换一些字节的文件内容?



>我使用了一个名为"concatfs"的保险丝插件

它可以虚拟合并一些具有特定文件名的文件,例如xxx-concat-.mkv, 并且此文件的内容是文本

1.mkv
2.mkv
3.mkv

系统读取xxx-concat-.mkv,它输出一个带有1.mkv 2.mkv ...的合并文件。 但文件实际上并没有合并,它是一个虚拟输出。

所以,我的问题是:

  • 静态文件,1.zip> 300 MB。
  • 它有这么多副本(发布给很多人),而这些副本的区别只有 4 个字节offset: 0xa 0xb 0xc 0xd。 4 个字节是人们的 ID
  • 所以我想像concatfs一样制作一个名为'1-replace -123.zip'的文件,内容大多像:(全二进制)

1.zip

0xa 4 个替换的 4 字节二进制内容

0x1111 10 个替换的 10 字节二进制内容

  • 系统读取1-replaced-123.zipfuse将输出替换的内容。
  • 它可以节省如此多的磁盘空间。
  • 我知道 PHP/JSP 可以读取和回显替换,但 php 将使用高 CPU/内存来回显大文件流。

你有什么建议吗?

非常感谢,对不起我的英语。

使用合并保险丝虚拟合并/替换文件 (C++ 11)

https://github.com/fly-studio/merged-fuse

1.txt

12345678

2.txt

abcdefghi

制作一个名为1-merged-.txt的文件,

-merged-是文件名中的特殊单词

内容为 JSON 格式

[
{
"path": "1.txt"
},
{
"path": "2.txt",
"replaces": [
{
"offset": 2,
"length": 2,
"content": "MjE="
}
]
}
]

cat 1-merged-.txt时,输出:

12345678ab12efghi

您可以看到文件已合并(虚拟),并且内容已替换:

cd替换为12

最新更新