En un sistema informático que da servicio a usuarios, la información más importante es precisamente la información de los usuarios, por lo tanto, la carpeta /home es una de las carpetas que debemos salvaguardar.
El objetivo de la realización de copias de seguridad es el reestablecimiento del servicio en el mínimo tiempo posible, por eso es conveniente realizar una copia de seguridad de los archivos de configuración del servidor, los cuales se encuentran en la carpeta /etc.
Otras carpetas de cierta importancia que se pueden salvaguardar son la carpeta /root y la carpeta /var/log. La primera es la carpeta personal del usuario root y la segunda es la carpeta donde se almacenan las incidencias del sistema (archivos de log del sistema). Resumiendo, deberíamos salvaguardar las siguientes carpetas:
La integridad de los datos queda garantizada porque el algoritmo de compresión añade un código de redundancia cíclica (CRC) que se consulta a la hora de descomprimir los datos de forma que tenemos seguridad si están correctos o no lo están.
Ejemplo, si hoy fuera 1 de febrero de 2012 y deseáramos crear una copia de seguridad total de las carpetas etc y home, lo normal es que el nombre del archivo fuera:
// Nombre de archivo copia de seguridad totalCopiaTotal_etc-home_01feb12.tar.bz2
Si una semana después, el 8 de febrero de 2012 deseáramos crear una copia de seguridad diferencial desde la copia total del día 1 de las carpetas etc y home, lo normal es que el nombre del archivo fuera:
// Nombre de archivo copia de seguridad diferencialCopiaDiferencial_etc-home_01feb12-08feb12.tar.bz2
Si el día siguiente, 9 de febrero de 2012, deseáramos crear una copia de seguridad incremental desde la copia diferencial del día 8 de las carpetas etc y home, lo normal es que el nombre del archivo fuera:
// Nombre de archivo copia de seguridad incrementalCopiaIncremental_etc-home_08feb12-12feb12.tar.bz2
Con ésta nomenclatura será más fácil identificar los datos que contienen los archivos de copia de seguridad ya que el nombre del archivo lleva implícito el tipo de copia, las carpetas de datos que contiene y la fecha o fechas de los archivos salvaguardados.
Aquí utilizaremos la compresión bzip2 por ser una de las que más comprime. Los archivos tar comprimidos en bzip2 suelen llevar extensión '.tar.bz2'.
// Utilización de tar// Para crear copia de seguridad de varias carpetas tar -jcvf CopiaTotal.tar.bz2 carpeta1 carpeta2 carpeta3 ...
Opciones:
// Para extraer los archivos que contiene el archivo tar.bz2tar -jxvf copia.tar.bz2
Opciones:
// Para extraer solo un archivo del archivo tar.bz2tar -jxvf copia.tar.bz2 ruta-del-archivo/nombre-del-archivo
// Para ver una lista de los archivos que contiene el archivo tar.bz2tar -jtvf copia.tar.bz2
Opciones:
// Para crear copia de seguridad de los archivos modificados tras una fecha dadatar -jcvf CopiaDiferencial.tar.bz2 -N 1feb2012
La opción -N en el comando tar significa Newer que traducido es 'más nuevo que'. Si incluimos la opción -N 1feb12 significa que solamente va a añadir los archivos que se han modificado con posterioridad a dicha fecha, es decir, más nuevos que el 1 de febrero de 2012 a las 0 horas, 0 minutos.
Ejemplo, si hoy fuera 1 de febrero de 2012 y deseamos realizar una copia de seguridad total en la carpeta /tmp (temporal) de las carpetas /home y /etc, el nombre del archivo será CopiaTotal_etc-home_01feb12.tar.bz2 y el comando que debemos lanzar será:
// Crear copia totaltar -jcvf /tmp/CopiaTotal_etc-home_01feb12.tar.bz2 /home /etc
Si utilizamos el comando 'date' podemos hacer que se ponga automáticamente la fecha actual en el nombre del archivo y nos servirá para cualquier día ya que tomará la fecha del sistema. El comando date muestra la fecha del sistema. Si queremos que muestre la fecha en un formato especial como por ejemplo 13sep12, debemos escribir date +%d%b%y.
Al escribir el comando date entre comillas simples inclinadas (`), la salida del comando date sustituirá al comando en su lugar, es decir, donde pone `date +%d%b%y` quedará sustituido por 14feb12 si hoy fuera esa fecha:
// Crear copia total poniendo la fecha de hoy en el nombre del archivotar -jcvf /tmp/CopiaTotal_etc-home_`date +%d%b%y`.tar.bz2 /home /etc
Ejemplo, si hoy fuera 8 de febrero de 2012 y deseáramos realizar una copia de seguridad diferencial de los cambios producidos desde el día 1 de febrero de 2012 en la carpeta /tmp (temporal) de las carpetas /home y /etc, el nombre del archivo será CopiaDiferencial_etc-home_01feb12-08feb12.tar.bz2 y el comando que debemos lanzar será:
// Crear copia diferencialtar -jcvf /tmp/CopiaDiferencial_etc-home_01feb12-08feb12.tar.bz2 /home /etc -N 01-feb-12
Pero si en lugar de escribir directamente 01feb12-08feb12 escribimos 01`date %b%y`-`date +%d%b%y` nos servirá el mismo comando para todos los días.
El proceso de creación de copias de seguridad debe ser un proceso automático que no requiera la intervención del usuario para realizarse ya que por un olvido o dejadez del mismo podría ocurrir que el día que necesitemos la copia de seguridad, ésta no se haya hecho.
Para lanzar la realización automática de copias utilizaremos cron. Cron es un servicio que nos permite lanzar comandos automáticamente los días y a las horas que deseemos. Cada usuario tiene su propio cron en el que puede configurar sus tareas programadas mediante el comando 'crontab -e' o con alguna aplicación gráfica como gnome-schedule. En nuestro caso, como realizamos copia de seguridad de carpetas que solamente tiene acceso el usuario root, debemos programar la copia mediante el cron de root.
Supongamos que deseamos crear una copia de seguridad total los días 1 de cada mes y una copia de seguridad diferencial el resto de días en la carpeta /tmp (temporal), de las carpetas /home y /etc. El comando que ejecutaremos el día 1 de cada mes será:
// Comando a ejecutar los días 1 de cada mestar -jcvf /tmp/CopiaTotal_etc-home_`date +%d%b%y`.tar.bz2 /home /etc
Como puede verse, utilizamos `date +%d%b%y` que si hoy es 1 de febrero de 2012 se sustituira por 1feb12. De ésta forma nos sirve el mismo comando para todos los meses.
El comando que ejecutaremos todos los días para realizar la copia diferencial, será:
// Comando a ejecutar los días para hacer copia diferencial respecto al día 1Como puede verse, utilizamos 01`date %b%y`-`date +%d%b%y` que si hoy es 13 de febrero de 2012 se sustituira por 01feb12-13feb12. También en la opción -N ponemos 01`date +%b%y` para que añada únicamente los archivos más nuevos que el día 1 del mes actual. De ésta forma nos sirve el mismo comando para todos los días. Podemos crear scripts para guardar los comandos, ejemplo: copia-normal.sh y copia-diferencial.sh.tar -jcvf /tmp/CopiaDiferencial_etc-home_01`date +%b%y`-`date +%d%b%y`.tar.bz2 /home /etc -N 01`date +%b%y`
Si deseamos programar para que automáticamente se ejecute la copia total el día 1 de cada més y la copia diferencial todos los días, debemos añadirlo en el cron del usuario root lo cual se puede realizar ejecutando el comando 'crontab -e' o bien utilizando gnome-schedule:
Al final nuestro archivo cron para que se ejecuten automáticamente los comandos que realizan las copias de seguridad quedará como el de la figura:
De ésta forma, los días 1 de cada mes a las 02:30 horas se realizará la copia total de las carpetas /etc y /home y todos los días a las 04:30 horas se realizará la copia diferencial respecto de la copia del día 1 del mes.
Las copias de seguridad se realizarán sobre la carpeta /tmp, pero lo recomendable es realizar la copia de seguridad sobre un dispositivo extraible, por ejemplo, un disco duro extero USB. Habrá que sustituir /tmp por la carpeta donde esté montado el dispositivo. Si se trata de un disco duro USB, lo más normal es que el dispositivo esté montado en la carpeta /mnt/sda1 o algo parecido ya que se monta como un dispositivo SCSI, lo que quiere decir que en lugar de poner /tmp en el comando tendríamos que poner /mnt/sda1.
Estas aplicaciones tienen la ventaja de ser muy completas ya que disponen de un sinfín de posibilidades, pero son más complejas de manejar.