単一のexecコマンドでtar.gzを複数のファイルに分割するには? [コピー]

単一のexecコマンドでtar.gzを複数のファイルに分割するには? [コピー]

私はUnix / Linuxについて何も知りません。私は主にWebプログラマーです。

私のコードで次のコマンドを実行します。

exec("tar -caf '/backups/_structure.tar.gz' --ignore-failed-read -C /source .");

このコードは、私のディレクトリにあるすべてのエントリのファイルバックアップを作成し、/sourceそのディレクトリに保存します/backup。このコードは私のファイルが非常に大きい場合を除いてうまくいきます。

tarファイルを100MBのセグメントに分割したいです。これを行うには、この行に何を追加する必要がありますか?それについての内容を読みました| split -b 100MBが、どこに入れるべきかわかりません。混乱しています。

ベストアンサー1

tar -cf - --ignore-failed-read -C /source . | gzip |
  split -b 100M - /backups/_structure.tar.gz.

要点tarは、一時ファイルを保存する必要なしにインスタントで圧縮し、インスタントで分割し、ネットワーク経由で送信できるストリームを送信することです。

-f -tarhereにパイプされたstdoutのアーカイブを送信するように指示し、gzipすぐに圧縮して送信しますsplit

-split標準入力から入力を受け取るように指示します。 2番目のパラメータはブロックプレフィックスです。デフォルトが気に入らない場合は、マニュアルページを参照してsplitこれらのブロックの命名スキームを変更する方法を学びます。

繰り返しますが、このアーカイブを抽出するためにファイル全体を保存する必要はありませんtar.gz

cat _structure.tar.gz.* | gunzip | (cd /dest && tar xf -)

おすすめ記事