Bagaimana cara zip folder besar menjadi file kecil terbatas pada 20MB?

10

Saya mencari cara untuk zip folder besar menjadi banyak file 20 MB. Saya tidak ingin file zip dipecah menjadi yang lebih kecil. Sebagai gantinya saya ingin mengelompokkan beberapa sub file / folder ke dalam kelompok yang 20 MB ketika di-zip.

Jika Anda tahu cara melakukannya, tolong bantu!

Memperbarui

Saya perlu menggunakan file zip yang lebih kecil saja yang dapat di-unzip sendiri.

Tujuan saya adalah menggunakan virustotal.com untuk memindai folder besar.

Nam G VU
sumber
Adakah detail tentang sistem operasi yang Anda gunakan?
Pitto
@Pitto Saya menggunakan Windows-7
Nam G VU

Jawaban:

10

Di winzip: Tambahkan file ke zip baik dengan memulai winzip dan menambahkan atau drag dan drop ke winzip atau klik kanan pada file dan winzip 'tambahkan ke zip ...'

Kemudian di winzip:

Tindakan - Split di bagian bawah 'ukuran bagian' pilih 'ukuran lain' kemudian masukkan 20 dan pilih mb

Selesai!

Adolf bawang putih
sumber
4
Tetap di sisi bebas juga 7zip bekerja dengan sempurna :)
Pitto
3
Ini akan membagi file zip, dan kami tidak dapat menggunakan bagian yang dibelah sendiri.
Nam G VU
Omg sekarang saya mengerti lebih baik apa yang Anda cari ... Saya tidak bisa menemukan solusi apa pun untuk masalah Anda, lalu :( Bagaimana dengan menggunakan Malwarebytes Antimalware yang gratis dan luar biasa untuk memindai file secara lokal?
Pitto
6

Apa yang Anda usulkan pada dasarnya adalah variasi dari Masalah Knapsack , dengan sentuhan tambahan yang, karena kompresi file, Anda tidak mulai mengetahui berapa banyak "ransel" 20MB Anda yang akan ditempati oleh setiap item.

Solusi sepele, tentu saja, hanya dengan zip setiap file secara independen, tetapi gagal untuk mengurangi jumlah file, jadi saya curiga itu tidak akan menjadi solusi yang memuaskan.

Jika saya mengalami masalah ini, saya kira saya akan mulai dengan mengompres setiap file secara terpisah ke lokasi sementara (atau dalam memori, tanpa menuliskannya ke disk), hanya agar saya bisa mendapatkan perkiraan ukuran kompresi untuk masing-masing file. Dengan informasi itu, maka dimungkinkan untuk memutuskan file mana yang harus dikelompokkan bersama dengan salah satu pendekatan standar untuk Masalah Knapsack dan membuat file zip yang sebenarnya.

Dengan asumsi Anda memiliki bahasa scripting yang tersedia untuk Anda dan Anda tahu cara menggunakannya, saya berharap pendekatan ini cukup mudah untuk diotomatisasi; melakukannya secara manual akan sangat membosankan jika Anda memiliki lebih dari beberapa file untuk ditangani ...

Dave Sherohman
sumber
1
tidak bisakah Anda membuka zip dengan 'tanpa kompresi'? Melihat "pembaruan" op itu, tampaknya format file lebih penting daripada kompresi.
Mahal
1
Heh ... Poin bagus. Saya tidak menganggap penggunaan zip sebagai arsip sederhana tanpa mengompres.
Dave Sherohman
@ DavidSohohman Jadi bagaimana kita bisa melakukannya?
Nam G VU
5

Membiarkan zip melakukan pemisahan untuk Anda akan jauh lebih mudah untuk diotomatisasi daripada mencoba mencari tahu sendiri. Jika sasaran Anda adalah file zip 20MB, Anda harus memperkirakan ukuran terkompresi dari setiap file sebelum menambahkannya ke arsip. Apakah ada alasan Anda tidak ingin membiarkan zip melakukan pemisahan untuk Anda? Begini cara Anda melakukannya dengan gnu zip:

zip -s 20m -r myzip.zip mydir

Ini akan membuat 20MB file zip dengan nomor indeks tambahan dalam nama file.

SethG
sumber
4
Berdasarkan komentar OP untuk jawaban lain, sepertinya dia tidak ingin zip memecahnya secara otomatis karena Anda mendapatkan arsip tunggal yang mengharuskan semua file berfungsi dengan baik, tetapi ia ingin setiap bagian menjadi arsip yang lengkap, dapat digunakan, independen dari yang lain.
Dave Sherohman
4

Di Linux ada program bernama zipsplit yang melakukan hal ini. Itu bagian dari paket zip standar.

Itu bisa dijalankan seperti ini:

zipsplit bigfile.zip -n 20000000

untuk membagi bigfile.zip menjadi bagian-bagian dengan ukuran maksimal 20MB. Dan perhatikan bahwa masing-masing file berisi tidak akan terpecah. Dengan demikian setiap bagian dapat dibuka ritsletingnya secara individual. Yang juga berarti bahwa jika ada satu file yang tidak dapat masuk ke dalam ukuran bagian maks pemisahan tidak akan mungkin.

Pembaruan: Tampaknya ada juga binari untuk Windows di info-zip.org, khususnya di ftp://ftp.info-zip.org/pub/infozip/win32/zip300xn-x64.zip untuk Win 64.

Zitrax
sumber
3

Aku takut bukan prospek yang mudah.

Baru-baru ini saya menulis skrip untuk mengumpulkan file ke dalam subdirektori yang tidak lebih besar dari 4.3GB untuk penyimpanan yang mudah di DVD, tetapi ini semua tidak terkompresi.

Melakukannya dengan kompresi - sekarang ada tantangannya. Anda tidak dapat memprediksi ukuran file setelah kompresi - yang dapat Anda lakukan adalah terus menambahkan file ke zip dalam urutan ukuran hingga melebihi 20MB dan kemudian menghapus file terakhir menggantinya dengan yang lebih kecil sampai turun di bawah 20MB . Jika Anda menghabiskan semua file dan masih> 20MB maka cukup letakkan file terakhir dan lanjutkan ke zip berikutnya.

Agak rumit penulisan naskah dan proses yang agak lambat, menyakitkan.

Majenko
sumber
Di sini pikiran saya. Mengapa tidak mengelompokkan file / folder ke grup <= 20Mb yang tidak di-zip lalu zip? Kita tidak perlu file hasil .zip masing-masing tepat 20 MB.
Nam G VU
Kemungkinan - tidak yakin bagaimana Anda akan melakukannya di windows dengan scripting - Saya menggunakan Perl di Linux sebelumnya.
Majenko
2

Saya tahu ini adalah utas lama, tapi saya baru saja melakukannya dengan 7-zip .

Anda perlu menggunakan opsi "Split ke Volume":

masukkan deskripsi gambar di sini

Kevin Kuszyk
sumber
Keren. Saya akan mencoba dan kembali dengan Anda nanti.
Nam G VU
1
Tidak berfungsi untuk skenario khusus ini karena file zip yang lebih kecil tidak dapat di-unzip sendirian; mereka harus tetap bersama.
Browly
2

Dave tampaknya memberikan solusi terprogram yang paling dekat dengan apa yang diminta OP. Saya menemukan bahwa ini dapat dilakukan secara manual juga, jika asumsi berikut diambil (ini bukan masalah teknis murni - ini lebih merupakan masalah organisasi daripada teknis):

  1. Karena OP mengharuskan setiap file zip harus dapat mengekstraksi semua kontennya secara independen , file yang melebihi 20 MB setelah zip harus ditangani dengan salah satu cara berikut:
    • mereka tidak dipertimbangkan, dan karena itu harus dipisahkan;
    • mereka harus terpecah menjadi volume 20MB, sebagai jawaban lain yang disarankan ( winzip , 7-zip ), dan file yang dihasilkan tidak dapat digunakan secara terpisah (melanggar 1 ini st asumsi).
  2. File zip tidak perlu harus tepat 20MB.
  3. Jika lebih penting memiliki beberapa file zip dengan ukuran sekitar 20MB, maka zipping dapat dilakukan tanpa kompresi.

Dengan menggunakan metode ini dengan 7-zip (antarmuka dan terminal Windows), saya mempertahankan kompresi pada file zip yang baru dibuat.

Mulailah dengan zip semua file menjadi satu file zip di folder kosong (dengan metode kompresi yang Anda inginkan), misalnya ALL.zip, dan buka:

  1. Pesan daftar file dan folder dengan mengklik kolom ukuran atau ukuran (dikompresi);
  2. Mulai dari ukuran terkecil dan pilih file / folder yang ingin Anda kelompokkan menjadi zip;
  3. Tekan Testtombol untuk mengonfirmasi ukuran kolektif mereka (ini mempertimbangkan kompresi mereka): Fitur tes
  4. Tekan Extractatau Copytombol sambil menambahkan ke ujung jalan ekstraksi nama folder baru (misalnya: plu_8MB)
  5. Di dalam ALL.zipzip, hapus file-file ini yang baru saja Anda ekstrak (menghindari kesalahan ekstraksi ulang) dan navigasikan ke folder atau subset file berikutnya;
  6. Ulangi salah satu dari yang berikut:
    • langkah 1 hingga 5 jika Anda berencana untuk membuat file zip independen;
    • langkah 1 hingga 3 dan menggunakan kembali nama folder yang sama (langkah 4) sampai ukuran kolektifnya sekitar 20MB;
  7. Setelah Anda mengekstraksi semua konten ALL.zipke folder independen, hapus zip itu, dan buka terminal di folder itu ;
  8. Tipe:

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

    Tekan ENTERdan ini akan menghasilkan file zip untuk setiap folder yang baru saja Anda ekstrak.

CPHPython
sumber
Untuk parameter berbeda dalam kompresi, berikut adalah dokumentasi sintaks 7zip .
CPHPython