サイズ制限のあるファイルを圧縮する方法は?


19

フォルダーからファイルを圧縮するスクリプトがあります。zipファイルが10 MBを超えないようにします。サイズが10MBを超える場合、別のZIPファイルを作成する必要があります。

これに使用できるコマンド(または他の方法)はありますか?


1
質問にはgzipタグがありますが、テキストはzipを参照していますが、明確にできますか?(答えは異なる形式に基づいたアプローチに分かれています。)
HåkanLindqvist

タグにzipを追加できないので、gzipを使用した理由は、この問題に対応できるgzipメソッドがある場合は、それも使用できます。
ヴィシュヌ

回答:


21

--split-size」オプションを使用して、「zip」自体の「split archive」機能を使用できます。

「zip」マンページ( " man zip")から:

(...)

分割アーカイブの用途の1つは、複数のリムーバブル
メディアに大きなアーカイブを保存することです。20個の分割ファイルを持つ分割アーカイブの場合、ファイルには 通常ARCHIVE.z01、ARCHIVE.z02、...、ARCHIVE.z19、ARCHIVE.zip
という名前が付けられます(ARCHIVEはアーカイブの名前に置き換えられます)

最後のファイルは.zipファイルであることに注意してください。

(...)

-s splitsize
--split-size splitsize

分割サイズは、オプションで乗数が後に続く数値です。
現在、数値は整数でなければなりません。
現在、乗数はk(キロバイト)、m(メガバイト)、g(ギガバイト)、
またはt(テラバイト)のいずれかです。64kが最小分割サイズであるため
、乗数のない数値はデフォルトでメガバイトになります。たとえば、 CDに 書き込むのに役立つかもしれない670 MBの分割を持つ
bar
ディレクトリの内容でfooという名前の分割アーカイブを作成するには
、次のコマンドを実行します。

                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

分割アーカイブを単一ファイルアーカイブに変換します。

(...)

したがって、最初に「-s 0」スイッチを使用してZIPファイル「分割解除」します

$ zip -s 0 archive.zip --out unsplit.zip

...そして、分割されていないファイル解凍します。

$ unzip unsplit.zip


6
tar -czvf - /path/to/files | split -b 10M - archive.tar.gz

多くのファイルを提供します:

archive.tar.gzaa

archive.tar.gzab

...

その後、次の方法で圧縮解除できます。

cat archive.tar.* | tar -xzvf -

2

5GBのファイルに対して私がそれをした方法は次のとおりです(OPが尋ねたように10MB対1GBに分割)...

例: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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.