Rsync Error 23: ¿Puedo saber qué archivos no se transfirieron?

32

Corrí sudo rsync -va --progressdesde la raíz de una unidad externa a una carpeta en otra unidad externa. La razón es que la unidad fuente tiene un NTFS con error y no tengo acceso a una PC con Windows para reparar el NTFS.

10 horas después dijo:

sent 608725204596 bytes  received 19365712 bytes  15902210.53 bytes/sec
total size is 608586212274  speedup is 1.00
rsync error: some files could not be transferred (code 23) at /SourceCache/rsync/rsync-42/rsync/main.c(992) [sender=2.6.9]

Guardé toda la salida del terminal. Al principio, hay unos cientos Input/output error (5)de archivos que en realidad no necesito por un total de aproximadamente 2 GB. OSX Finder "uso de disco" me dice que la fuente es de 617 mil millones de bytes, no 608 como en el informe anterior.

Preguntas:

  1. ¿La primera parte de la salida detallada (construir una lista de archivos) definitivamente dice Input/output error (5)CADA archivo que no se copiará?
  2. ¿ code 23Significa que todos los archivos, excepto los Input/output error (5)que fueron copiados con éxito?
el espejo
fuente
1
Posiblemente útil: los mensajes de error de rsync parecen comenzar con "rsync:", por lo que grep '^rsync: ' outputpueden ser útiles.
barrycarter

Respuestas:

19

23 solo significa (de la página del manual):

23 Transferencia parcial por error

Por todo lo que no se pudo transferir, recibirá un mensaje de error. Tenga en cuenta que los mensajes de error pueden ser sobre abrir o leer directorios, por lo que no verá necesariamente un mensaje de error para cada archivo que no se pudo transferir.

Si su fuente no ha cambiado, puede ejecutar rsyncnuevamente -npara ver qué transferiría esta vez sin hacer realmente la transferencia.

Acerca de la diferencia de bytes, rsyncle da el tamaño de los archivos (cuántos datos se pueden leer de ellos). ¿Estás seguro de Finderque no te dice el uso del disco ?

También tenga en cuenta que NTFS puede almacenar datos en secuencias o atributos alternativos de los archivos y, por rsynclo general, no transferirá (no tiene conocimiento de ellos) (y eso también puede representar mucho).

Stéphane Chazelas
fuente
Entonces, ¿está diciendo que TODOS los datos (no importa cuán corruptos) que no se transfirieron se enumeraron al principio como a Input/output error (5)?
themirror
con respecto a la diferencia de bytes: Sí, eso es correcto. Sin embargo, estoy confundido acerca de por qué la diferencia entre el informe de rsync y el "uso del disco" de Finder es de 9 mil millones de bytes, pero solo puedo identificar 2-3 mil millones de bytes de archivos que dicen Input/output error (5). ¿Puedes explicar?
themirror
1
@themirror, un archivo de 1 byte todavía necesitará algunos kilobytes asignados en el disco para almacenarlo (intente echo > file; du -k filever cuánto en el sistema de archivos de origen, pero en ntfs, generalmente es 4k). rsyncle dirá que el tamaño es 1, pero Finder podría decirle 4096 para ese archivo.
Stéphane Chazelas
@themirror, escriba su primer comentario, estoy diciendo que para todo (contenido del archivo, vea mi edición sobre transmisiones alternativas) que no se pudo transferir, obtendrá un error, pero si obtiene un directorio que no se puede leer / foo , entonces obviamente /foo/bary /foo/bar/baztampoco habrá sido transferido.
Stéphane Chazelas
17

Puede silenciar la salida sin errores de rsync utilizando el -qindicador de rsync .

-q, --quiet                 suppress non-error messages

Si vuelve a ejecutar rsync con el -qindicador, es probable que rsync siga fallando, pero al menos esta vez los mensajes de error que causen su problema no quedarán ocultos bajo líneas y líneas de mensajes de estado de transferencia de archivos.

Grimtech
fuente
2

Re: error 23-- La razón más común para tener este error es hacer que un error menor ingrese en la fuente rsync. Mire por encima de su comando de origen y asegúrese de que todo se comprueba contra ls, y busque cosas estúpidas y sutiles como un espacio extra o un problema de 1 l.

blut swaan
fuente
Sé que es una tontería, pero incluso tomé la ruta para seguir investigando el código hasta que me di cuenta de que había cometido este error tonto. ¡Gracias!
rburhum