大きなフォルダーを20Mbに制限された小さなファイルに圧縮する方法は?


10

大きなフォルダを20Mbのファイルに圧縮する方法を探しています。zipファイルを小さいファイルに分割したくありません。代わりに、いくつかのサブファイル/フォルダーを、圧縮時に20Mbのグループにグループ化したいと思います。

あなたがそうする方法を知っているなら、助けてください!

更新

単独で解凍できる小さなzipファイルのみを使用する必要があります。

私の意図は、virustotal.comを使用して大きなフォルダをスキャンすることです。


使用しているオペレーティングシステムの詳細
Pitto

@Pitto私はWindows-7を使用しています
Nam G VU

回答:


10

winzipの場合:winzipを起動してwinzipに追加またはドラッグアンドドロップするか、ファイルを右クリックして[zipに追加...]を選択して、zipにファイルを追加します。

次にwinzipで:

アクション-「パーツサイズ」の下部で分割し、「その他のサイズ」を選択してから、20を入力してmbを選択

できた!


4
フリーサイドでの滞在も7zipは完璧に機能します:)
Pitto

3
これでzipファイルが分割され、分割された部分だけを使用することはできません。
Nam G VU

Omg今、私はあなたが探しているものをよりよく理解しています...私はあなたの問題に対するどんな種類の解決策も見つけることができません、そして:(無料で素晴らしいMalwarebytes Antimalwareを使用してローカルでファイルをスキャンすることについてはどうですか?
Pitto

6

あなたが提案しているのは、本質的にナップザック問題のバリエーションでありファイル圧縮のために、各アイテムが20MBの「ナップザック」のどれだけを占めるかを知ることから始めません。

もちろん、簡単な解決策は、単純に各ファイルを個別に圧縮することですが、これではファイル数を減らすことができないため、満足のいく解決策ではないと思います。

この問題が発生した場合は、まず各ファイルを一時的な場所(またはディスクに書き込まずにメモリ内)に個別に圧縮し、それぞれのおおよその圧縮サイズを取得することから始めます。その情報を使用して、ナップザック問題への標準的なアプローチのいずれかによってグループ化するファイルを決定し、実際のzipファイルを作成することができます。

スクリプト言語が利用可能で、その使用方法を知っているとすると、このアプローチは自動化がかなり簡単であると思います。処理するファイルの数が少ない場合、手動で行うのは非常に退屈です。


1
「圧縮なし」で圧縮できませんか?オペレーションの「更新」を見ると、ファイル形式が圧縮よりも重要であるようです。
高価な2011

1
えっと…良い点。圧縮せずにzipを単純なアーカイブとして使用することは考えていませんでした。
Dave Sherohman、2011

@DaveSherohmanでは、どうすればそれを実現できますか?
Nam G VU

5

zipに分割を行わせると、自分でそれを理解するよりも自動化がはるかに簡単になります。目標が20MBのzipファイルの場合、アーカイブに追加する前に、各ファイルの圧縮サイズを見積もる必要があります。zipに分割を任せたくない理由はありますか?これがgnu zipでそれを行う方法です:

zip -s 20m -r myzip.zip mydir

これにより、ファイル名に増分インデックス番号を含む20MBの圧縮ファイルが作成されます。


4
別の回答に対するOPのコメントに基づくと、zipで自動的に分割したくないようです。すべてのファイルが適切に機能する必要がある単一のアーカイブを取得しますが、各部分を完全で使いやすいアーカイブにしたいと考えています。他の。
Dave Sherohman、2011

4

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にあります。


3

簡単な見通しではありません。

最近、DVDに簡単に保存できるようにファイルを4.3GB以下のサブディレクトリに収集するスクリプトを作成しましたが、これはすべて非圧縮でした。

圧縮でそれを行う-今挑戦があります。圧縮のファイルのサイズを予測することはできません-20 MBを超えるまでファイルをサイズの降順でzipに追加し続け、最後のファイルを削除して、20 MBを下回るまでそれを小さいファイルに置き換えます。すべてのファイルを使い果たしても20 MBを超える場合は、最後のファイルをドロップして次のzipに移動します。

スクリプトのかなりトリッキーなビットと、かなり遅くて苦痛なプロセスです。


ここに私の考え。単にファイル/フォルダを<= 20Mbの解凍されたグループにグループ化してから、それらを圧縮しないのはなぜですか?.zip結果ファイルがそれぞれ正確に20Mbである必要はありません。
Nam G VU

可能-スクリプトを使用したWindowsでそれをどのように行うかわからない-以前はLinuxでPerlを使用していました。
Majenko

2

私はこれが古いスレッドであることを知っていますが、これを7-zipで実行しました

「ボリュームに分割」オプションを使用する必要があります。

ここに画像の説明を入力してください


涼しい。後でやり直します。
Nam G VU

1
この特定のシナリオでは機能しません。小さいzipファイルを単独で解凍することはできないためです。それらは一緒に保管する必要があります。
眉間のある

2

Daveは、 OPが要求したものに最も近いプログラム可能なソリューションを提供しているようです。私はそれを考え出した、これは手動で行うことができ、以下の仮定がとられている場合(これは純粋な技術的な問題、それはより多くのではないだけでなく、組織の技術よりも問題):

  1. OPでは各zipファイルがすべてのコンテンツを個別に抽出できる必要があるため、zip実行後20 MBを超えるファイルは、次のいずれかの方法で処理する必要があります。
    • これらは考慮されないため、分離する必要があります。
    • 他の回答(winzip7-zip)が示唆するように、それらは20MBのボリュームに分割する必要があり、結果のファイルを個別に使用することはできません(この最初の仮定を破ります)。
  2. 圧縮ファイルは必ずしも正確に20MBである必要はありません。
  3. 約20MBのサイズのzipファイルをいくつか持つことがより重要な場合は、圧縮せずに圧縮を実行できます。

この方法を7-zip(Windowsのインターフェースと端末)で使用することにより、新しく生成されたzipファイルの圧縮を維持しました。

すべてのファイルを空のフォルダー(希望する圧縮方法で)などの単一のzipファイルに圧縮して開始しALL.zip、それを開きます。

  1. サイズまたはパックサイズ(圧縮)列をクリックして、ファイルとフォルダーのリストを注文します。
  2. 最小サイズから始め、zipにグループ化するファイル/フォルダーを選択します。
  3. Testボタンを押して、それらの集合サイズを確認します(これは圧縮を考慮します)。 テスト機能
  4. 押しExtractたりCopy、ボタン抽出パスの末尾に新しいフォルダの名前(例えば:追加しているときplu_8MB
  5. ALL.zipzip 内で、抽出したばかりのこれらのファイルを削除し(誤った再抽出を回避)、次のフォルダーまたはファイルのサブセットに移動します。
  6. 次のいずれかを繰り返します。
    • 独立したzipファイルを作成する場合は、手順1〜5。
    • 手順1〜3と同じフォルダー名を再利用し(手順4)、それらの合計サイズが約20MBになるまで、
  7. のすべてのコンテンツALL.zipを独立したフォルダーに抽出したら、そのzipを削除し、そのフォルダーでターミナル開きます
  8. タイプ:

    for /F %i in ('dir /b') do "C:\Program Files\7-zip\7z.exe" a -tzip %i.zip %i
    

    を押すENTERと、抽出したフォルダごとにzipファイルが生成されます。


再圧縮のさまざまなパラメーターについては、7zip構文のドキュメントをご覧ください。
CPHPython
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.