Tecnología · GUÍA PRÁCTICA
¿rsync termina con código 23? Identifica el objeto fallido antes de cambiar permisos
El código 23 indica al menos un error de transferencia, no diagnostica permisos. Vincula el error anterior con objeto, lado, operación y cuenta, y demuestra la entrega prevista.

La última línea con código 23 es un resumen. Conserva toda la salida y encuentra el primer fallo concreto antes de cambiar permisos, exclusiones u opciones de rsync.
Crea un registro del objeto, lado sender o receiver/generator, operación, errno y cuenta efectiva. Repara solo ese límite, repite el comando real y audita el conjunto previsto.
Conserva la ejecución exacta y el registro completo
Anota extremos, comando exacto, versiones de rsync, usuario remoto, directorio de trabajo y estado final. Guarda stdout y stderr desde el inicio o usa un log del cliente; la última línea 23 solo resume.
No empieces con sudo, chmod -R 777, exclusiones amplias ni reglas de ignorar. Cambian identidad o alcance antes de conocer el objeto fallido.
Clasifica el primer fallo concreto
Para cada error previo, registra ruta exacta, etiqueta sender/receiver/generator, operación open/stat/mkdir/write/rename/metadata y texto errno.
Separa autenticación remota, protocolo y código 24. Un permiso fallido y una verificación fallida necesitan pruebas y reparaciones distintas.
Reproduce el objeto con la misma cuenta
En origen prueba recorrido de padres, lookup, destino del enlace y lectura. En destino prueba recorrido, creación, escritura, cierre, renombrado y metadatos con un nombre desechable.
Usa la misma cuenta local o remota y el mismo contexto de montaje, contenedor o servicio. Comprueba espacio, inodos, cuota, solo lectura, ACL y mapeo solo cuando la operación registrada lo requiera.
Repara solo el límite demostrado
Corrige el propietario, ACL, montaje, capacidad, ruta ausente u opción que reproduce el fallo. Excluye solo cuando la omisión sea intencionada y cambies explícitamente el contrato.
Si una reproducción controlada muestra un fallo de versión, compara una versión corregida compatible o un cambio acotado. No lo generalices como arreglo de permisos.
Demuestra que llegó el conjunto previsto
Repite la transferencia real sin cambiar la intención y exige código 0. Después usa dry-run con itemized changes para detectar trabajo restante; usa checksum solo si la prueba adicional justifica su I/O.
Dry-run no envía datos y quizá no encuentre el mismo fallo del sistema, así que no sustituye la ejecución real. Cierra solo con éxito real y manifiesto sin omisiones inexplicadas.
