tar command - sembolleri atla


13

Tar komutunu şu şekilde kullanıyorum,

tar -cvf protTests.tar protTests/*

için tarklasörü içindeki tüm dosyaları, protTests. Ancak bu, klasörün içinde istenen bir simge olmayan sembolik bağlantıları da içerir.

Tüm sembolik bağlantıları dışarıda bırakacak bir komut satırı seçeneği var mı?

Yanıtlar:


11

Bunu , sembolik olanlar dışındaki tartüm dosyaların bir listesini sağlamak protTestsiçin yapabilirsiniz:

find protTests -maxdepth 1 -mindepth 1 -not -type l -print0 |
  tar --null --files-from - -cvf protTests.tar

Bu arada, mevcut komutunuz:

tar -cvf protTests.tar protTests/*

içindeki tüm dosyaları arşivlemez protTests, yalnızca adları başlamamış .olanları (gizli olmayanları) arşivler . *Glob operatör isimleri ile başlayan dosyaları atlar .tasarım gereği. Komut ayrıca, protTestsçok sayıda dosya (binden fazla) varsa, protTests/*komut satırına sığacak kadar çok bağımsız değişkene genişletilebilme sorununa sahiptir .

Bunun gibi daha basit bir komutun bu sorunlardan hiçbiri olmayacaktır:

tar -cvf protTests.tar protTests

1
Tar'ın seçeneği yok --files-from, bu gtar'dan bir seçenek, bu yüzden böyle bir tavsiyede bulunuyorsunuz, bunun gtar'a özgü olduğunu daha iyi belirtin. Bulun birincil özelliği yoktur -not, bu başka bir taşınabilir olmayan GNUizmdir. Genel olarak, ayrı bir arama çağrısı kullanmak kötü bir fikirdir. Bu, dosya adındaki komik karakterlerle ilgili sorunlar verebilir ve dosya sistemini taramak için hem bul hem de katran ihtiyacı olduğundan kesinlikle düşük bir performans sağlar. Bu sorunlar, libfind kullanan ve bu nedenle find kodunu içeren yıldız gibi programlar için geçerli değildir.
schily

Başka bir genel ipucu daha ekleyeyim: Bir UNIX programının satıcıya özel bir varyantına özgü bir tavsiye verirken, satıcıdan bahsetmek ve satıcıya özgü olması iyi bir uygulamadır. Bu genellikle yazılımın resmi isimleri kullanılarak yapılabilir, örn. Katran yerine gtar, vi yerine vim. Bunun UNIX ile ilgili bir bilgi platformu olduğunu unutmayın, bu nedenle genel olarak örnekler POSIX standardıyla uyumlu olmalıdır.
schily

Haklısın, @schily, bu GNU'ya özgü bir çözüm. Cevabınıza göre cevabınız stariyi bir alternatif ve ben bu nedenle cevabınızı iptal ettim. Ayrıca "komik karakterler" itirazına katılıyorum ama GNU'nun tarbir -0seçeneği olmadığı için bu bir ödünleşim. Ben do not bu durumda hiçbir sonuç gerçekten performans itiraz, katılıyorum.
Celada

2
@schily GNU hem tarve bsdtarbilgisi --files-fromve --null(ile kombine komik karakter sorunu kaldıran find'in -print0ya da -exec printf '%s\0' {} +). Ancak burada, muhtemelen --no-recursionseçeneği eklemek istersiniz . Bazı paxuygulamaların da bir -0seçeneği vardır.
Stéphane Chazelas

2
@schily Bu yorum iş parçacığının farklı sürümleri için savunuculuk yeri olmadığını hissediyorum tar. Lütfen sohbet et . Zaten çok uzun ve dini bir savaş gibi okuyor. OP bu noktada çalmazsa, hangi versiyonun tarkullanımda olduğunu düşünmüyorum . Ne tür bir Unix kullandıklarını bile bilmiyoruz.
Celada

-2

Katran uygulamam en iyi yöntem

star -cv -f out.tar -find protTests ! -type l

8
zsh: command not found: starOkuyucularınızın% 99'dan fazlasının sistemlerinizde olmayacağını bildiğiniz yardımcı programlardan bahsettiğinizde, onları nereden alacağınızı açıklayın. Ve kendi ürününüzden bahsettiğinizde bağlantıyı açıklamalısınız (bağlantıyı gönderip göndermediğinizden bağımsız olarak, bağlantıyı da gönderebilirsiniz).
Gilles 'SO- kötü olmayı kes

Günümüzde tipik bir Linux sistemi, varsayılan bir kurulumdan sonra çok sayıda önemli yazılımı kaçırır ve aynı zamanda bir çok işe yaramaz yazılım yüklenir. Bir Linux kullanıcısı eksik yazılımın nasıl kurulacağını ve sık sık tar kullanan kişilerin tipik olarak yıldız yüklü olduğunu bilmelidir.
schily

8
Sıklıkla katran kullanan insanların büyük bir çoğunluğu yıldız olmaktan çok hiç pax duymamışlardır.
Gilles 'SO- kötü olmayı kes

"Katran" adını verdiklerinde Linux üzerinde gtar kullandıklarını bilmeyen insanlar muhtemelen yine de önemseyen insanlar değillerdir. Star en eski ücretsiz katran uygulamasıdır ve çeşitli katran uygulamalarında görülen birçok özellik yıldızdan alınmıştır, o zaman neden orijinal hakkında konuşmuyorsunuz?
schily
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.