Nasıl yapılır boru: cp | katran | ara dosyalar oluşturmadan gzip?


31

Pipo yapmanın mümkün olup olmadığını kimse söyleyebilir mi? bu, A ile B.tar.gz arasında herhangi bir yerde fiziksel bir dosya oluşturmak zorunda kalmadan?

Yapmaya çalıştığım şey bu:

  1. Dosya
  2. A'dan B'ye yeniden adlandırma
  3. Tar B.tar
  4. gzip -9 B.tar.gz

Yani örneğin:

cp A B | tar cvf - B | gzip -9 B.tar.gz
gzip  pipe  tar 

neden pipo yapmak istiyorsun cp A B?
Dor

1
yeniden adlandırmak mv.
Karoly Horvath

3
Kopyalamak istediğiniz neden açıklayınız Aiçin Bilk.
konuşma

Yanıtlar:


42

Ara dosyalar oluşturmamak için aşağıdaki örnekler kullanılabilir:

gzip ile katran:

tar cf - A | gzip -9 > B.tar.gz

tar olmadan gzip:

gzip -9c A > B.gz

gzip olmadan katran:

tar cf B.tar A

Yeniden adlandırma (hareketli) Aiçin Bilk önce bana mantıklı gelmiyor. Bu amaçlanıyorsa, mv A B &&yukarıdaki komutlardan herhangi birine bir kere koyun ve Aonunla değiştirin B.

Tar ve gzip ile örnek:

mv A B && tar cf - B | gzip -9 > B.tar.gz


1
Bu doğrudur ve böyle işaretlenmelidir. Borulu seçenek için "tar" dan sonra bir "-" eklemelisiniz, aksi takdirde "tar: Cowardly boş bir arşiv oluşturmayı reddediyorsunuz" olur.
Adambean,

6

Bu tar sürümüne bağlıdır

Üye dönüştürmelerini destekleyen bir sürüme sahipseniz (--transform veya --xform)

tar -c --transform=s/A/B/ A | gzip -9 > B.tar.gz

| katranınız -z seçeneğini destekliyorsa gzip -9> B.tar.gz önlenebilir

tar -zcvf B.tar.gz --transform=s/A/B/ A

Tar sürümünüz --transform'u desteklemiyorsa, önce dosyayı kopyalamanız gerekir, örneğin

 cp A B && tar -zcvf B.tar.gz B

Ancak sadece bir dosyayı sıkıştırıyorsanız, neden tar bölümünü birlikte atlamıyorsunuz?

cat A | gzip -9 > B.gz

Örnekte yaptığınız gibi cp kullandım ama yeniden adlandırmak mv

0

Eğer kullanıyorsanız cpfarklı bir ad / konumu ile bir kopyasını yapmak için, o zaman sadece doldurduğunuz .gzip dosyasını oluştururken istediğiniz tam / nihai yol adını içerir:

tar -cvf existing.file | gzip -1 > ./newdirectory/newnamed.file.tgz

Bu işe yaramıyor, "tar: Korkakça boş bir arşiv oluşturmayı reddediyor" üretiyor.
Adambean,

@Adambean Belki kullanmak istersiniz tar -czf - some-folder > some-archive.tar.gz?
tsauerwein

1
@tsauerwein, evet, 14 ay önce aşağıdaki cevaba cevabımı gör ...
Adambean
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.