Configuración de copias de seguridade en FreeNAS
- Na Parte IV do curso abordouse con bastante profundidade as diferentes estratexias e técnicas básicas para a realización de copias de seguridade, e todo o explicado pódese aplicar case ao 100% ao escenario que temos agora.
- Por iso non imos volver a abordar todos os conceptos xa traballados nese apartado; tan só aplicaremos as técnicas de copias de seguridade sobre FreeNAS con exemplos sinxelos.
- Veremos como facer uso tanto do comando tar para facer copias de seguridade nun volume local na máquina FreeNAS, como de rsync para realizar copias dunha carpeta nun servidor remoto.
Copias de seguridade nun volume local con tar
Engadir o volume para as copias de seguridade
- Como primeiro paso, imos engadir na máquina FreeNAS un volume para volcar sobre el as copias de seguridade. Este volume podería ser un disco interno ou un disco esterno USB, por exemplo.
- Co xestor de volumes ZFS creamos un volume co nome copias:
Crear os scripts para a realización das copias
- Imos crear dentro do volume copias (en /mnt/copias) dous scripts: Un para facer unha copia completa e outro para facer copias incrementais.
- SCRIPT: copia_completa.sh
date "+%Y-%m-%d %H:%M:%S" > /mnt/copias/last_backup_date.txt
tar czf /mnt/copias/backup_completo_`date "+%Y-%m-%d-%H-%M-%S"`.tar.gz /mnt/datos/usuarios /mnt/datos/comun
- Como se pode ver, este script simplemente garda nun ficheiro a data da copia, e copia e comprime con tar nun ficheiro dentro de /mnt/copias todo o contido das carpetas usuarios e comun.
- SCRIPT: copia_incremental.sh
LAST_BACKUP_DATE=`cat /mnt/copias/last_backup_date.txt`
date "+%Y-%m-%d %H:%M:%S" > /mnt/copias/last_backup_date.txt
tar czf /mnt/copias/backup_inc_`date "+%Y-%m-%d-%H-%M-%S"`.tar.gz --newer "$LAST_BACKUP_DATE" /mnt/datos/usuarios /mnt/datos/comun
- Neste caso, o script toma a data da última copia e almacena en /mnt/copias só os ficheiros creados e modificados dende esa data. A implementación do comando tar en FreeNAS non inclúe a opción -g para facer as copias incrementais, así que usaremos o parámetro --newer para incluír só as carpetas e ficheiros modificados a partir dunha data.
- O script tamén modifica no ficheiro a data da copia, para que a seguinte vez só de copien os ficheiros modificados dende ese momento. Eliminando esta liña estariamos facendo copias diferenciais en lugar de incrementais (xa que sempre faríamos copia dos ficheiros modificados dende a última copia completa).
- Establecemos sobre os scripts os permisos que permitan a súa execución:
chmod 755 /mnt/copias/copia_completa.sh
chmod 755 /mnt/copias/copia_incremental.sh
- E no seguinte exemplo podemos ver o resultado da execución manual dos scripts:
[root@nas00] ~# /mnt/copias/copia_completa.sh
tar: Removing leading '/' from member names
[root@nas00] ~# tar tvf /mnt/copias/backup_completo_2014-05-22-00-47-11.tar.gz
...
...
drwx------ 0 root wheel 0 May 21 21:24 mnt/datos/comun/departamentos/
drwx------ 0 root wheel 0 May 21 02:35 mnt/datos/comun/dam1/
[root@nas00] ~# /mnt/copias/copia_incremental.sh
[root@nas00] ~# ls -lh /mnt/copias/
total 6160
drwxr-xr-x 2 root wheel 7B May 22 00:48 ./
drwxr-xr-x 5 root wheel 512B May 21 23:13 ../
-rw-r--r-- 1 root wheel 6M May 22 00:47 backup_completo_2014-05-22-00-47-11.tar.gz
-rw-r--r-- 1 root wheel 45B May 22 00:48 backup_inc_2014-05-22-00-48-43.tar.gz
-rwxr-xr-x 1 root wheel 169B May 22 00:41 copia_completa.sh*
-rwxr-xr-x 1 root wheel 248B May 22 00:43 copia_incremental.sh*
-rw-r--r-- 1 root wheel 20B May 22 00:48 last_backup_date.txt
[root@nas00] ~# tar tvf /mnt/copias/backup_inc_2014-05-22-00-48-43.tar.gz
[root@nas00] ~# mkdir /mnt/datos/comun/nova_carpeta
[root@nas00] ~# /mnt/copias/copia_incremental.sh
[root@nas00] ~# tar tvf /mnt/copias/backup_inc_2014-05-22-00-50-02.tar.gz
drwx------ 0 root wheel 0 May 22 00:49 mnt/datos/comun/
drwxr-xr-x 0 root wheel 0 May 22 00:49 mnt/datos/comun/nova_carpeta/
Programar as copias de seguridade con CRON
- Evidentemente, a execución das copias de seguridade non se debería facer de forma manual. Sempre deberíamos configurar tarefas planificadas para que se executasen periodicamente.
- A ferramenta de administración de FreeNAS ofrécenos a posibilidade de configurar tarefas programadas:
A tarefa executarase co usuario root. Introducimos como comando a executar o que realiza a copia completa (/mnt/copias/copia_completa.sh). Con respecto á programación, imos facer que se execute todos os sábados ás 20:00, así que en minuto picamos na lapela Cada uno seleccionado e seleccionamos o minuto 00...
Copias de seguridade en remoto con RSYNC
- Con Rsync podemos manter sincronizado o contido dunha carpeta (que pode ser unha carpeta de datos ou a que contén as copias de seguridade) nun equipo remoto.
- A ferramenta de administración de FreeNAS permítenos configurar o equipo tanto para a sincronización dunha carpeta noutra máquina como para recibir a sincronización do contido dunha carpeta de outra máquina con rsync.
Clonar máquina FreeNAS e configurar a máquina clonada
- Para facer unha demostración do uso de rsync, imos crear unha segunda máquina FreeNAS para sincronizar unha carpeta entre nas00 e esa nova máquina.
Configurar a máquina remota na que se fan as copias
- Imos configurar esta máquina clonada para que reciba as sincronizacións por rsync:
Dámoslle un nome ao módulo e indicamos onde imos almacenar a carpeta sincronizada: /mnt/copias. Seleccionamos o usuario root e o grupo wheel para que o módulo poida escribir na carpeta. Na lista de clientes permitidos, introducimos a dirección IP da máquina que vai facer a sincronización, que será nas00. Aceptamos.
Configurar a máquina orixe das copias
- Por último, imos configuración nas00 para sincronizar todo o contido da carpeta de datos coa máquina clonada.
- Nun caso real, non sería moi recomendable sincronizar as carpetas de datos, xa que o borrado dalgún ficheiro ou carpeta na carpeta orixinal faríase tamén na máquina remota no momento de realizar a sincronización, e non teríamos polo tanto un histórico dos datos dos que facemos a copia. O máis recomendable sería polo tanto utilizar rsync para sincronizar as copias de seguridade co equipo remoto, para poder ter as copias en localizacións físicas diferentes.
- Neste caso facémolo así para poder comprobar máis claramente o funcionamento de rsync.
Nos datos da tarefa, introducimos a ruta da carpeta a copiar (/mnt/datos), como usuario root, a dirección IP da máquina na que facer a sincronización (172.16.5.13), como modo Rsync Módulo Rsync, e en dirección Enviar. Para non ter que esperar moito, indicamos que a sincronización se faga cada 5 minutos (seguramente nun caso real sería máis tempo, por exemplo cada día).