フォルダからファイルをZipするスクリプトがあります。 zipファイルが10 MB以下であることを確認したい。サイズが10MBを超える場合は、別のZipファイルが作成されます。
これに使用できるコマンド(または他の方法)はありますか?
"-split-size"オプションを使用して、 "Zip"自体の "split archive"機能を使用できます。
「Zip」のマンページ(「man Zip
"):
(...)
分割アーカイブの1つの使用法は、複数のリムーバルに大きなアーカイブを保存することです
可能なメディア。 20の分割ファイルがある分割アーカイブの場合、ファイルは標準です
通常の名前(ARCHIVEをアーカイブの名前で置き換え)AR‐
CHIVE.z01、ARCHIVE.z02、...、ARCHIVE.z19、ARCHIVE.Zip。ことに注意してください
最後のファイルは.Zipファイルです。(...)
-s分割サイズ
-分割サイズsplitsize分割サイズは、オプションで乗数が続く数値です。
現在、数値は整数でなければなりません。乗数は
現在、k(キロバイト)、m(メガバイト)、g(ギガバイト)、
またはt(テラバイト)。 64kは最小分割サイズであるため、数値
乗数なしのデフォルトはメガバイトです。たとえば、
fooと呼ばれる分割アーカイブをバーの内容で作成します
書き込みに役立つ可能性がある670 MBの分割があるディレクトリ
CDでは、コマンド:Zip -s 670m -r foo bar
使用することができます。
したがって、分割Zipアーカイブを作成するにはの場合、次のようにできます( "-r
"は、ディレクトリのサブディレクトリを含めるための「再帰的」スイッチです):
$ Zip -r -s 10m archive.Zip directory/
ファイルを解凍するには、「Zip
」のマンページでは、「-s 0`」スイッチを使用する必要があると説明されています。
(...)
Zip -s 0 split.Zip --out unsplit.Zip
分割されたアーカイブを単一ファイルのアーカイブに変換します。
(...)
したがって、最初にZipファイルの「unsplit」に「-s 0 "スイッチを使用します。
$ Zip -s 0 archive.Zip --out unsplit.Zip
...そしてあなたnsplit fileを解凍:
$ unzip unsplit.Zip
tar -czvf - /path/to/files | split -b 10M - archive.tar.gz
あなたにいくつかのファイルを与えるでしょう:
archive.tar.gzaa
archive.tar.gzab
...
次に、次のコマンドで圧縮解除できます。
cat archive.tar.* | tar -xzvf -
これが私が5 GBのファイルに対して実行した方法です(OPが要求したように、1 GBと10 MBに分割されます)...
例:5GBファイルを1GBファイルに分割するにはFAT32 USBにコピーする(ファイル名 "FIVE_GB_FILE.ISO")
ステップ1:ファイルを圧縮(圧縮なし、ソースと同じディレクトリ)
Zip -0 FIVE_GB_FILE.Zip FIVE_GB_FILE.ISO
ステップ2:5GB Zipファイルを1GB Zipファイルに分割します
Zip -s 1000m SPLIT_5GB_FILES FIVE_GB_FILE.Zip
出来上がり...次の1GBファイルが必要です(元のファイル、およびステップ1のZip)。
SPLIT_5GB_FILES.Zip
SPLIT_5GB_FILES.Z01
SPLIT_5GB_FILES.Z02
SPLIT_5GB_FILES.Z03
SPLIT_5GB_FILES.Z04