大きなフォルダを20Mbのファイルに圧縮する方法を探しています。zipファイルを小さいファイルに分割したくありません。代わりに、いくつかのサブファイル/フォルダーを、圧縮時に20Mbのグループにグループ化したいと思います。
あなたがそうする方法を知っているなら、助けてください!
更新
単独で解凍できる小さなzipファイルのみを使用する必要があります。
私の意図は、virustotal.comを使用して大きなフォルダをスキャンすることです。
大きなフォルダを20Mbのファイルに圧縮する方法を探しています。zipファイルを小さいファイルに分割したくありません。代わりに、いくつかのサブファイル/フォルダーを、圧縮時に20Mbのグループにグループ化したいと思います。
あなたがそうする方法を知っているなら、助けてください!
更新
単独で解凍できる小さなzipファイルのみを使用する必要があります。
私の意図は、virustotal.comを使用して大きなフォルダをスキャンすることです。
回答:
winzipの場合:winzipを起動してwinzipに追加またはドラッグアンドドロップするか、ファイルを右クリックして[zipに追加...]を選択して、zipにファイルを追加します。
次にwinzipで:
アクション-「パーツサイズ」の下部で分割し、「その他のサイズ」を選択してから、20を入力してmbを選択
できた!
あなたが提案しているのは、本質的にナップザック問題のバリエーションであり、ファイル圧縮のために、各アイテムが20MBの「ナップザック」のどれだけを占めるかを知ることから始めません。
もちろん、簡単な解決策は、単純に各ファイルを個別に圧縮することですが、これではファイル数を減らすことができないため、満足のいく解決策ではないと思います。
この問題が発生した場合は、まず各ファイルを一時的な場所(またはディスクに書き込まずにメモリ内)に個別に圧縮し、それぞれのおおよその圧縮サイズを取得することから始めます。その情報を使用して、ナップザック問題への標準的なアプローチのいずれかによってグループ化するファイルを決定し、実際のzipファイルを作成することができます。
スクリプト言語が利用可能で、その使用方法を知っているとすると、このアプローチは自動化がかなり簡単であると思います。処理するファイルの数が少ない場合、手動で行うのは非常に退屈です。
zipに分割を行わせると、自分でそれを理解するよりも自動化がはるかに簡単になります。目標が20MBのzipファイルの場合、アーカイブに追加する前に、各ファイルの圧縮サイズを見積もる必要があります。zipに分割を任せたくない理由はありますか?これがgnu zipでそれを行う方法です:
zip -s 20m -r myzip.zip mydir
これにより、ファイル名に増分インデックス番号を含む20MBの圧縮ファイルが作成されます。
Linuxでは、これを正確に行うzipsplitというプログラムがあります。これは標準のzipパッケージの一部です。
次のように実行できます。
zipsplit bigfile.zip -n 20000000
bigfile.zipを最大20MBの部分に分割します。また、含まれている個々のファイルは分割されないことに注意してください。したがって、各パーツを個別に解凍できます。これは、最大パーツサイズに収まらない単一のファイルがある場合、分割ができないことも意味します。
アップデート: Windows用のバイナリもinfo-zip.orgにあるようです。具体的には、Win 64用のftp://ftp.info-zip.org/pub/infozip/win32/zip300xn-x64.zipにあります。
簡単な見通しではありません。
最近、DVDに簡単に保存できるようにファイルを4.3GB以下のサブディレクトリに収集するスクリプトを作成しましたが、これはすべて非圧縮でした。
圧縮でそれを行う-今挑戦があります。圧縮後のファイルのサイズを予測することはできません-20 MBを超えるまでファイルをサイズの降順でzipに追加し続け、最後のファイルを削除して、20 MBを下回るまでそれを小さいファイルに置き換えます。すべてのファイルを使い果たしても20 MBを超える場合は、最後のファイルをドロップして次のzipに移動します。
スクリプトのかなりトリッキーなビットと、かなり遅くて苦痛なプロセスです。
Daveは、 OPが要求したものに最も近いプログラム可能なソリューションを提供しているようです。私はそれを考え出した、これは手動で行うことができ、以下の仮定がとられている場合(これは純粋な技術的な問題、それはより多くのではないだけでなく、組織の技術よりも問題):
この方法を7-zip(Windowsのインターフェースと端末)で使用することにより、新しく生成されたzipファイルの圧縮を維持しました。
すべてのファイルを空のフォルダー(希望する圧縮方法で)などの単一のzipファイルに圧縮して開始しALL.zip
、それを開きます。
Test
ボタンを押して、それらの集合サイズを確認します(これは圧縮を考慮します)。
Extract
たりCopy
、ボタン抽出パスの末尾に新しいフォルダの名前(例えば:追加しているときplu_8MB
)ALL.zip
zip 内で、抽出したばかりのこれらのファイルを削除し(誤った再抽出を回避)、次のフォルダーまたはファイルのサブセットに移動します。ALL.zip
を独立したフォルダーに抽出したら、そのzipを削除し、そのフォルダーでターミナルを開きます。タイプ:
for /F %i in ('dir /b') do "C:\Program Files\7-zip\7z.exe" a -tzip %i.zip %i
を押すENTERと、抽出したフォルダごとにzipファイルが生成されます。