Unix komut satırında nasıl zip / unzip yapabilirim?


541

Zip arşivlerini komut satırından nasıl oluşturabilir ve çıkarabilirim?


3
@ joachim, bir sorudaki soruyu sormalı ve bir cevapta cevap vermelisin. Kendi sorularınızı yanıtlamakla ilgili bir sorun yok, ancak sorunun kendisinin bir parçası olarak değil, çünkü bu, SO'nun en iyi cevap veren topluluğun tüm avantajlarını bozuyor. Ayrıca, programlama ile ilgili olmadığı için bu muhtemelen süper kullanıcı için daha uygundur.

2
Giriş yapmayı unutursanız, nasıl çevrimiçi olunacağını ve SO'yu nasıl kontrol edebileceğinizi belgeleyeceksiniz?

@ rlb.usa: Birçok farklı sunucuda birçok farklı yerde çalışıyorum. SA'yı bunun gibi bir not için kullanmak, gördüğüm gibi diğer insanlara da yardımcı oluyor.
joachim

Yanıtlar:


663

Tipik olarak bir kullanan tarsıkıştırılmamış arşiv ve ya oluşturmak için gzipya da bzip2bu arşiv sıkıştırmak. Karşılık gelen gunzipve bunzip2komutları bahsedilen arşivi açmak için kullanılabilir, ya da sadece taraçma işlemini gerçekleştirmek için komuttaki bayrakları kullanabilirsiniz .

Özellikle Zip dosyası biçimini kastediyorsanız , basitçe zipve unzipkomutlarını kullanabilirsiniz .

Sıkıştırmak için:

zip squash.zip file1 file2 file3

veya bir dizini sıkıştırmak için

zip -r squash.zip dir1

Sıkıştırmak için:

unzip squash.zip

bu, geçerli çalışma dizininizdeki dosyayı açar.


72
Şahsen ben sadece zip -r9 archive.zip files...sözdizimini kullanırım (-r = özyinelemeli -9 = maksimum sıkıştırma).
amfetamachine

3
Sadece bir not olarak: zip.ZIP arşivlerinin birçok farklı tadı olabilir, ayrıca birçok farklı kompresör kullanabilirsiniz. Öte yandan, aynı şekilde adlandırılan diğer birçok sıkıştırma aracı vardır: 7-Zip, gzip, bzip2, rzip, vb. Değiştirilemez.
polemon

5
Ana dizinin eklenmesini istemiyorsanız:cd dir1; zip -r ../squash.zip *
Marinos An

Kafam karıştı, bunu yaptım ve uzun bir ihlal ve çekiş listesi aldım, ancak dizini kontrol ettiğimde boş, orijinal zip dosyası için kaydetilsin mi? Hepsi nereye gidiyor?
Yaz Geliştirici:

11
Kayıt için, tüm dosyaları doğrudan geçerli dizine yerleştirmek yerine, unzip -d myfolder squash.zipayrı bir yeni dizine ( myfolder) çıkarmak için kullanın; bu, zip dosyası üst düzeyde birçok dosya ve dizin içeriyorsa can sıkıcı olabilir. Bu, çoğu UI çözme aracının nasıl çalıştığını taklit eder.
Alexander Klimetschek

64

UNIX türevleri altında sıkıştırıp açmanın gerçekten çok sayıda farklı yolu vardır, bu yüzden belirli bir dosya biçiminden ziyade genel anlamda "zip" demek istediğinizi varsayacağım .

Dosyaları GNU tarprogramı ile (sıkıştırılmış biçimde) sıkıştırabilirsiniz :

tar -zcvf myfile.tgz .

Bu geçerli dizini yapacak. .Başka bir şey istiyorsanız, diğer dosya adları ile değiştirin .

Bu dosyayı açmak için aşağıdakileri kullanın:

tar -zxvf myfile.tgz

Elbette bu tar, dosyaları bir arada bir arada kullanmanın yanı sıra sıkıştırma işlemini de yapabilme yeteneğine sahip olduğunuzu varsayar .

Eğer değilse, sadece sıkıştırma için tar cvfardından gzip(eğer varsa) ve gunzipardından kullanabilirsiniz tar xvf.


ZIP formatındaki dosyaların özel kullanımı için, indirmenizi 7zipve kullanmanızı öneririm - ZIP formatı da dahil olmak üzere çok çeşitli dosya formatlarını tanır .


Veya tar jcvf file.tar.bz2...bzip2 formatında veya tar Jcvf file.tar.xz ...xz sıkıştırmasında sıkıştırmak için kullanın.
OldTimer

4
Cevabınızı reddettim çünkü soru, tar dosyaları değil zip arşivleriyle nasıl başa çıkılacağı ile ilgili.
Denizyıldızı

3
@Starfish, bu kesinlikle sizin haklarınız dahilinde, en azından nedenini açıkladığınız için teşekkürler, pek çok insan bunu yapmak için zaman harcamıyor. bu yüzden daha net anlatacağım.

Katran arşivlerinin farklı platformlar arasında hareket ederken mac'ın linux veya tersi yönde düzgün çalışmayabileceğini unutmayın. Zip, tüm sistemlerde doğru çalıştığı için çok daha güvenlidir.
user1751825

Sanırım teknik olarak bu gzip, yani sorun değil. Sanırım. Açıkçası soru olsa ne istedi.
Bay

30

Eğer zip ve zip paketlerini kurmamışsanız ve java'nız varsa, açmak için kullanabilirsiniz jar:

jar -xf file.zip

3
Sunucum değil, unzip, zip, 7z, hiçbir şey ... Ve bu çalıştı. Teşekkürler!
Dariusz

2
Bu harika bir ipucu.
Denizyıldızı

29

Eh, çeşitli işletim sistemleri için dosya dağıtımı söz konusu olduğunda, 7-zip öneriyoruz .

Genellikle pakette p7zip, kendi 7z arşivlerinizi oluşturabileceğiniz 7zve 7zakomutunu alacaksınız .

7zaayrıca standart ( pkzip ) zip arşivlerini de açabilir (ve bunları -tzipanahtarla da oluşturabilirsiniz).

Sıkıştırma:

7za a archive.7z file1 file2 directory/

Açma:

7za x archive.7z

Ayrıca, -sfxanahtarla kendiliğinden açılan arşivler oluşturabilir :

7za a -sfx archive.exe files1 file2 dir

Windows kullanıcılarının 7z arşivi açamayacağı durumlarda bu yöntemi öneririm (bunun için bir araç önermek istemeniz durumunda: PeaZip ).

Tarball'larınızla aynı sıkıştırma algoritmasını kullanmak istiyorsanız, -Janahtarı kullanın tar:

tar cJf archive.tar.xz file1 file2 dir

xzsıkıştırma için LZMA2 kullanan, ancak çalışan , vb gz, çalışan bir UNIX aracıdır bz2. Hatta filtre olarak çalışır.

7z, UNIX'te tam dosya sistemi bilgisine sahip arşivler oluşturmaz, bu nedenle tar7z'yi kullanmadan önce kullanmanız gerekir (ancak 7z tardosyayla ilgili diğer bilgileri depoladığından xz, bunun için tasarlandığı gibi kullanmanızı öneririm ):

tar cf - file1 file2 dir | 7za z -si archive.tar.7z

2
Belki de bu cevabı eklemeliyim atool, bu birçok farklı kompresörü daha rahat kullanmayı kolaylaştıran küçük bir araçtır. Bunu bağlamak ave bir arşiv oluşturmak a arc.7z folder/basit bir hale gelir veya a arc.7z
çıkarır

21
unzip <filename>

ve

zip -r archive.zip <filename> [filename]

Bu komutların paket yöneticiniz tarafından yüklendiğinden emin olmanız gerekir. Komut satırında başka bir şey kullanmaktan daha zor değil. Tar ile arşiv oluşturmaktan kesinlikle daha basit.


Bunun eski bir konu olduğunu biliyorum ama bu en iyi cevap. 7z veya katran hakkında konuşmuyor, özlü ve doğrudan
Kyle

4

BSD Tar da bunu yapabilir

bsdtar acf bravo.zip alfa.jpg

Veya:

bsdtar xf bravo.zip

BSD tar, GNU tarve diğerlerine kıyasla birkaç ek sıkıştırma formatını destekleme avantajına sahiptir tar. En büyük yarar, belki de, bunun gibi bir sözdizimi kullanırken taryapmasıdır . Mutlaka kullanabilirsiniz 7z, unrar, unzipkomut ile, vs, ama onlar kullanmak farklı bir sözdizimi.
njsg

3

En standart cevap paxüzerine tavsiye edilir, hangi cpiove tar.

cpioVe POSIX'in aksine tar, ancak GNU gibi tar, paxhem dosyaları arşivleyebilir hem de arşivi sıkıştırabilir. Bu davranış, zipher dosyayı arşive koymadan önce sıkıştıran davranıştan farklıdır .


1
paxZip arşivlerini destekliyor mu ?
Denizyıldızı

Hayır ve paxarşivleri de desteklemiyor !
roblogic

2

Bu sadece çıkarımı kapsar.

Bunun için kullanmaya başladım dtrx.

Bunun amacı, karmaşıklığı ortadan kaldırmak. Böylece sadece herhangi bir arşive geçersiniz ve ne yapılması gerektiğini çözer. Zip, tar, gz ... Kullanımı her zaman aynıdır - dtrx archive.zip. Birkaç soru sorar ve bitirdiniz.

dtrxçoğu depoda bulunur, böylece apt| yumyükle.


1

Kendimi sık sık iş dizinimde değiştirilen dosyaları sıkıştırmaya çalışırken buluyorum - ya değiştirilen tüm dosyaları başka bir sanal alan çalışma dizinine kopyalamak ya da kısa bir süre için onları korumak için çünkü bazı değişiklikleri geri almak istiyorum.

Bu durumda, değiştirilen dosyaların listesini geçici bir dosyaya kopyalarım ve zipbu seçenekle birlikte kullanırım -@.

Foo.h, Bar.cc ve TestBar.cc dosyalarını değiştirdiğimi varsayalım.

Diyelim ki içeriği: modified-files.txt adlı bir dosya oluşturduğumda:

Foo.h
Bar.cc
TestBar.cc

Bu dosyaları sıkıştırmak için aşağıdaki komutu çalıştırıyorum:

cat modified-files.txt | zip modified-files.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.