tar: Keluar dengan status kegagalan karena kesalahan sebelumnya

78

Saya telah menulis sebuah skrip kecil yang berisi dan mengompres daftar direktori + file.

Skrip tersebut tampaknya berjalan dengan sukses, karena file .tar.gz yang dapat digunakan dibuat setelah skrip berjalan.

Namun, saya mendapatkan pesan yang menjengkelkan ini setelah skrip selesai:

tar: Keluar dengan status kegagalan karena kesalahan sebelumnya

Saya tidak melihat pesan kesalahan saat skrip berfungsi, dan seperti yang saya katakan, file yang dihasilkan dapat dikompres tanpa peringatan / kesalahan. Karena saya menggunakan ini sebagai bagian dari cadangan, saya ingin memastikan bahwa saya tidak mengabaikan sesuatu yang serius.

Apa alasan yang memungkinkan bahwa pesan kesalahan / peringatan ini diproduksi - dan dapatkah saya mengabaikannya dengan aman ?. Jika saya tidak dapat mengabaikannya, apa langkah-langkah untuk mendiagnosis dan menyelesaikan kesalahan?

Saya berjalan di Ubuntu 10.0.4

morf
sumber

Jawaban:

100

Anda akan mendapatkan pesan itu jika, karena alasan apa pun, tar tidak dapat menambahkan semua file yang ditentukan ke tar. Satu jika yang paling umum adalah tidak memiliki izin baca di salah satu file. Ini bisa menjadi masalah besar karena Anda menggunakan ini untuk cadangan. Jika Anda menggunakan -vbendera, coba tinggalkan. Ini harus mengurangi output dan membiarkan Anda melihat apa yang sedang terjadi.

KeithB
sumber
8
+1 untuk saran (saya menggunakan opsi 'verbose' sebelumnya). Saya menemukan bahwa ada masalah izin pada setidaknya satu file. Setidaknya sekarang saya tahu bagaimana menyelesaikannya. terima kasih banyak
morfus
ya menggunakan sudo memperbaiki masalah
whizcreed
membuang -v flag adalah saran yang bagus dan membantu saya memecahkan masalah saya. 'verbose' mengaburkan penyebab kegagalan di balik dinding teks
scottyseus
22

masalahnya adalah argumen, fargumen ambil berikutnya sebagai nama file, jadi itu harus menjadi argumen terakhir

tar cvzf output.tgz folder

atau

tar -cvzf output.tgz folder

sama dan tidak ada kesalahan take.

Andrea Monni
sumber
Memecahkan masalah saya. Saya mencoba tar -zcvfp memberikan kesalahan tetapi ketika mencoba tar -zxvpf maka semuanya baik-baik saja. Terima kasih.
Mian Asbat Ahmad
6

Terkadang mencadangkan file yang mungkin berubah selama pencadangan seperti file log, Anda mungkin menemukan opsi tar yang berguna '--ignore-gagal-baca' (Saya menggunakan Debian Linux, tidak yakin untuk non gnu tar).

Output dan kesalahan standar dapat dialihkan ke 2 file berbeda dengan sesuatu seperti:

LOGDIR='/var/log/mylogdir' 
LOG=${LOGDIR}/backup.log 
ERRLOG=${LOGDIR}/backup.error.log 
DATE=$(date +%Y-%m-%d)
HOSTNAME=$(hostname)
DATA_DIRS='/etc /home /root'

tar --ignore-failed-read -f ${BACKUP_DIR}/${HOSTNAME}-${DATE}.tgz -cvz ${DATA_DIRS} > $LOG 2> $ERRLOG

Saya menemukan ini umumnya aman, tapi harap berhati-hati karena tar tidak akan berhenti ...

Fabio Pedrazzoli
sumber
5

Saya mengalami masalah yang sama dan tidak ada jawaban di atas yang bekerja untuk saya. Namun, saya menemukan bahwa menjalankan perintah berikut berhasil:

tar -cpzf /backups/fullbackup.tar.gz --exclude=backups --exclude=proc --exclude=tmp --exclude=mnt --exclude=sys --exclude=dev --exclude=run /

Kesalahan yang dirujuk tar: Exiting with failure status due to previous errorsdapat diidentifikasi dengan mematikan opsi -v. Setelah ditinjau, kesalahan berasal dari direktori seperti /rundan /sys.

Dengan mengecualikan direktori ini, itu berfungsi dengan baik. Semoga ini bisa membantu siapa pun dengan masalah serupa.

DomainsFeatured
sumber
3

Saya memiliki masalah yang sama. Yang saya lakukan adalah menghapus tanda hubung ("-") dari perintah.

Alih-alih mengetiknya sebagai

folder tar -cvfz output.tar.gz /

coba ketikkan sebagai

folder tar cvfz output.tar.gz /

Saya tidak mengetahui mengapa tanda hubung menyebabkan masalah dalam kasus saya tetapi setidaknya itu berhasil.

mendongkrak
sumber
6
Anda mungkin menguji ini dengan GNU tar. Kebingungan Anda berasal dari kenyataan bahwa ia menerima dua gaya opsi yang berbeda - opsi tar "gaya lama" tanpa tanda hubung dan opsi "standar unix" dengan tanda hubung. Opsi dengan tanda hubung membutuhkan argumen opsi untuk mengikuti opsi. Jadi dalam hal ini argumen untuk -fharus output.tar.gzdan tidak boleh ada zdi antara keduanya. Tanpa kembali memesan satu pilihan dengan benar akan menjadi: tar -cvf output.tar.gz -z folder/. Gaya lama mengharapkan semua opsi di satu tempat dan semua argumen mengikuti.
pabouk
Lihat dokumentasi tar GNU dan juga misalnya halaman manual tar Tru64 UNIX .
pabouk
@ poabuk Komentar itu sepertinya layak menjadi jawaban dengan sendirinya. Harap tambahkan konten komentar itu sebagai jawaban untuk pertanyaan ini sehingga kredit masuk ke tempat kredit jatuh tempo.
cwallenpoole
Saya juga punya masalah, tapi itu adalah file dengan nama -v jadi rupanya tar memiliki beberapa bug berkaitan dengan file apa yang dapat dicadangkan ... ini seharusnya tidak menjadi masalah. solusi saya karena rm dan mv tidak akan berfungsi, adalah menggunakan file manager. jadi rupanya mv dan rm juga bermasalah. saya mencoba mv '-v' v dan rm '-v' tetapi mendapat pesan kesalahan. tar menyebutkan itu tidak bisa membuat stat file tar. menggunakan -cfjv
Jim Michaels
1

Anda salah mengerti jawaban sebelumnya. Masalahnya bukan -, itu adalah di mana fada dalam daftar argumen Anda.

tar cvfz target.tgz <files>

Akan mencoba membuat arsip yang disebut "z", karena itu adalah teks setelahnya f. Pesan kesalahan adalah karena tar tidak dapat menemukan "target.gz" untuk ditambahkan ke arsip "z".

tar cvzf target.tgz <files>

Akan membuat target.tgz dengan benar dan menambahkan file ke sana. Ini karena target.tgz adalah teks pertama setelah fargumen.

Thornbury
sumber
Ini harus ditambahkan sebagai komentar pada balasan "bingung". Sayangnya Anda akan diizinkan untuk menambahkan komentar seperti itu hanya setelah mendapatkan 50 poin reputasi. Untuk subjek: Apakah Anda mengujinya? Saya mengujinya dengan GNU tar 1.26 dan varian dengan dan tanpa tanda hubung benar-benar berbeda seperti yang dijelaskan dalam balasan jack. Berperilaku seperti yang tertulis di balasan.
pabouk
0

Biasanya Anda dapat mengabaikan pesan itu. Jika ada perubahan (seperti penghapusan file / kreasi / modifikasi) ke pohon direktori yang mendasari selama pembuatan tar, itu akan membuang pesan itu. Juga jika ada file khusus seperti node perangkat, fifos dan sebagainya, mereka akan menyebabkan peringatan itu.

Apakah Anda yakin tidak dapat melihat file pelakunya? Coba dengantar cvfz yourtarball.tgz /your/path

Janne Pikkarainen
sumber
0

Saya memiliki masalah yang serupa dengan membuka file yang telah saya terima. Ternyata saya tidak punya izin untuk menulis file di arsip yang dimiliki oleh root. Menggunakan sudo memperbaikinya.

ttwalkertt
sumber
0

Salah satu alasan untuk mendapatkan kesalahan ini untuk pemula adalah itu
Mereka lupa melakukan operasi di direktori tempat file berada
Pergi ke lokasi itu dan lakukan perintah 
Karena file saya ada di desktop 
~ / Desktop # tar - cf done.tar abc xyz
Di mana xyz dan abc adalah file dan kami menyimpan file-file itu di done.tar
Jika kita pergi dan melakukan perintah di lokasi lain kita akan mendapatkan kesalahan di atas 

Ravi Teja Mureboina
sumber