tar, “Stat stat değil: Böyle bir dizin dosyası yok” ifadesinden çıkar, neden?


50

Aşağıdaki komutu kullanarak tar.gz dosyası oluşturmaya çalışıyorum:

sudo tar -vcfz dvr_rdk_v1.tar.gz dvr_rdk/

Daha sonra dosyalar (klasördeki birçok dosya) oluşturmaya başlar, ancak aşağıdaki hatayı alıyorum:

tar: dvr_rdk_v1.tar.gz: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors

Bu hatanın açıklamasını göremiyorum, bu ne anlama geliyor?

Yanıtlar:


61

Kaldır -gelen vcfzseçeneklerden. tarseçenekler için kısa çizgi gerekmez.

Kısa çizgi ile, -fseçenek için bağımsız değişken z. Yani komut aslında arşivlemeye dvr_rdk_v1.tar.gzve dvr_rdkdenilen bir arşive girmeye çalışıyor z. Kısa çizgi olmadan, seçeneklerin semantiği değişir, böylece komut satırındaki bir sonraki argüman, yani arşivinizin dosya adı, fbayrak argümanı olur .

Ayrıca komutu yürüttüğünüz dizine yazma izninizi de kontrol edin.


6
Tire'ye ihtiyacı yoktur , ancak bir problem olmamalılar, sadece isteğe
bağlılar

18
@MichaelMrozek Aslında, bunu kaldırmak -fark yaratıyor çünkü GNU katranı ilginç. Bir başlamak vermediğinde Opsiyon argümanlar İlk bileşen olarak paketlenmiş edilemez -, bu nedenle argüman fyanındaki argümanı tarve bu yüzden tar vcfz dvr_rdk_v1.tar.gzeşdeğerdir tar -v -c -f dvr_rdk_v1.tar.gz -z.
Gilles 'SO- kötülük yapmayı kes'

1
Ayrıca kaldırdığımı zveya jarşiv sıkıştırma işleminin -dahil olsa bile başarılı olduğunu anladım . Tire eklendiğinde, seçenekdeki son karakteri "dosya" olarak kabul ediyor. Yani sonuç olarak ben olsun jveya zarşivlenmiş dosya olarak ben bu seçeneği kullanırsanız -cvfzveya -cvfj.
JohnnyQ

9
Özet: 'f', son seçenekten başka bir seçenek olarak ortaya çıkarsa, komut amaçlananı yapmaz. Bu kadar ciddi ve kolayca algılanabilen bir sorun tespit ettiklerinde Gnu'nun nasıl bir uyarı ekleyemediğini anlamıyorum. Sadece 40 dakika harcadım bu gariplik hata ayıklamak için. Bu, yüz binlerce insan saatlik üretkenliği boşa harcamış olmalı.
smci

57

-fSeçenek doğrudan dosya adı önce gelmelidir. Yani, tar -vczf filename.tar.gzyerine kullanın-vcfz


Ah bu ben denemeden kullanıyorum komut sıkıştırılmış arşiv olarak adlandırılan dosya oluşturmak için açıklıyor jya zbu komutlarla -cvfjve -cvfzsırasıyla.
JohnnyQ

17

Tar komutu tarihsel Unix takip etmez birkaç komutları biri olmuştur yarar sözdizimi kurallarına .

Tar için standartlar sayfası şöyle diyor:

f
İlk dosya işleyicisini (veya b önceden belirtilmişse ikincisini) sisteme bağımlı varsayılan yerine arşivin adı olarak kullanın

Sözdizimi yönergeleri şunları içerirken:

Kılavuz İlke 5:
Seçenek argümanları olmayan bir veya daha fazla seçenek, ardından bir seçenek argümanı alan en fazla bir seçenek takip eden bir '-' sınırlayıcısının arkasında gruplandırıldığında kabul edilmelidir.

Bu nedenle yazdığınız komut tar -vcfz dvr_rdk_v1.tar.gz dvr_rdk/, eski tar sürümlerinde iyi olurken, yardımcı program sözdizimi kurallarına kesinlikle uymak için yazılan bazı tar sürümleri, zbunu -f" dosya argümanı olarak kullanmak" anlamına gelecek şekilde ayrıştırır . Bu yüzden taşınabilir olmak için aşağıdakileri kullanmalısınız:

tar -cvzf dvr_rdk_v1.tar.gz dvr_rdk/

-1

Arşivi oluşturmak için

$ tar -cvf music.tar Music/

Bu dosya ve klasörlerin listesini gösterir

$ tar -tvf music.tar         

Ve tekrar çıkarmak

$ tar -xvf music.tar         

Bu onun hatasını gerçekten açıklamıyor, değil mi? Bu sadece kullanımını açıklıyor tar.
Bernhard

1
@Bernhard Eh, onun hatası diye kullanıyor olmasıydı targüzel olsa en azından önemli fark (hareketli ne söz, yanlış -fsonuna kadar)
Michael Mrozek

2
@MichaelMrozek Eh, doğrusu dışında kalan zkoymak daha fdolayısıyla, sonunda yorumumu.
Bernhard 19


TAMAM! üzgünüm, seni soruyu dinlemiyorum ama ubuntu için çalışan komut
dhamu
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.