tar --大きな tar.gz から単一の (小さな) ファイルを抽出します。メモリ/ディスクの使用量は?

tar --大きな tar.gz から単一の (小さな) ファイルを抽出します。メモリ/ディスクの使用量は?

から単一のファイルを抽出できることは承知していますtar

tar -xf file.tar.gz /small/single/file

私はこれを、ディスク/RAM が制限された組み込みシステムで実行するつもりです。このコマンドが大きな tarball をどのように処理するかを知りたいです。

1 つのファイルを抽出すると、tarball 全体がメモリに解凍されますか? すべてを解凍してもかまいませんが、小さなバッファで解凍される限りは問題ありません。

使用可能な RAM が 100MB あり、ディスク容量が 5MB だとします。また、/small/single/file5MB 未満です。また、ソース tarball は 500MB です。安全に抽出できますか/small/single/file?

答え1

答えはおそらく使用しているの実装によって異なりますtarが、現実的には、ほとんどの実装では比較的小さなバッファを使用してtarballを処理すると予想されます。2GiB圧縮されたtarballtarでGNUを使用してbzip21つのファイルを抽出すると、次のようになります。

64.07user 4.84system 2:53.45elapsed 97%CPU (0avgtext+0avgdata 4664maxresident)k
4046976inputs+8outputs (0major+1194minor)pagefaults 0swaps

(GNU を使用time) ご覧のとおり、最大常駐サイズは 5MiB 未満です。

答え2

RAM/ディスク使用量を最小限に抑えるには、次のようなパイプを使用することをお勧めします。

gzip -dc file.tar.gz| tar -f - /small/single/file

関連情報