Tar -xvf varolan dosyaları dizinden kaldırır mı?


10

Katran arşivim var ve kullanmak istiyorum tar -xvf.
Bu tar arşivinde birkaç dosya içeren bir dizin ağacı var. Solaris 10 sistemimde bu dizin ağacı zaten var ve içinde birkaç dosya var.
Eğer arşivi açarsam, dizin ağacının tamamı üzerine yazılır mı yoksa yalnızca arşivde bulunan dosyaların üzerine yazılır mı?
Arşivinde muhabiri olmayan dosyalar silinecek mi?


Her zaman bir test .tar ve bir test dizini oluşturabilir ve deneyebilirsiniz ... kendinizle gelen bir cevap, burada herhangi biri tarafından size verilen bir cevaptan çok daha uzun sürecektir.
Jarvin

Cevap hayır. Yeterince fazla düşünürseniz, bir arşivden dosyaları ayıklamak için bir programın tamamen ilgisiz dosyaları silmesinin bir anlamı olmadığını fark edeceksiniz.
Fosco

Yanıtlar:


6

Zaten var olan yinelenen dosyalar sisteminize bağlı olarak paketten çıkarılabilir veya üzerine yazılamayabilir. Ancak, genellikle varsayılan olarak yapar. Arşivde bulunan ancak sisteminizde bulunmayan dosyalar, sisteminizdeki yeni veya mevcut dizinlere eklenir.

dir /test

/1/a
c

Arşiv test.tar

/1/b
d

muhtemelen aşağıdakilerle birleştirilecek:

/1/a
/1/b
c
d

Ekleme -ktar komutuna bayrağını üzerine yazılır hedef dizindeki dosyaların emin hiçbiri yapacaktır:

tar -xvkf test.tar

@BP: Üzerine yazma işlemi, csh (Sun üzerinde hala varsayılan kabuk?) Kabuk ayarına bağlı olabilir ve ayarlandığında yanlışlıkla üzerine yazma davranışını önleyen bir "noclobber" kabuk değişkeni olabilir.
hotei

Teşekkürler BloodPhilia ve hotei. Sistemim üzerinde bir test yaptım ve tar -xvf zaten var olan dosyaların üzerine yazar ve var olmayanları ekler. Bilmek istediğim, tüm bir dizinin üzerine yazılması ve bu nedenle sistemimde bulunan ancak arşivde bulunmayan dosyaları kaybetme olasılığı varsa? Örneğin: dir.tar dizininde / dosya2'de var. Sistemimde dir / file1, dir / file2 ve dir / file3 var. Tar -xvf dir.tar komutunu gerçekleştirirsem tüm dizinin üzerine yazılır ve artık dosya1 ve dosya3 içermez mi?
Felicia

@hotei: noclobber(POSIX kabuklarında da bulunur) btw yalnızca >fookabukta yeniden yönlendirilen dosyaları etkiler . Katran üzerinde hiçbir etkisi yoktur.
Gilles 'SO- kötü olmayı kes

@hotei noclobber, kabuktaki yeniden yönlendirme yoluyla dosyaların üzerine yazmanızı önler. Yani echo foo > bar.txtdeğil üzerine yazma bar.txt varsa olacak. Katran gibi bir programın üzerine ne yazacağı üzerinde hiçbir etkisi yoktur.
KeithB

1
@Felicia: Single Unix'e göre tar, arşivde bulunmayan dosyaları silmeyecek. Mevcut dosyaların arşivdeki içeriklerle (modlarla değil) üzerine yazılır. Etrafında uyumlu olmayan katranlar olabilir, ancak bunlardan herhangi birinin ilgili olmayan dosyaların üzerine yazacağından şüpheliyim dir/file1.
Gilles 'SO- kötü olmayı kes

0

En kolay yol, yeni, boş bir dizin yapmak, ona cd yazmak ve orada dosyaları ayıklamaktır. Çıkarılan dosyaların göreceli (./ ile başlayın) ve mutlak değil (/ ile başlayın) olmasına dikkat etmelisiniz. Bilmiyorsanız hangi durumda olduğunu görmek için içindekiler tablosunu daha az sıkın (tar -tvf tar_filename | less)

Tar sayfanızın varsayılan olarak üzerine yazıp yazmadığını man sayfasına bakarak öğrenebilirsiniz. Tar, ayıklama sırasında dosyaları silmez, bu da insanların ayıklamadan önce genellikle yeni, boş bir dizinden başlamasının bir başka nedenidir.

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.