rsync_backup.sh
Nombre: rsync_backup.sh
Autor: Fidel Ramos (haplo)
Lenguaje: sh/bash
Licencia: GPL
Propósito: realizar copias de seguridad de un directorio a una partición encriptada usando los algoritmos de copia inteligente de rsync. Yo lo uso para montar una partición en un disco duro externo USB, y tener una copia completa de mi directorio home (140 gigas).
Dependencias: rsync, cryptsetup
Código:
#!/bin/bash
unset PATH
MAPPER_NAME=encrypted_partition
MOUNT_POINT=/mnt/backup
BACKUP_DIR=$HOME
ECHO=/bin/echo
GREP=/bin/grep
MOUNT=/bin/mount
UMOUNT=/bin/umount
CRYPTSETUP=/sbin/cryptsetup
RSYNC=/usr/bin/rsync
$ECHO "Initiating backup to $MOUNT_POINT"
if $MOUNT | $GREP $MAPPER_NAME >/dev/null
then
$ECHO "$MOUNT_POINT already mounted."
else
if $CRYPTSETUP luksOpen /dev/sdb5 $MAPPER_NAME
then
$ECHO "cryptsetup luksOpen OK"
else
$ECHO "cryptsetup luksOpen of $MAPPER_NAME FAILED!!!"
exit 1
fi
if $MOUNT /dev/mapper/$MAPPER_NAME $MOUNT_POINT
then
$ECHO "mount OK"
else
$ECHO "mount to $MOUNT_POINT FAILED!!!"
exit 2
fi
fi
$ECHO "Initiating rsync backup"
if $RSYNC -av --delete $BACKUP_DIR $MOUNT_POINT
then
$ECHO "rsync completed successfully"
else
$ECHO "rsync FAILED!!!"
$ECHO "Backup partition still mounted at $MOUNT_POINT."
exit 3
fi
if $UMOUNT $MOUNT_POINT
then
$ECHO "umount OK"
else
$ECHO "umount of $MOUNT_POINT FAILED!!!"
exit 2
fi
if $CRYPTSETUP luksClose /dev/mapper/$MAPPER_NAME
then
$ECHO "cryptsetup luksClose OK"
else
$ECHO "cryptsetup luksClose of $MAPPER_NAME FAILED!!!"
exit 1
fi
$ECHO "Backup complete."
exit 0
Ejemplos de uso:
nexus:/home/haplo# sync_backup.sh
Initiating backup to /mnt/iomega_backup/
cryptsetup luksOpen OK
mount OK
(gran gran listado de ficheros actualizados y borrados)
rsync completed successfully
umount OK
cryptsetup luksClose OK
Backup complete.Comentarios:
Si no se quiere usar particiones cifradas se puede comentar los bloques relativos a cryptsetup.
Para crear la partición encriptada en el disco duro externo usé estos dos magníficos tutoriales:
http://www.hermann-uwe.de/blog/howto-disk-encryption-with-dm-crypt-luks-...
http://www.g-loaded.eu/2005/11/10/encrypt-devices-using-dm-crypt-and-luk...
El backup puede hacerse con la partición montada y mientras se trabaja con el sistema normalmente. Si ocurre algún error durante la copia con rsync bastaría con volver a ejecutar el script y dejar que siga.