Bagaimana menafsirkan dan memperbaiki kesalahan Input / output di Linux?

21

Saya menjalankan cadangan harian dengan rsync. Mulai beberapa hari yang lalu, salah satu file telah melempar kesalahan ini selama pencadangan:

rsync: read errors mapping "/home/folder/file.ext": Input/output error (5)
WARNING: /home/folder/file.ext failed verification -- update discarded (will try again).

Apa tindakan terbaik? Apakah ini hanya file yang rusak? Atau ada yang salah dengan hard drive di lokasi file? Haruskah saya menghapusnya dan menyalin salah satu versi yang dicadangkan ke lokasi file? Atau ada hal lain / lebih yang harus saya lakukan?

uncovery
sumber

Jawaban:

17

Kesalahan rsync

 read errors mapping ....: Input/output error (5)

menunjukkan ketidakmungkinan rsync untuk membaca atau menulis file. Penyebab kesalahan ini yang paling mungkin adalah kerusakan disk, baik di SRC atau di direktori TGT. Namun kemungkinan lain termasuk izin tidak mencukupi, kunci file oleh program anti-virus, dan maybepenyebab lainnya.

Langkah pertama menuju diagnosis adalah mencoba menyalin file secara manual. Ini dapat berfungsi jika, misalnya, sumber kesalahan adalah kerusakan disk di direktori TGT; dengan mengulangi operasi di lain waktu, Anda akan menulis ke bagian disk yang berbeda, dan masalahnya mungkin telah menguap.

Atau, Anda mungkin menemukan bahwa Anda tidak dapat mengakses file di direktori SRC. Dalam hal ini saya sarankan agar Anda menggunakan salah satu utilitas pemeriksaan disk yang tersedia untuk distro Anda.

Hak istimewa yang tidak memadai, anti-virus, lebih mudah didiagnosis.

Terakhir, jika Anda memiliki sektor yang buruk pada direktori SRC Anda, Anda dapat mengecualikannya dari rsync yang akan berjalan melalui

rsync -av --exclude='/home/my_name/directory_with_corrupt_files/*'
MariusMatutiae
sumber
Terima kasih! Dengan risiko ini menjadi pertanyaan lain, bagaimana cara mengetahui apakah itu SRC atau direktori TGT jika saya dapat mengesampingkan hak istimewa atau anti-virus?
uncovery
Anti-virus mengunci file selama beberapa waktu. Jika itu masalahnya, mencoba kembali perintah yang sama beberapa waktu kemudian seharusnya tidak menyajikan kesalahan yang sama. Masalah privilese itu mudah: gunakan akun root pada mesin SRC dan TGT. Jika Anda tidak dapat melakukan itu, periksa apakah file yang gagal rsync dapat diakses oleh Anda, yaitu file itu milik akun yang mencoba mengaksesnya, dan jika tidak, Anda memiliki akses baca ke sana. Jika ini menyelesaikan masalah Anda, mohon ingat untuk menerima jawaban saya, ini berguna untuk pembaca lain.
MariusMatutiae
Anda salah mengerti komentar saya di atas. Bagaimanapun, saya akan mengajukan pertanyaan baru.
uncovery
TGT hanya target, bukan? Mungkin lebih baik mengatakan target saja.
Jasper
Tampaknya jawaban Anda melahirkan seluruh artikel bobcares.com/blog/rsync-input-output-error_5 (tanpa referensi, tentu saja).
Yaroslav Nikitenko
3

Saya memiliki masalah yang sama, saya punya dengan perangkat yang dipasang sekering melalui USB, yang sering memutuskan, menyebabkan kesalahan IO. Cadangan saya tidak pernah bisa selesai karena kesalahan IO akan mulai pertengahan jalan ke rsync, dan meskipun menjalankan rsync berulang kali, pada beberapa titik sinkronisasi tidak akan berkembang melampaui memperbarui file yang ada.

Solusi saya adalah menggunakan

--ignore-existing 

pilihan. Dengan cara ini saya bisa menjalankan sinkronisasi dalam satu lingkaran sampai melihat status keluar 0.

Tentu saja, dalam hal ini saya tidak peduli dengan pembaruan untuk file yang ada.

pengguna84207
sumber
0

Saya memiliki 2 drive eksternal yang saya sinkronkan, gunakan rsync. Saya melakukan tugas ini secara teratur di salah satu dari dua mesin, dan sering beralih dari satu ke yang lain demi kenyamanan. Saya memiliki 4 mesin yang menjalankan Debian 9, dan menggunakan drive ini pada masing-masing.

Pagi ini saya menggunakan yang berikut:

rsync -ahv --delete drive-x drive-y 

dan terkejut melaporkan beberapa ratus kegagalan.

sebagian besar: rsync: readlink_stat... failed: Input/output error (5)
juga:rsync: rsync: recv_generator: mkdir ... failed: Read-only file system (30)

Dalam proses untuk mencari tahu apa yang terjadi, saya memasang kembali drive dua kali, reboot, berlari rsynctanpa --deletedan pada dasarnya normal saya mencoba untuk memperbaiki sesuatu yang andal bekerja untuk waktu yang lama. Bahkan berpikir untuk menginstal rsynclagi. Sebelum saya melakukan itu, saya memutuskan untuk rsync2 drive di komputer lain, yang saya jalankan offline. rsyncbekerja seperti seharusnya.

Setelah membaca materi yang diposting di sini, saya menginstal clamav, memperbarui tanda tangan, dan memindai direktori rumah saya. Saya menggunakan ini secara teratur di mesin yang berbeda. Saya menemukan 1 dan hanya 1 PUA, dan saya menghapusnya. Saya selalu menghapus PUA. Saya kemudian mencatat kembali dua drive dengan mesin ini, dan menambahkan file tes dan folder yang berbeda untuk setiap drive.

Saya berlari rsync -ahv --delete drive_x drive_ydan semuanya bekerja dengan baik.

pengguna1003553
sumber