[TIP] rsync en modo dios.


Otro título sugerido: Como ejecutar rsync, pero copiando absolutamente todo, incluídos los tiempos de modificación, creación y acceso, softlinks, hardlinks, todo, para que el resultado final sea indistinguible de la magia.

Me dejo a mi mismo como siempre, pero también a la posteridad, este comando que tengo que googlear cada vez que necesito: como hacer para que a rsync no se le escape nada al copiar datos y que el source y destination sean idénticos en todos los aspectos que el sistema de archivos subyacentes lo permita. No porque no esté documentado en el manual, sino porque es más rápido tenerlo agendado en algún lado, para las pocas veces al año en que necesito copiar preservando -casi- todos los atributos con excepción de algunos pocos.

Un comando de la muerte, imposible de recordar y que tengo agendado bloguear al respecto desde el 2015 según veo.
Bueno, 8 años más tarde hoy lo tuve que googlear de nuevo porque lo necesité. Aprovechando la oportunidad, lo dejo documentado aquí para cada vez que lo necesitemos de nuevo. 


El comando en cuestión se ejecuta así:

rsync -rvpzHogt directorio_de_origen directorio_de_destino

Y debajo la explicación larga de qué hace cada cosa:

  • -r (Recursivo): no necesita explicación.
  • -v (Verbose): para el log detallado y progreso de lo que se está copiando.
  • -p (Preservar Tiempos): preservar los tiempos de modificación y acceso de los archivos copiados.
  • -z (Compresión): Compresión GZip, que solamente tiene sentido para copias en red o desde/hacia internet. Si no tenés que comprimir, el comando queda: rsync -Hogtrvp
  • -H (Preservar Hard Links): Preservar los hard links, que son múltiples nombres de archivo repartidos por tu file system, que apuntan al mismo archivo.
  • -o (Propietario): Preservar el propietario de los archivos copiados.
  • -g (Grupo): Preservar el grupo de los archivos copiados.
  • -t (Tiempos): Preservar los tiempos de modificación de los archivos copiados.
  • -a (Modo de Archivo, que deberías haber usado en realidad): Esta opción es un shortcut que engloba varias otras opciones, incluyendo -r, -l, -p, -t, -g, -o y -D. Preserva todas las características de los archivos originales, como permisos, propietario, grupo, tiempos de modificación, enlaces simbólicos y más. Suena a que te estoy puteando subliminalmente pero no, de verdad es el equivalente a todos esos flags.

Así que ahí tenés. Buena suerte encontrando una regla nemotécnica que te permita memorizar esto los flags necesarios: rsync -togprvzH
(Si, el orden de los flags no altera el producto).

Y acá el clickbait: si llegaste hasta acá, hábil sysadmin linuxero, y estabas prestando atención realmente, habrás notado que -a te evita tipear varios de los flags que puse en el comando de la muerte, con lo cual el verdadero comando, el que querés aprender para usar todos los días, el que ni sabías que hace tantas cosas es simplemente un rsync -av, con (a lo sumo) -H en algunos casos y -z o ambos, en otros.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Wordpress Hashcash needs javascript to work, but your browser has javascript disabled. Your comment will be queued in Akismet!