Realizar copia de seguridad automáticamente en Linux (Ubuntu)

Voy a explicar la solución que estoy usando para realizar una copia de seguridad de varios directorios a un disco duro externo USB. El backup quiero que se ejecute automáticamente todos los días, aunque no haya hecho login (iniciar sesión) en mi Ubuntu.

Lo primero que haré será especificar a mi Ubuntu que quiero que me monte automáticamente el disco duro externo USB, para ello desde línea de comandos ejecutaré la siguiente orden:

sudo kate /etc/fstab

Si no tenéis instalado el editor de texto kate (por defecto viene instalado en Kubuntu) deberéis poner el que vosotros uséis normalmente.

Una vez abierto el fichero fstab tenemos que añadir una línea tal que esta:

/dev/sdc1 /media/AUX1 ntfs auto,rw,exec,users,dmask=000,fmask=111,nls=utf8 0 0

De esta manera indicaremos que el disco duro conectado al dispositivo USB sdc1 queremos que se monte automáticamente en /media/AUX1, con permisos de lectura escritura, para todos los usuarios, y estando el disco duro usando el sistema de archivos NTFS.

Si no sabemos en que device está conectado el disco duro, lo que haremos será conectar el disco duro al PC, y montarlo usando algunos de los mecanismos visuales que incluyen los escritorios GNOME o KDE. Una vez montado ejecutaremos:

sudo mount

y veremos una lista de todos los dispositivos montados en nuestro sistema.

Una vez editado el fichero fstab lo salvaremos y cerraremos el editor, con esto si tenemos el disco duro conectado al PC, cada vez que se arranque el sistema, se montará automáticamente.

Lo segundo es crear un archivo batch que especifique que copiar y a donde. Yo he llamado al fichero backup.sh, lo he creado en /home/misuario, y le he dado permisos de escritura, lectura y ejecución para todos los usuarios:

sudo chmod 777 /home/miusuario/backup.sh

Editamos el fichero, y añadimos lo siguiente:

mount -a

rsync -r -t -v –progress –delete -s /var/ftp /media/AUX1/
rsync -r -t -v –progress –delete -s /var/www /media/AUX1/

La primera línea es para asegurarnos que si por alguna razón no se han montado automáticamente los dispositivos indicados en el fichero fstab pues que lo haga ahora.

La segunda y tercera línea realizan la copia de dos directorios al disco duro externo USB. En el artículo anterior escribí como instalar la utilidad rsync (que sirve para sincronizar directorios).

El tercer paso es indicar al sistema que ejecute el fichero backup.sh todos los días a las 2:00h. Para realizarlo tendremos que editar el fichero /etc/crontab:

sudo kate /etc/crontab

Añadiendo esta línea:

* 2    * * *    root    /home/miusuario/backup.sh

Y listo, todos los días a las 2:00h se ejecutará nuestra copia de seguridad automáticamente, tanto si hemos iniciado sesión como si no.

Aquí podéis encontrar más información sobre los ficheros/comandos usados:

fstab

rsync

cron

mount

Sincronizar carpetas en Linux (Ubuntu)

La manera en que yo hago sincronizaciones entre directorios usando mi distribución de Ubuntu (11.11) es con la utilidad rsync.

Para instalarlo es necesario ejecutar la siguiente instrucción:

sudo apt-get install rsync

Una vez instalado es muy fácil usarlo, por ejemplo, si queremos que sincronice el contenido de la carpeta /media/DATOS en la carpeta /media/DATOS2, deberemos ejecutar:

rsync -r -t -v –progress –delete -s /media/DATOS /media/DATOS2/

De esta manera todos los ficheros y directorios que no estén en DATOS2 se añadirán, de igual manera se añadirán los modificados desde la última sincronización, y si hemos eliminado algo de DATOS, también se eliminará de DATOS2.

Si queremos ver todos los parámetros que admite rsync deberemos ejecutar:

man rsync

Si lo queremos hacer a través de un interfaz gráfico, entonces deberemos usar la utilidad grsync, dicha utilidad se instala así:

sudo apt-get install grsync