¿Cómo interpretar y corregir un error de entrada / salida en Linux?

21

Estoy ejecutando una copia de seguridad diaria con rsync. A partir de hace unos días, uno de los archivos ha estado arrojando este error durante la copia de seguridad:

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

¿Cuál es el mejor curso de acción? ¿Es solo un archivo roto? ¿O hay algo mal con el disco duro en la ubicación del archivo? ¿Debo eliminarlo y copiar una de las versiones respaldadas en la ubicación del archivo? ¿O hay algo más / más que debería hacer?

descubrimiento
fuente

Respuestas:

17

El error de rsync

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

indica la imposibilidad de rsync para leer o escribir un archivo. Las causas más probables de este error son defectos de disco, ya sea en el SRC o en el directorio TGT. Sin embargo, otras posibilidades incluyen permisos insuficientes, bloqueo de archivos por programas antivirus y maybeotras causas.

El primer paso hacia un diagnóstico es intentar copiar los archivos manualmente. Esto puede funcionar si, por ejemplo, la fuente del error fue un defecto de disco en el directorio TGT; repitiendo la operación más adelante, escribirá en una sección diferente del disco y el problema puede haberse evaporado.

Alternativamente, puede descubrir que no puede acceder al archivo en el directorio SRC. En este caso, sugiero que emplee cualquiera de las utilidades de comprobación de disco disponibles para su distribución.

Privilegios insuficientes, antivirus, son más fáciles de diagnosticar.

Por último, si tiene un sector defectuoso en su directorio SRC, puede excluirlo de futuras ejecuciones de rsync por medio de

rsync -av --exclude='/home/my_name/directory_with_corrupt_files/*'
MariusMatutiae
fuente
¡Gracias! A riesgo de que esta sea otra pregunta, ¿cómo puedo saber si es el directorio SRC o el directorio TGT si puedo descartar privilegios o antivirus?
descubrimiento
Un antivirus bloquea los archivos por algún tiempo. Si ese es el problema, volver a intentar el mismo comando algún tiempo después no debería presentar el mismo error. La cuestión de los privilegios es fácil: use la cuenta raíz en las máquinas SRC y TGT. Si no puede hacerlo, verifique que los archivos en los que falla rsync sean accesibles para usted, es decir, pertenecen a la cuenta que intenta acceder a ellos, y si no lo hacen, usted tiene acceso de lectura. Si esto resuelve su problema, recuerde aceptar mi respuesta, es útil para otros lectores.
MariusMatutiae
Usted entendió mal mi comentario anterior. No importa, haré una nueva pregunta.
descubrimiento
TGT es solo objetivo, ¿verdad? Podría ser mejor decir objetivo, entonces.
Jasper
Parece que su respuesta dio origen a un artículo completo bobcares.com/blog/rsync-input-output-error_5 (sin referencias, por supuesto).
Yaroslav Nikitenko
3

Tuve un problema similar, tuve un dispositivo con fusible montado a través de USB, que con frecuencia se desconectaba, causando errores de E / S. Mi copia de seguridad nunca pudo finalizar porque los errores de IO comenzarían a mitad de camino en rsync y, a pesar de ejecutar rsync repetidamente, en algún momento la sincronización no avanzaría más allá de actualizar los archivos existentes.

Mi solución fue usar

--ignore-existing 

opción. De esta manera, podría ejecutar la sincronización en un bucle hasta ver un estado de salida 0.

Por supuesto, en este caso no me importaban las actualizaciones de los archivos existentes.

user84207
fuente
0

Tengo 2 unidades externas que mantengo sincronizadas, usando rsync. Realizo esta tarea regularmente en cualquiera de las dos máquinas, y con frecuencia cambio de una a la otra por conveniencia. Tengo 4 máquinas que ejecutan Debian 9, y uso estas unidades en cada una de ellas.

Esta mañana usé lo siguiente:

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

y me sorprendió tener unos cientos de fallas reportadas.

principalmente: rsync: readlink_stat... failed: Input/output error (5)
también:rsync: rsync: recv_generator: mkdir ... failed: Read-only file system (30)

En el proceso para averiguar qué sucedió, volví a montar las unidades dos veces, reinicié, ejecuté rsyncsin --deletey básicamente mis intentos normales de arreglar algo que funcionó de manera confiable durante mucho tiempo. Incluso pensé en instalar de rsyncnuevo. Antes de hacer eso, decidí rsyncusar las 2 unidades en la otra máquina, que ejecuto sin conexión. rsyncfuncionó exactamente como debería.

Después de leer el material publicado aquí, instalé clamav, actualicé las firmas y escaneé mi directorio de inicio. Lo uso regularmente en una máquina diferente. Encontré 1 y solo 1 PUA, y lo eliminé. Siempre borro los PUA. Luego volví a montar las dos unidades con esta máquina y agregué diferentes archivos y carpetas de prueba a cada unidad.

Corrí rsync -ahv --delete drive_x drive_yy todo funcionó bien.

usuario1003553
fuente