tar または tar.gz ファイルを小さい tar/tar.gz ファイルに再パッケージします。

tar または tar.gz ファイルを小さい tar/tar.gz ファイルに再パッケージします。

何百万ものファイルを含むtar.gzファイルがあります。ファイル数の上限なので、解凍せずに内容を分割したいです。 tar/tar.gzファイルを複数のtar/tar.gzに分割する方法はありますか?

これが不可能な場合は、Pythonを代わりに使用できますか?

最初の投稿を見ると、私が何か間違っているかどうかがわかります。

編集:もう一度合わせたくありません。各「分割」ファイルを処理できるようにしたいです。

答え1

分割は正しいツールです。

ファイルを10MBチャンクに分割

split -b10m /path/to/file parts

一緒に入れる

cat parts* > file

答え2

を使用して分割することができますが、split部品は再結合するまで意味がありません。別のアーカイブに分割するには、解凍する必要があります。

答え3

解凍なしで圧縮されたアーカイブを複数の部分に分割することはできませんtar。圧縮は「tarストリーム」の上に適用され、ストリームは圧縮機によって不透明なバイナリストリームとして処理される。

したがって、ネイティブ圧縮tarアーカイブからtarファイルセットを生成できるすべてのツールは実際にそれを解凍します。

一方を入力として使用し、もう一方を出力ファイルとして生成し、モード以外にはtar独自のモードはありません。tar archivetarappenddelete

tarアーカイブはかなり大きいので、抽出された各ファイルセットに対して別々のアーカイブを作成しながら、ファイルを部分的に抽出するために何度も解凍したくありません。

一つあるPython tarライブラリこれは「即時」のtarファイルの処理を可能にすることができます(私はpythonこれを直接確認するのにうまくいきません)。これにより、ソースアーカイブからアイテムを読み取り、サイズが選択した制限に達するまで、現在の出力アーカイブに追加するPythonスクリプトを開発できます。その後、スクリプトは次の出力アーカイブを生成し、続行します。

関連情報