Tar dosyasını paketlediğiniz dizinde oluşturmayın:
tar -czf /tmp/workspace.tar.gz .
hile yapar, ancak paketi açtığınızda mevcut dizinin her yerine dosyaları çıkarır. Yapması daha iyi:
cd ..
tar -czf workspace.tar.gz workspace
veya içinde bulunduğunuz dizinin adını bilmiyorsanız:
base=$(basename $PWD)
cd ..
tar -czf $base.tar.gz $base
(Bu, bulunduğunuz yere ulaşmak için sembolik bağları takip etmediğinizi ve kabuğun bir sembolik bağ üzerinden geriye doğru atlayarak sizi ikinci kez tahmin etmeye çalışmadığını varsayar - bash
bu açıdan güvenilir değildir. Bunun için endişelenmeniz gerekiyorsa, kullanmak cd -P ..
fiziksel bir değişim dizini yapmak benim görünümünde varsayılan davranış değildir Aptal olduğunu -. en azından kimi için olanlar için, kafa karıştırıcı cd ..
. herhangi bir alternatif anlamı yoktu)
Tartışmadaki bir yorum şöyle diyor:
Ben [...] üst dizini dışarıda bırakmalıyım ve [...] tar'ı temel dizine yerleştirmem gerekiyor.
Yorumun ilk kısmı pek bir anlam ifade etmiyor - tar dosyası geçerli dizini içeriyorsa, bu arşivden dosya çıkardığınızda oluşturulmayacaktır çünkü tanım gereği mevcut dizin zaten mevcuttur (çok garip durumlar hariç ).
Yorumun ikinci kısmı iki yoldan biriyle ele alınabilir:
- Ya: dosyayı başka bir yerde oluşturun -
/tmp
olası bir konumdur - ve tamamlandıktan sonra orijinal konumuna geri taşıyın.
- Veya: GNU Tar kullanıyorsanız
--exclude=workspace.tar.gz
seçeneği kullanın. Ardından gelen dize =
bir kalıptır - örnek en basit kalıptır - tam bir eşleşme. --exclude=./workspace.tar.gz
Önerilere aykırı olarak mevcut dizinde çalışıp çalışmadığınızı belirtmeniz gerekebilir ; --exclude=workspace/workspace.tar.gz
önerildiği gibi bir seviye üzerinde çalışıp çalışmadığınızı belirtmeniz gerekebilir . Hariç tutulacak birden fazla tar dosyanız varsa, ' *
' kullanın --exclude=./*.gz
.