sábado 11 de octubre de 2008

Copiar y sincronizar carpetas o ficheros con rsync

Otra utilidad open source imprescindible que nunca recuerdo con qué sintaxis he de utilizar:

nohost:~# nohup rsync -avvzu --progress /mnt/w2000/e/* /mnt/usb130/backup/comun 2>&1 | tee /tmp/rsync.backup.comun.log &

Con lo anterior copio en background (&) y sin peligro de abortar la ejecución en caso de perder la sesión (nohup) todo lo que hay en /mnt/w2000/e/ a /mnt/usb130/backup/comun, a la vez que mantengo un fichero de log en /tmp/rsync.backup.comun.log

Los modificadores del ejemplo son:

  • -a, --archive archive mode; same as -rlptgoD (no -H, -A)

    tal como indica el man, el modo archieve implica:

    -r, --recursive - recurse into directories
    -l, --links - copy symlinks as symlinks
    -p, --perms - preserve permissions
    -o, --owner - preserve owner (super-user only)
    -g, --group - preserve group
    -D same as --devices --specials
    -t, --times - preserve times

  • -z, --compress compress file data during the transfer

    Especialmente util en redes lentas dado que la información se transfiere comprimida.


  • -v, --verbose increase verbosity

    En el ejemplo utilizo un doble modificador -v para incrementar el nivel de log

  • -u, --update skip files that are newer on the receiver

    Aquellos ficheros que ya existan en el destino tengan una fecha más reciente o igual que en el origen, no se actualizan. Otra alternativa en este sentido es utilizar -c ...

    -c skip based on checksum

    ...que en lugar de actualizar los ficheros atendiendo a fecha, lo hará comparando el checksum del fichero en cada uno de los lados.

  • --progress show progress during transfer.

    Esta opción es de mayor utilidad si en lugar de lanzar el comando en background, lo hacemos en primer plano y queremos controlar el progreso de la transferencia.