Yanıtlar:
Tüm tar.gz
dosyalarda mı yoksa sadece bu dosyada mı olduğuna bağlıdır . Bu dosya bozuk olabilir ve bu nedenle düzgün açılmaz. Ekstresine tar kullanıyorsanız, kullanmak gerekir z
bir arşiv gzip'lenmiş zaman bu gerekli olarak, seçenek: tar xzvf <file.tar.gz>
. Alternatif olarak, onu çıkarmaya çalışmaya değergunzip <file.tar.gz>
Dosyanın bozuk olup olmadığını öğrenmek için gzip -t <file.tar.gz>
; bu komut dosyada hata olup olmadığını kontrol eder ve eğer bulunursa terminalde görünmelidir. Bu, dosyanın bozuk olup olmadığını belirtmelidir.
Dosya sağlamsa ve hata tekrarlanırsa, zero blocks
GNU tar'ın beklediği gibi bir dosyanın sonunda bir çift olmadığında oluşan katranla ilgili bilinen bir sorun olduğu anlamına gelir . Bunun çözümü, -i
yoksayma seçeneğini eklemektir zero blocks
. Bu yüzden kullanın tar ixzvf <file.tar.gz>
Sorun burada ayrıntılı olarak belgelenmiştir .
Aynı şey başıma da geldi çünkü stdout ve stderr'i stderr ve stdout'u (android adb terminal oturumu) ayırmayan bir kanaldan geçirdim .
Bu şekilde akışta bazı hata mesajları oluştu. Hatalı komut buydu:
Hatalı komut, adb kabuğu stderr ve stdout'u yerel olarak birleştirir => çöp! :
adb shell tar -cf - /some/dir \| uuencode bla | uudecode -o - > backup.tar
Sabit komut:
adb shell tar -cf - /some/dir 2>/dev/null\| uuencode bla | uudecode -o - > backup.tar
Stderr'ı / dev / null'a yönlendirmeyi unutursanız, SSH üzerinde benzer bir komut yaparsanız, bu hızlı katran ssh üzerinden akar.
ssh user@host tar -czf /some/remote/path 2\>/dev/null > /local/path/to/file.tar.gz
Geçen gün bu hatayı gzip ile sıkıştırılmamış bir arşivi açmaya çalıştım. Dosyanın kaynağı bana bilinmiyordu, ancak oluşturucunun cat
birkaç katranı tek bir dosyada birleştirmek için kullanabileceğini düşündüm . Bu, dosya sonu sıfır işaretleyicisinin tar
birleştirilmiş bir arşivin ortasındaki yardımcı program tarafından okunmasına ve böylece "Yalnız bir sıfır blok" hatası görüntülemesine neden oldu.
Bu durumda, --ignore-zeros
veya -i
seçenek bu hataları bastırmaya yardımcı olabilir. Bakınız man tar
veya bu bağlantıyı bir referans olarak.
RequestTTY yes
.-T Disable pseudo-tty allocation.
Benim için açıkça devre dışı bırakılabilir Benim için hatatar: Skipping to next header
aslında, yalnız sıfır blok ile denediğimde meydana geldi--posix
..