Unixシステムでは、ユーティリティを使用してファイルを結合することができますcat
(Windowsシステムではtype
またはcopy /B
)。
cat file1 file2 file3 > joined-file
これにより、古いファイルの内容が 1 つの新しいファイルにコピーされます。このプロセスでは、古いファイルを読み取って新しいファイルを書き込むのに必要な時間がかかります。新しいファイルは古いファイルとは別に保存されるため、新しいファイルを書き込むための十分な空きディスク領域が残っていない場合、コマンドは失敗します。
ディスク上のデータを移動またはコピーせずに、ファイルを結合する、または少なくともファイルが結合されているとプログラムに思わせる「トリック」を仕掛ける、より速い方法はありますか?
これを実現する一つの方法は、ファイルシステムのTOCを変更して、ファイルを次のように扱うことです。断片大きなファイルの。これを行う「安全な」方法はありますか (つまり、dd
手動で TOC を変更するよりも安全です)?
ファイルを物理的に連結するよりも速く、必要なディスク容量が少ない、あらゆるプラットフォーム上のファイルを結合する方法に興味があります。
答え1
私は、既存のファイルシステムの上に何らかのオーバーレイファイルシステムを使用することでこれが可能になるかもしれないと仮定しました(既存のファイルシステムを変更すると、災害の原因になります)。その後、FUSE(ユーザー空間のファイルシステム)を使用してLinux用の何かを作成できる可能性があることがわかりました。
ふと思いついてグーグルで調べたところ、誰かがすでにこれを実装していることがわかりました。concat-fuseというGITプロジェクトがあります。https://github.com/concat-fuse/concat-fuse/blob/master/README.md- これはあなたが説明していることを実行するように見えます。