2017-03-17 70 views
-2

我用命名为 'concatfs' 保险丝插件如何用替换字节动态输出文件内容?

它可以将虚拟合并一些文件与特定的文件名一样xxx-concat-.mkv, 这个文件的内容是TEXT

1.mkv 
2.mkv 
3.mkv 

系统读取xxx-concat-.mkv,it 输出合并文件1.mkv 2.mkv ...。但实际上文件并未合并,这是一个虚拟输出。

所以,我的问题是:

  • 静态文件,1.zip> 300 MB。
  • 它有这么多份(发布给很多人),并且这些副本中的差异仅仅是4字节offset: 0xa 0xb 0xc 0xd。 4个字节是人的ID
  • 所以我想让名为“1-replaced-123.zip就像concatfs文件,内容大多是这样的:

1.zip

(所有二进制)

是0xA 4取代-4字节二进制内容

0x1111 10取代-10bytes二进制内容

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

你有什么建议吗?

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

+0

14次,2向下票,为什么反对票?我不明白。内容有什么问题? –

回答

0

使用合并熔丝到虚拟合并/替换文件(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