分割とマージ - DVDを使用してください!

分割とマージ - DVDを使用してください!

名前の大きいファイルがあるとしましょうfoo.tar.xz。私はファイルを4.7 GB未満のサイズに分割し、名前などのsplit -b 4689887232 foo.tar.xz foo.tar.xz.ファイルを提供しました。その後、各ファイルを別のDVDに記録し、かなり大きなDVDを使用してAliceに送信しました。foo.tar.xz.aafoo.tar.xz.ab帰還鳩

アリスは各DVDを挿入し、各ファイルを自分のPCにコピーしてから、次のものを使用してcat取得できます。xzfoocat foo.tar.xz.* | tar xfJ -

今、Aliceが自分のPCに抽出したコンテンツを保存するのに十分なスペースがあるとしますfoocatDVDからこれらのファイルを直接読み込み、ストリームを一時停止して次のDVDを挿入する方法はありますか?pausecatまたはに似ていますかvolumecat

ベストアンサー1

この味はよくわかりませんが、cat解決策は次のとおりです。ほぼ働く:

  1. 端末で実行mkfifo myfifo; tail -c +1 -f myfifo | tar xfJ -
  2. 最初のDVDをDVD-ROMドライブ(dev / sr0など)に挿入します。
  3. 2番目の端末の実行dd if=/dev/sr0 of=myfifo
  4. 完了したら、ddDVDを取り出します。
  5. 他のDVDがある場合は、DVD-ROMドライブに挿入して手順3に進み、それ以外の場合は手順6に進みます。
  6. 最初の端末でCTRL-Cを押して終了しtailますtar

どのように動作しますか?

秘密は、tail名前付きパイプで連続読み取りを使用することです。これにより、出力がtail実行したいコマンドにパイプされます。最初はパイプが開かないので、何も起こりません。ただし、データをパイプラインにポンピングするコマンドを使用し始めると、そのddデータtailが選択されてユーザーに渡されます。

パイプへのデータフローが停止すると、魔法が発生します。tail標準出力ファイル記述子が開いたままになり、コマンドが一時停止します。その間、tailより多くの入力を待ってください。

質問

ほとんど機能すると言うのは、tail入力されたデータの最後のビットが書き込まれないようにするバッファリングの問題があるようです。誰かがこの問題を解決するための洞察を提供できることを願っています。

おすすめ記事