web-dev-qa-db-ja.com

ファイルシステムを処理することにより、コピー操作なしでバイナリファイルをマージできますか?

シェルコマンドを使用して効率的にバイナリファイルをマージしたいと思い、すぐにこのような古典的な方法を見つけました:

cat file1 file2 > file3

悪くないですが:

  1. 遅いです。 IOアクセスが遅いです。
  2. 余分なスペースが必要です。ファイルをコピーしたくない。それらを連結するだけです。

ファイルシステムは、ファイルの断片化を処理するのに最適です。このメカニズムを使用してファイルをマージすることはできませんか?

7
zz64

あなたはこれを行うことができます:

cat file2 file3 [...] filen >> file1

これは、file2の最後にfile3file1、...、filenを連結します。 >>演算子は、ファイルのの終わりに書き込むようにシェルに指示します。

ファイルシステムを活用して「ファイルの断片化を処理する」必要がある。残念ながら、これを行う一般的な方法はありません。これは、「ファイルシステム」がディスク上のファイルシステムよりもはるかに一般的であるためです。たとえば、 [〜#〜] nfs [〜#〜]Fuse 、およびあらゆる種類のリソース(ハードディスクなどの ブロックデバイス だけでなく)をファイルシステム階層として公開できる他の多くのメカニズム。ブロックデバイスベースのファイルシステムであっても、これを行うための標準的なメカニズムはなく、実装固有のメカニズムもわかりません。

6