Info-Zip'de güncellemek yerine mevcut zip dosyasının üzerine nasıl yazılır?


30

Katran gibi taze bir zip dosyası elde etmek için rm foo.zipçalıştırmadan önce yapmam gerekir zipmi?

$ mkdir foo; touch foo/bar
$ zip -r foo.zip foo
  adding: foo/ (stored 0%)
  adding: foo/bar (stored 0%)
$ rm foo/bar; touch foo/baz
$ zip -r foo.zip foo
  adding: foo/ (stored 0%)
  adding: foo/baz (stored 0%)
$ unzip -l foo.zip
Archive:  foo.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  2011-10-27 07:49   foo/
        0  2011-10-27 07:49   foo/bar
        0  2011-10-27 07:49   foo/baz
---------                     -------
        0                     3 files

Yanıtlar:


31

"Dosya senkronizasyonu" için -FS seçeneğini kullanın

zip -FSr foo.zip foo

Bu, klasördeki yeni dosyaları zip'e ekler ve klasördeki olmayan zip dosyalarını siler.


Bu seçenek hangi zip sürümüne sahiptir? Zip
komutum

2
Anahtarıdır -FSdeğil -Fve -Sbirlikte. Bu, en az zip 3.0 beri orada olmuştur. Kontrol edin man zip.
Paul

"Yeni dosya" nasıl tanımlanır? Dosya boyutu değişir, tarih değiştirilebiliyor mu? Sadece merak ediyorum
Moseleyi

Bu sadece için çalışır Zip 3.0ve çalışmaz Zip 2.32(zip paketindeki eski dosyaları kaldırmadı)
Nabi KAZ

Yani demek -FS -ristiyorsun?
çığ1

0

-FSSeçeneği kullanmaya (veya eski ZIP dosyasını silmeye) ve kelimenin tam anlamıyla mevcut ZIP dosyasının üzerine yazmaya bir alternatif , zipçıktıyı stdin'e göndermek ve çıktıyı istediğiniz dosyaya yönlendirmektir:

zip -r - foo >foo.zip

Eğer foo.zip varsa, kabuk yönlendirme ile değiştirilecektir, yani her seferinde zamanın% 100'ünü yeni bir ZIP dosyası alacaksınız get


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.