Selama beberapa bulan terakhir saya telah menyalin beberapa folder data ke file zip pada interval mingguan. Sekarang saya ingin menggabungkan file zip tersebut menjadi satu file zip, karena sebagian besar isi file zip yang ada hanyalah versi berbeda dari file data yang sama.
Jadi jika sebuah file muncul di lebih dari satu file zip yang ada, saya ingin versi terbaru ada di file zip baru yang sedang dibuat. Tentu saja jika suatu file hanya muncul di satu file zip yang ada, maka saya juga menginginkannya di file zip final.
Saya mencoba menghindari keharusan unzip satu per satu ke folder yang berfungsi, menimpa data dari file zip yang lebih lama dengan data dari file zip yang lebih baru, dan kemudian rezipping semuanya menjadi file zip baru.
Dari apa yang saya mengerti, pkzip akan menggabungkan file zip sendiri, tetapi apakah ada metode gratis yang dapat diandalkan dan cepat yang dapat diceritakan orang kepada saya?
Jawaban:
Anda tidak akan menyukainya tetapi: membuka ritsleting segala sesuatu ke dalam folder yang berfungsi dengan urutan yang benar, kemudian zip hasilnya adalah cara yang paling efektif.
jika tidak, Anda akan berakhir dengan banyak siklus CPU yang terbuang:
.zip dengan memperbarui file di tengah) dan seluruh file harus ditulis ulang
jadi, saya hanya menggunakan ' unzip ' wiseley:
urutan unzip itu penting, saya tidak tahu pola nama zip Anda, tapi saya akan mengekstrak file zip terbaru terlebih dahulu, opsi '-u' unzip hanya menimpa file jika lebih baru atau membuat file jika tidak sudah disana. sebagai hasilnya, Anda hanya akan meng-unzip file-file terbaru dan meng-zip hasilnya hanya sekali.
sumber
zipmerge
gabungan utilitas ZIP arsip tanpa dekompresi dan re-mengompresi, misalnya.unzipping
/zipping
dan tidakuncompress / decompress
. Ya, jelas seseorang dapat mengambil satu entri2.zip
(gumpalan terkompresi) dan mentransfernya ke dalamfirst.zip
dan dengan demikian tidak ada "kompresi" harus dilakukan. Tetapi Anda harus mengekstrak gumpalan dari2.zip
, mencari keberadaan di TOCfirst.zip
, jika itu ada baik menggantikan entri yang ada (yang berarti Anda harus menulis ulang seluruh file pada dasarnya) atau menambahkannya di akhir - dan setelah itu Anda perlu tambahkan toc dari zip. Saya tidak melihat bagaimanazipmerge
bisa mencapai penggabungan entri-zip dengan cara yang berbeda (mengesampingkan kompresi)every file [...] has to be unzipped and then zipped again
- tidak ada, itulah yang Anda solusi tidak.in '2.zip' exists a file 'foobar.txt' and in '3.zip' exists another file 'foobar.txt'. merging it the way you want to merge it leads to 'compress it X times'
- tidak, tidak. Kenapa harus begitu?you add more content [...] and the whole file has to be rewritten
- tidak, Anda menulis output dalam satu pass. Mengapa ada orang yang meneguhkan ini?Cukup gunakan opsi -g ZIP, di mana Anda dapat menambahkan sejumlah file ZIP menjadi satu (tanpa mengekstrak yang lama). Ini akan menghemat waktu Anda secara signifikan.
Lihat juga zipmerge
sumber
-g
menambahkan file ke zip yang ada. itu tidak menggabungkan mereka. misalnya:zip -g result.zip other.zip
akan menambahkan fileother.zip
ke result.zip.
--grow Grow (tambahkan ke) arsip zip yang ditentukan, alih-alih membuat yang baru. Jika operasi ini gagal, zip mencoba mengembalikan arsip ke keadaan semula. Jika pemulihan gagal, arsip mungkin rusak. Opsi ini diabaikan ketika tidak ada arsip yang ada atau ketika setidaknya satu anggota arsip harus diperbarui atau dihapus.`Mungkin bukan yang Anda cari, tetapi alat membangun Ant gratis tidak mencakup kemampuan untuk menggabungkan Zipfiles.
https://ant.apache.org/manual/Tasks/zip.html
sumber
https://linux.die.net/man/1/zipmerge :
sumber
Saya pikir Anda bisa skrip file yang diekstraksi ke direktori temp.
Ada masalah dengan baris perintah ini. Saya tidak dapat menemukan cara untuk memesan unzipping arsip, sehingga arsip yang lebih lama dapat menimpa arsip yang lebih baru. Masalah ini dapat diatasi dengan menggunakan unzipper yang memiliki saklar baris perintah untuk hanya menimpa jika lebih baru. Saya terutama menggunakan 7-Zip yang tidak memiliki opsi baris perintah seperti itu.
Juga, perintah ini perlu pada semua file zip yang ada di direktori yang sama. Tidak masalah jika semua ritsleting memiliki nama unik. Yang mengatakan, perintah dapat diubah agar sesuai dengan situasi Anda.
for /f %f in ('dir /b *.zip') do "c:\program files\7-zip\7z" x %f -oc:\testdir -r -aoa
Untuk mengubah ini menggunakan program unzipping lain cukup ganti
"c:\program files\7-zip\7z" x %f -oc:\testdir -r -aoa
dengan perintah apa pun yang Anda akan lakukan pada setiap file. Gunakan%f
sebagai tempat penampung untuk nama file yang ingin Anda unzip.Saya mencoba mencari aplikasi yang dipoles, gratis atau tidak dan tidak benar-benar menemukannya.
Semoga ini akan memberi Anda awal yang baik dan WinZip atau yang serupa dapat mengatasi masalah yang ditimpa.
Semoga berhasil.
sumber
Jika saya ingat dengan benar, pkzip adalah program command-line.
Masih ada versi baris perintah ZIP yang mengklaim kompatibel dengan pkzip.
Ini disebut Info-ZIP dan harus ada versi untuk OS Anda.
sumber
Cari baris perintah winzip di internet. Winzip memiliki beberapa versi alat baris perintah agar sesuai dengan versi winzip apa pun yang mungkin Anda pasang. Alat baris perintah WZZIP memiliki opsi -f "freshen" yang akan mem-zip file yang lebih baru hanya dari mereka yang cocok dengan nama file dalam file zip output penjumlahan.
Gunakan WZunzip yang dibungkus dalam pernyataan FOR seperti yang ditunjukkan di atas untuk unzip satu file ke direktori kemudian WZzip -f untuk menambahkan file-file itu ke file zip penjumlahan output. Kemudian loop FOR mengulangi untuk bekerja pada file input berikutnya untuk output ke file output penjumlahan satu-satunya. Urutan file input tidak menjadi masalah karena WZzip -f hanya akan menambah file output jika data input lebih baru dari apa yang sudah ada dalam file output. Semua file yang tidak ada di file output juga akan ditambahkan. Kemudian Anda dapat mengekstrak hasil ke folder dan kemudian zip lagi untuk mendapatkan file hasil yang dikemas secara efisien. Anda bahkan dapat melakukan ini secara otomatis setelah loop FOR di akhir file batch.
sumber