Error de eliminación del comando rsync "Error de IO encontrado - omitiendo la eliminación del archivo"

16

Uso el comando rsync para hacer una copia de seguridad de los archivos de uno de mi servidor ubuntu a otra máquina ubuntu. El servidor de respaldo activa un script que usa el comando rysnc. Aquí está el comando que uso

rsync -rltvh --partial --stats --exclude = .beagle / --exclude =. * --delete-after root @ live_server: / home / / home / live_server_backup / home >> /tmp/logfile.log 2> Y 1

live_server es ssh-able sin contraseña. Entonces funciona. Ahora el problema es con

- opción borrar después

Después de todo el archivo sincronizado. Al final puedo ver el procedimiento de eliminación skipped.logfile error es como

Error de E / S encontrado - omitiendo la eliminación del archivo

Cuando intenté encontrar el registro, se produjo un error al sincronizar el archivo

rsync: send_files no pudo abrir "/home/xyz/Desktop/PPT_session_1_context.pdf": Permiso denegado (13)

Por lo tanto, entiendo que rsync no pudo leer todos los archivos del destino por razones de seguridad, ya que está omitiendo la eliminación del archivo.

¿Hay alguna manera de hacer --delete-after work incluso si hay algún error de permiso? No quiero usar la eliminación forzada ya que será peligroso en alguna situación.

XemX
fuente
1
Pssst otra vez ... Realmente deberías.
Armel Larcier

Respuestas:

13

Nota adicional sobre este tema:

vanished fileno debería desencadenar la condición IO error encountered -- skipping file deletion, pero esto sucede a menudo cuando está creando una copia de seguridad de un sistema en vivo.

Esto está cubierto por el error rsync # 7809 ( https://bugzilla.samba.org/show_bug.cgi?id=7809 ) y debe resolverse en la próxima versión 3.1.0.

Mientras tanto, use:

--ignore-errors         delete even if there are I/O errors
reto
fuente
19

Desde la página de manual de rsync:

--ignore-errors         delete even if there are I/O errors

Eso resolverá su problema.

Animaciones Enfermas
fuente
2

Debe usar un archivo de exclusión para rsyncignorar los archivos que no puede leer. La lista se puede generar find . -exec test -r '{}'en el directorio de origen y luego se puede incluir en el formato de archivo de exclusión rsyncdeseado.

Kyle Jones
fuente
en realidad mi directorio fuente es bastante grande (10-12GB). Entonces, cada vez que encuentre archivos (sin permiso de lectura) no será una manera eficiente. ¿qué dices?
XemX
Ejecútelo una vez para crear la lista de exclusión y no lo vuelva a ejecutar a menos que se agregue un montón de nuevos archivos ilegibles. rsync está haciendo el mismo recorrido del árbol, por lo que no debería ser tan malo, de todos modos.
Kyle Jones
Si. Pero así es mi escenario. El directorio fuente diario puede introducir dichos archivos. y necesito hacer una copia de seguridad de los nuevos archivos en la máquina de copia de seguridad.
XemX
¿Hay una solución que funcione para esto? También uso rsync para copias de seguridad de un sistema en vivo y cuando hay un error de E / S en la máquina de lectura, los archivos se eliminan en la máquina de destino, ¡lo cual NO DEBE SUCEDER!
bzero