Sıkıştırılmış dosyaları sıkıştırılmış bir klasöre ekleme


32

Zaten sıkıştırılmış bir klasöre sıkıştırılmış dosyaları eklemeye çalışıyorum diyelim new folder.zip. zip -r new folder.zipOnlara bazı açılmış dosyaları ekledikten sonra kullanmak mümkün mü ? Bu komut klasörü sıkıştırır mı? Bunu yapmak için herhangi bir alternatif var mı?


borularını açabilir, orijinal dosyayı açabilirsiniz | daha sonra yepyeni bir dosya oluşturacağınız şekilde tüm içeriği sıkıştırın. Bunu tek bir komutla nasıl yapacağını bilmiyorum.
unixmiah

Yanıtlar:


44

Güncelleme bayrağını kullanın: -u

Örnek:

zip -ur existing.zip myFolder

Bu komut sıkıştırıp ekleyecektir myFolder(ve içeriği) existing.zip.


Gelişmiş Kullanım:

Güncelleme bayrağı aslında gelen dosyaları var olanlarla karşılaştırır ve yeni dosyalar ekler veya var olanları günceller.

Bu nedenle, zip dosyası içine belirli bir alt dizin eklemek / güncellemek istiyorsanız, kaynağı istediğiniz gibi güncelleyin ve ardından tüm kaynağı -ubayrakla yeniden sıkıştırın. Sadece değiştirilen dosyalar sıkıştırılacaktır.

Kaynak dosyalara erişiminiz yoksa, zip dosyasını açabilir, daha sonra istediğiniz dosyaları güncelleyebilir ve ardından -ubayrakla yeniden zip yapabilirsiniz . Yine, sadece değiştirilen dosyalar sıkıştırılacaktır.

Örnek:

Orijinal Kaynak Yapısı


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

Güncellenen Kaynak Yapısı


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

kullanım

$ zip -ur existing.zip ParentDir 
> updating: ParentDir/ChildDir/Logs (stored 0%)
>   adding: ParentDir/ChildDir/Logs/logs4.txt (stored 96%)

Teşekkürler! Nasıl klasör belirtebilirsiniz içinde eklemek için zip?
Aaron Esau

Sorunuza cevap vermek için bir bölüm ekledim. :)
Ethan Strider

0

Bu komutu kullanarak dosya ekleyebileceğinizi düşünüyorum:

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

-rZip komutunun seçenek dosyaları ekleyerek yapmanızı sağlar.


-rözyinelemeli bir seçenektir.
ctrl-alt-delor

@richard, bunu düzelteceğim. Birkaç ver
ryekayo

@ richard, kaynaklardan çıktığımda, varolan bir sıkıştırılmış dosyayı değiştirmek için -r komutunu kullanabileceğinizi söylüyor: linuxnix.com/2014/05/…
ryekayo

2
add - Mevcut girişleri güncelle ve yeni dosyalar ekle. Arşiv yoksa, oluşturun. Bu, varsayılan moddur. (dosyaları değiştirmek veya eklemek için bir seçenek gerekmez. -rDizinler eklerken veya dizinler eklerken kullanılamaz. Eh, sadece dizini eklemek istediğiniz ve içerik içermeyen, istediğiniz zaman hemen hemen her zaman Kısacası, örnek doğru, ancak açıklama yanlıştır.) (Test etmek en iyisi, bu sadece kılavuzun yorumudur).
ctrl-alt-delor

2
Güvenlik nedeniyle, mevcut bir arşivi değiştirmek istediğinizden emin misiniz? Bunun yerine, en azından bir güvenlik kopyasını çıkardım, eklerim ve sonra da yenisini yapmadan önce arşivin bütünlüğünü tekrar kontrol ederim.
mdpc

0

-U bayrağı dosyalar için çalışır

zip -ur zip_to_upload.zip file_to_add.txt

Saygılarımızla


0

zipKomutu başarı ile kullandım . ile Yetiştirme (-g) seçeneğinde, sırayla bir alt klasör eklemek için folder1/folder2dosyaları içeren fileA.txtve fileB.txt:

zip -gr folder.zip folder1/folder2

-rtekrarlayan dir anlamına gelir .

Anladığım kadarıyla -g, zip dosyalarını büyütmeli, yeni bir zip dosyası oluşturmamalı (bu çok büyük zip arşivlerinde faydalı olabilir). Sorun olması durumunda önce folder.zip içinde (eg) ile alt klasörler oluşturmayı deneyebilirsiniz:

zip -g folder.zip folder1
zip -g folder.zip folder2

0

Zip arşivinizle aynı yerde çok fazla dosyanız varsa ve hepsini arşive kopyalamak istiyorsanız, şunları yapabilirsiniz:

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

Bu, zip dosyanızı ( -useçenek) yinelemeli olarak ( -risteğe bağlı), zip dosyası dışında bulunan tüm dosyalarla ( !zipfile’in olumsuzlamasıdır) günceller

Ardından, yukarıdaki aynı kuralı izleyerek zip dosyası dışındaki tüm dosyaları silebilirsiniz:

rm !(zipfile.zip)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.