Rsync 3.2.4 ya fue liberado y estas son sus novedades
Después de un año y medio de desarrollo se dio a conocer el lanzamiento de la nueva versión de Rsync 3.2.4, versión en la cual se han realizado una serie de mejoras y correcciones de errores.
Para quienes desconocen de Rsync, deben saber que esta es una utilidad de sincronización y respaldo de archivos que ofrece transmisión eficiente de datos incrementales, que opera también con datos comprimidos y cifrados.
Mediante una técnica de delta encoding, permite sincronizar archivos y directorios entre dos máquinas de una red o entre dos ubicaciones en una misma máquina, minimizando el volumen de datos transferidos.
Una característica importante de Rsync no encontrada en la mayoría de programas o protocolos es que la copia toma lugar con solo una transmisión en cada dirección. Rsync puede copiar o mostrar directorios contenidos y copia de archivos, opcionalmente usando compresión y recursión.
Actuando como un daemon de servidor, Rsync escucha por defecto el puerto TCP 873, sirviendo archivos en el protocolo nativo Rsync o vía un terminal remoto como RSH o SSH. En el último caso, el ejecutable del cliente Rsync debe ser instalado en el host local y remoto.
Principales novedades de Rsync 3.2.4
En esta nueva versión que se presenta de Rsync 3.2.4 se ha propuesto un nuevo método de protección de argumentos de la línea de comandos que se asemeja a la opción «–protect-args» («-s») disponible anteriormente, pero no interrumpe el script rrsync (rsync restringido).
La protección se reduce a los caracteres especiales de escape, incluidos los espacios, al pasar solicitudes a un intérprete de comandos externo. El nuevo método no escapa a los caracteres especiales dentro de un bloque entre comillas, lo que permite citar un nombre de archivo sin más escapes, por ejemplo, «rsync -aiv host: ‘a simple file.pdf’ ahora está permitido». Para devolver el comportamiento anterior, se proponen la opción «–old-args» y la variable de entorno «RSYNC_OLD_ARGS=1».
Otro de los cambios que se destaca de esta nueva version, es que se implementó la capacidad de actualizar los atributos xattrs para archivos en modo de solo lectura si el usuario tiene permiso para cambiar los derechos de acceso (por ejemplo, cuando se ejecuta como root).
Agregado y habilitado por el parámetro predeterminado «–info=NONREG» para mostrar advertencias sobre la transferencia de archivos especiales.
El script atomic-rsync se ha reescrito en Python y se ha ampliado con la capacidad de ignorar códigos de retorno distintos de cero. El valor predeterminado es ignorar el código 24, que se devuelve cuando los archivos desaparecen mientras se ejecuta rsync (por ejemplo, el código 24 se devuelve para los archivos temporales que estaban presentes en el momento de la indexación inicial pero que se eliminaron en el momento de la migración).
Se resolvió un problema de larga data con el manejo de caracteres de punto decimal en función de la configuración regional actual. Para scripts diseñados para procesar solo el carácter «.» en números, en caso de violación de la compatibilidad, puede establecer la configuración regional «C».
Ademas de que tambien se solucionó una vulnerabilidad (CVE- 2018-25032) en el código incluido de la biblioteca zlib que provoca un desbordamiento del búfer al intentar comprimir una secuencia de caracteres especialmente preparada.
De los demás cambios que se destacan de esta nueva versión:
- Se implementó la opción «–fsync» para llamar a la función fsync() en cada operación de archivo para vaciar la memoria caché del disco.
- El script rsync-ssl usa la opción «-verify_hostname» al acceder a openssl.
- Se agregó la opción «–copy-devices» para copiar archivos de dispositivos como archivos normales.
- Consumo de memoria reducido al transferir de forma incremental una gran cantidad de directorios pequeños.
- En la plataforma macOS, la opción «–atimes» está habilitada.
- El script rrsync (rsync restringido) se ha reescrito en Python.
- Se agregaron nuevas opciones «-munge», «-no-lock» y «-no-del».
- Las opciones de bloqueo «–copy-links» (-L), «–copy-dirlinks» (-k) y «–keep-dirlinks» (-K) están habilitadas por defecto para que los ataques que manipulan enlaces simbólicos a directorios sean mas dificil.
- El script munge-symlinks ha sido reescrito en Python.
Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.