転載:tarパッケージングsplit分割分解大パッケージファイル

1544 ワード

転載先:https://blog.csdn.net/tdstds/article/details/24870535
リモートでtarパッケージをダウンロードする場合、パッケージが大きすぎて接続が失われた場合、再ダウンロードが必要で憂鬱になることがあります.
このときsplit分割を使用して大きなパケットファイルを分割し、単一のダウンロードでOKです.
Linuxでtarコマンドを使用してファイルをパッケージ化して圧縮するのが一般的です.しかしLinuxのファイルシステムはファイルサイズに制限があります.つまり、1つのファイルは最大2 Gを超えてはいけません.圧縮パッケージの内容が大きいと、最後の結果は2 Gを超えます.どうすればいいですか.あるいは、圧縮パッケージはディスクでバックアップしたいのですが、ディスク1枚あたりの容量は700 Mしかありません.では、どのように保存すればいいのでしょうか.解決策は,最後の圧縮パケットを指定したサイズで分割することであり,splitコマンドを用いる必要がある.
例:
ディレクトリlogsを圧縮して複数の1 Mファイルに分割するには、次のコマンドを使用します.
tar cjf - logs/ |split -b 1m - logs.tar.bz2.

完了すると、次のファイルが生成されます.
logs.tar.bz2.aa, logs.tar.bz2.ab, logs.tar.bz2.ac

解凍するときは、次のコマンドを実行すればいいです.
cat logs.tar.bz2.a* | tar xj

さらに例を挙げます.
ファイルtest.pdfパケットを500 bytesのファイルに圧縮するには、次の手順に従います.
tar czf - test.pdf | split -b 500 - test.tar.gz

最後に注意しますが、tarのouputとsplitのinputのパラメータです.
ここでは命令についていくつか説明します.
コマンドラインの赤い部分を圧縮して分割するのは、コマンドに対応するI/Oファイル名パラメータです.ここで、標準入力または出力を示します.では、上記の例と結びつけて、tarコマンドはlogsディレクトリを圧縮し、生成した結果を標準出力に直接送ることを意味する.一方、splitコマンドは、標準入力から取得したファイル内容を分割した結果、ファイル接頭辞がlogs.tar.bz 2であることを示す.両者は、それぞれの標準入出力をパイプでドッキングします.
ここでsplitコマンドのパラメータの意味を説明します.
-b SIZEは、各ファイルのサイズを指定し、その単位はb(512バイト)、k(1 K)、m(1 M)とすることができる.
-d接尾辞名としてアルファベットではなく数字を使用
-aX接尾辞名の長さを指定します.デフォルトは2ビットです.
これにより、上記のコマンドは次のように変更できます.
tar cjf - logs/ |split -b 1m -d -a 1- logs.tar.bz2.

注意:$cat file 1 file 2 file 3>bigfile