Menambahkan file yang tidak di-zip ke folder zip

33

Saya mencoba menambahkan file yang tidak di-zip ke folder yang sudah di-zip katakan new folder.zip. Apakah mungkin untuk digunakan zip -r new folder.zipsetelah menambahkan beberapa file yang tidak di-zip? Apakah perintah ini akan memampatkan folder? Apakah ada alternatif untuk melakukan ini?

boo na
sumber
Anda dapat mem-pipe-nya, unzip file aslinya | kemudian kumpulkan seluruh konten seperti cara Anda membuat file baru. Saya tidak yakin bagaimana Anda akan melakukan ini dengan satu perintah.
unixmiah

Jawaban:

44

Gunakan bendera pembaruan: -u

Contoh:

zip -ur existing.zip myFolder

Perintah ini akan memampatkan dan menambahkan myFolder(dan isinya) ke existing.zip.


Penggunaan Lanjutan:

Bendera pembaruan sebenarnya membandingkan file yang masuk dengan yang ada dan akan menambah file baru, atau memperbarui yang sudah ada.

Oleh karena itu, jika Anda ingin menambahkan / memperbarui subdirektori tertentu di dalam file zip, perbarui saja sumber yang diinginkan, dan kemudian kembali zip seluruh sumber dengan -ubendera. Hanya file yang diubah yang akan di-zip.

Jika Anda tidak memiliki akses ke file sumber, Anda dapat membuka zip file zip, kemudian memperbarui file yang diinginkan, dan kemudian kembali zip dengan -ubendera. Sekali lagi, hanya file yang diubah yang akan di-zip.

Contoh:

Struktur Sumber Asli


ParentDir
├── file1.txt
├── file2.txt
├── ChildDir
│   ├── file3.txt
│   ├── Logs
│   │   ├── logs1.txt
│   │   ├── logs2.txt
│   │   ├── logs3.txt

Struktur Sumber yang Diperbarui


ParentDir
├── file1.txt
├── file2.txt
├── ChildDir
│   ├── file3.txt
│   ├── Logs
│   │   ├── logs1.txt
│   │   ├── logs2.txt
│   │   ├── logs3.txt 
│   │   ├── logs4.txt <-- NEW FILE 

Pemakaian

$ zip -ur existing.zip ParentDir 
> updating: ParentDir/ChildDir/Logs (stored 0%)
>   adding: ParentDir/ChildDir/Logs/logs4.txt (stored 96%)
Ethan Strider
sumber
Terima kasih! Bagaimana cara menentukan folder di zip untuk menambahkannya?
Aaron Esau
Saya menambahkan bagian untuk menjawab pertanyaan Anda. :)
Ethan Strider
0

Saya yakin Anda dapat menambahkan file menggunakan perintah ini:

zip -r zipfile.zip newfile.txt newfile1.txt

The -rpilihan untuk perintah zip memungkinkan Anda untuk menambahkan file.

ryekayo
sumber
-radalah opsi rekursif.
ctrl-alt-delor
@ Richard, saya akan memperbaikinya. Beri aku beberapa
ryekayo
@ Richard, ternyata sumber yang saya dapat dari mengatakan Anda dapat menggunakan perintah -r untuk memodifikasi file zip yang ada: linuxnix.com/2014/05/…
ryekayo
2
add - Perbarui entri yang ada dan tambahkan file baru. Jika arsip tidak ada, buatlah. Ini adalah mode default. (Apakah tidak ada pilihan yang diperlukan untuk mengganti atau menambahkan file. -rDapat digunakan jika menambahkan direktori, atau ketika tidak menambahkan direktori. Yah kapan saja Anda tidak ingin hanya menambahkan direktori dan tidak ada konten, jadi hampir sepanjang waktu Jadi singkatnya contohnya benar, tetapi penjelasannya salah.) (Terbaik untuk mengujinya, ini hanya interpretasi saya terhadap manual).
ctrl-alt-delor
2
Demi alasan keamanan, apakah Anda PASTI ingin memodifikasi arsip yang ada? Alih-alih saya setidaknya akan membuat salinan keamanan, melakukan penambahan, dan kemudian memeriksa kembali integritas arsip sebelum melakukan yang baru.
mdpc
0

Bendera -u berfungsi untuk file

zip -ur zip_to_upload.zip file_to_add.txt

Salam

David Lopes
sumber
0

Saya menggunakan dengan sukses zipperintah. dengan opsi tumbuh (-g), untuk menambahkan subfolder yang folder1/folder2berisi file fileA.txtdan fileB.txt:

zip -gr folder.zip folder1/folder2

-rberarti dir berulang .

Dari pemahaman saya -g harus menumbuhkan file zip, tidak membuat file zip baru (yang mungkin berguna dengan arsip zip yang sangat besar). Jika ada masalah, Anda dapat mencoba terlebih dahulu untuk membuat subfolder di folder.zip dengan (misalnya):

zip -g folder.zip folder1
zip -g folder.zip folder2
Fabiano Tarlao
sumber
0

Jika Anda memiliki banyak file di tempat yang sama dengan arsip zip Anda dan Anda ingin menyalin semuanya ke dalam arsip, Anda dapat melakukan:

zip -ur zipfile.zip !(zipfile.zip)

Ini memperbarui file zip Anda ( -uopsi) secara rekursif ( -ropsi) dengan semua file yang ditemukan kecuali file zip itu sendiri ( !adalah negasi dari file zip )

Kemudian, Anda cukup menghapus semua file kecuali file zip mengikuti aturan yang sama di atas:

rm !(zipfile.zip)
despina
sumber