8.8. Realizar copias de seguridad con Back in Time
Back In Time está inspirado en dos herramientas anteriores llamadas Timevault y Flyback, de las que hereda muchas de sus características.
En Ubuntu disponemos de diferentes herramientas para realizar copias de seguridad pero, sin duda, unas de las más interesantes es Back In Time (http://backintime.le-web.org/). Se trata de una herramienta sencilla y muy potente que realiza su trabajo tomando instantáneas (snapshots) del directorio (o directorios) que nosotros indiquemos en la configuración.
Su objetivo es realizar copias de respaldo al estilo de la famosa herramienta Time Machine de Apple (aunque es más modesta), ahorrando espacio y evitando que el administrador deba preocuparse de su funcionamiento. Las copias se hacen de forma automática y periódica, pero sólo cuando haya cambiado algo en los directorios especificados. Después, el usuario puede elegir qué copia quiere restaurar según el momento en el que se hizo.
Esto hace que la herramienta sea apropiada tanto para un uso profesional como personal. Además, tanto su documentación como su interfaz de usuario son claras e intuitivas, lo que permite utilizarla incluso a usuarios con poca experiencia.
Cómo realiza su magia Back In Time
Para utilizar Back In Time, no es necesario que seamos unos expertos en cómo funciona por dentro. Sin embargo, examinándolo por encima, entenderemos mejor los beneficios que nos aporta.
Si el ordenador se apaga o reinicia mientras Back In Time está creando una nueva instantánea, éste recuerda por dónde va y la retoma cuando vuelva a ser ejecutado o cuando llegue el momento de crear una nueva imagen, según la configuración.
Lo primero que hace es usar el comando rsync para comprobar qué ha cambiado desde la instantánea anterior.
Si hay cambios, aplica dos acciones consecutivas:
- Crea una copia de todo el contenido de la instantánea anterior sobre la instantánea nueva donde, en realidad, cada archivo es un enlace duro al archivo original (esto lo consigue, sencillamente, usando el comando cp).
- Copia cada archivo que haya cambiado sobre su correspondiente enlace duro, creado en el punto anterior y lo configura como de sólo lectura. Esto hace que sólo los archivos modificados ocupen espacio adicional. Para lograrlo, vuelve a utilizar el comando rsync.
Por último, En la carpeta correspondiente a cada instantánea, se crea un sencillo archivo CSV, llamado fileinfo.bz2, que contiene los permisos, propietario y grupo originales de cada archivo.
Como podemos imaginar, bastaría con recorrer la estructura de archivos del disco donde guardamos las instantáneas, para recuperar cualquier versión, de cualquiera de los archivos almacenados (aunque serán de sólo lectura). Sin embargo, siempre será mejor utilizar la función de restauración del programa, ya que, cuando existe el archivo original no se borra, se renombra añadiénlole .backup. y la fecha de la restauración. Esto añade un grado más de seguridad al proceso de restauración de las instantáneas.
Además, también se utiliza rsync para la restauración, lo que evita que se pierda tiempo recuperando archivos que no han sufrido cambios desde que se hizo la copia.
Por último, se utiliza el archivo fileinfo.bz2 para restablecer los valores originales en cuanto a permisos, propietario y grupo.
Lamentablemente, la herramienta de restauración de instantáneas sólo está disponible bajo la interfaz gráfica.
Instalación de Back in Time
Instalarlo es tan fácil como abrir el Centro de software de Ubuntu y comenzar a escribir su nombre. Observa que existen dos versiones específicas de las interfaces gráficas más difundidas.
1
Una vez elegida la versión correcta, en nuestro caso la correspondiente a la interfaz Gnome, basta con hacer clic sobre el botón Instalar.
Una vez instalada la aplicación, su icono aparecerá en el Launcher. (aunque también puede encontrarse en el Dash, como cualquier otra aplicación).
2
Un usuario normal, que sólo necesita hacer copias de sus propios datos, puede iniciar la aplicación haciendo clic sobre este icono.
Sin embargo, cuando somos administradores, deberemos encargarnos de hacer copias de seguridad de los datos de todos los usuarios del sistema. En estos casos, deberemos ejecutar Back In Time con privilegios de root.
Para lograrlo, abriremos el Dash y comenzaremos a escribir el nombre de la aplicación. Veremos que aparece repetido, aunque el segundo incluye la palabra root entre paréntesis.
Veremos que la pantalla se vuelve negra y que aparece en el centro una ventana que nos solicita la contraseña de administración.
La primera ejecución de Back in Time
La primera vez que se abre la aplicación, se abre también la ventana Settings para establecer el primer perfil de copia de seguridad. Esto se debe a que Back In Time permite establecer varios perfiles de copia, con características diferentes. Así, por ejemplo, un perfil podrá encargarse de hacer una copia de todo el sistema una vez al mes, y otro diferente podrá hacer copias de los datos de cada usuario una vez al día.
Como puedes comprender, la definición del perfil es un proceso delicado, al que debemos prestar atención para que cumpla exactamente con nuestras expectativas.
Lo primero que observamos es que la ventana Settings se encuentra dividida en varias solapas: General, Include, Exclude, Auto-remove, Options y Expert Options. Para entender cómo debemos crear un perfil, vamos a seguir el proceso paso a paso, revisando el contenido de cada solapa.
La primera solapa es General. En ella, comenzaremos por indicar el lugar donde se guardarán las copias de seguridad; lo haremos escribiendo el valor adecuado en el cuadro de texto Where to save snapshots…
Si lo hacemos, aparecerá una nueva ventana titulada Carpeta de Instantáneas. En ella, deberemos navegar hasta el lugar donde queremos guardar las copias de seguridad.
Aunque probablemente ya lo habrás supuesto, es importante dejar claro que no se podrá utilizar, como almacenamiento para las instantáneas, una ubicación que vaya a formar parte de las propias instantáneas.
A continuación, estableceremos la frecuencia con la que se realizarán las copias, eligiendo uno de los valores de la lista Schedule. Los valores posibles son:
- Deshabilitado.
- En cada arranque/reinicio.
- Cada cinco minutos.
- Cada diez minutos.
- Cada hora.
- Cada día.
- Cada semana.
- Cada mes.
Los tres últimos valores también nos permiten incluir la hora a la que se realizará la copia.
3
Aquí hemos elegido Cada cinco minutos para que que el ejemplo evolucione rápidamente, pero no es lo más frecuente.
En la solapa Include indicaremos las carpetas que queremos copiar. Podemos usar el botón Add file para añadir archivos de forma individual, el botón Add folder, para añadir directorios completos o Quitar, para descartar algunas de las ubicaciones que hayamos añadido con anterioridad.
Al hacerlo, aparecerá la ventana Incluir carpeta, donde elegiremos una ubicación que queramos tener salvaguardada mediante las copias de seguridad.
5
En nuestro caso, elegiremos la carpeta /home, que contiene los archivos de todos los usuarios del sistema.
Lógicamente, este proceso podemos repetirlo tantas veces como sea necesario.
Por su parte, la solapa Exclude nos facilita la eliminación de una parte del contenido a copiar. Por ejemplo, podemos eliminar la carpeta Descargas del perfil de un usuario.
Aparecerá la ventana Excluir carpeta, donde sólo tenemos que localizar la carpeta que queremos descartar y hacer clic sobre el botón Abrir.
Si quisiéramos descartar todas las carpetas que siguieran un determinado patrón, haríamos clic sobre el botón Añadir y, en la ventana Excluir patrón escribimos una ruta usando caracteres comodín
En la solapa Auto-remove podemos indicar cuándo se eliminarán las copias de seguridad antiguas:
- Cuando las copias sean más antiguas de un número de días, semanas o años.
- Cuando el espacio libre en el disco donde estamos guardando las instantáneas sea inferior a un número determinado de Mb ó Gb.
- Realizar un borrado inteligente, que nos permite combinar diferentes opciones:.
- Mantener todas las instantáneas durante, como mínimo, un número determinado de días.
- Mantener una instantánea por día para los últimos n días.
- Mantener una instantánea por semana para las últimas n semanas.
- Mantener una instantánea por més para los últimos n meses.
- Mantener una instantánea por año.
n es un valor que estableceremos, bien a mano, bien pulsando los botones ascendentes o descendentes.
- Por último, podemos indicar que no se eliminen las instantáneas a las que hayamos puesto nombre (Don’t remove named snapshot). Una opción que, de forma predeterminada, se encuentra habilitada.Para poner nombre a una instantánea en particular usaremos el botón Snapshot Name () de la ventana principal de Back In Time.
En la solapa Options, encontramos algunas opciones complementarias:
- Enable notifications: Cuando está seleccionada y se produce algún tipo de error mientras se topa una instantánea, aparece una ventana de notificación avisando del incidente.
- Disable snapshots when on battery: Podemos habilitarla para evitar que se tomen instantáneas mientras trabajamos con la batería en un ordenador portátil.
- Backup files on restore: Cuando la opción está habilitada, si necesitamos recuperar archivos o directorios, Back In Time hará una copia de respaldo de los archivos que vamos a sustituir.
- Continue on error: Permite tomar una instantánea aunque se detecte algún error.
De forma predeterminada, todos los procesos tienen en Linux la misma prioridad (que se identifica con el valor 0).
Las prioridades pueden ir desde 19, que es la más baja, hasta -20, que es la más alta.
Por último, en la solapa Expert Options, nos encontramos varias características más:
- Run nice as cron job: nice es el comando que permite a Back In Time lanzar un proceso con una prioridad específica y esta opción nos permite que nice se ejecute como una tarea programada de cron (Estudiaremos las tareas programadas en el próximo capítulo)
- Run ionice as cron job: El comando ionice modifica la prioridad con la que un proceso accede al disco. Gracias a él, Back In Time puede realizar instantáneas de forma transparente al usuario. Con esta opción establece si ionice debe ejecutarse como una tarea programada de cron.
- Run ionice when tacking manual snapshots: Donde podemos indicar si también debe cambiarse la prioridad del acceso al disco cuando tomamos instantáneas de forma manual.
- Preserve ACL: Permite respetar las Listas de Control de Acceso de los archivos y carpetas.
- Preserve extended attributes: Permite mantener los atributos extendidos de los archivos y carpetas.
- Copy unsafe links (works only with absolute links): Para copiar los enlaces inseguros, que sólo funciona con enlaces absolutos).
- Copy links (dereference symbolic links): Para copiar enlaces, suprimiendo los enlaces simbólicos.
Cuando estemos listos, hacemos clic sobre el botón Aceptar.
Después de esto, volveremos a la pantalla principal de la aplicación, donde encontraremos fundamentalmente tres áreas:
- En la parte superior, una barra de herramientas que recoge las características más útiles del programa. Aquí, por ejemplo, encontraremos el botón Settings (), que nos permitirá volver a la ventana de configuración de perfiles en cualquier momento. Otro de los botones que pueden resultar muy útil es Take snapshot (), que permite realizar una nueva instantánea, de forma manual, en cualquier momento..
- En el panel de la derecha, información sobre el sistema que estamos copiando.
- A la izquierda, un listado con todas las instantáneas tomadas.
Antes de continuar, es importante que hagamos dos observaciones:
- Debemos tener en cuenta que la primera copia tardará bastante, ya que deberán duplicarse todos los datos que hayamos indicado.Sin embargo, las siguientes copias serán más rápidas, ya que son incrementales y sólo se duplicarán los datos que hayan cambiado.Lo mismo ocurre con las restauraciones: Son inteligentes y sólo se recuperan los datos que hayan cambiado desde que se copiaron.
- No se produce ningún tipo de compresión de los datos.Esto repercute en que Back In Time necesita más espacio que otras utilidades de copia para preservar los mismos datos. No obstante, aporta la ventaja de que los datos serán accesibles aunque no dispongamos del propio programa. Como explicamos al principio de este apartado, incluso podremos acceder a ellos de forma manual, a través del navegador de archivos.
Recuperar datos con Back In Time
Restaurar los datos del ordenador en un momento en particular es tan sencillo como hacer clic sobre la instantánea adecuada (observa que la instantánea sobre la que estás actuando también se incluye en la parte superior de la ventana).
1
Cuando estemos seguros de que se trata de la instantánea adecuada, hacemos clic sobre el botón Restore (Restaurar).
Si lo que necesitamos es recuperar únicamente un archivo, un grupo pequeño de archivos o una carpeta, podemos elegir la instantánea correspondiente y después navegar por el árbol de directorios de la derecha hasta la ubicación de dichos archivos. Después, basta con seleccionarlos y hacer clic con el botón derecho del ratón sobre ellos.
Back In Time desde la línea de comandos
Una de las primeras carencias que observamos en Back In Time es que no dispone de ningún elemento en la configuración de su interfaz gráfica que le permita ejecutarse en segundo plano, lo que significa que, cuando cerremos la aplicación, dejarán de crearse instantáneas.
Además, cuando estamos configurando un servidor que está destinado a trabajar en modo texto no sirve de mucho tener una buena herramienta de copias de seguridad que necesite el modo gráfico para su funcionamiento.
Por estos motivos, si queremos que Back In Time nos resulte realmente útil, deberemos aprender a manejarlo desde la Consola, aunque nuestro objetivo aquí no es entrar en demasiados detalles…
Lo primero será conocer el comando que nos permitirá ejecutar Back In Time en la Terminal:
backintime -b
Esto nos resuelve el problema en parte, porque una vez configurado, ya podemos ejecutarlo cuando estimemos oportuno sin necesidad de tener cargada la interfaz gráfica. Sin embargo, lo ideal es que no lo hagamos de forma manual, sino que automaticemos su ejecución para no tener que preocuparnos de hacerlo en cada reinicio. Esta parte podemos resolverla programando una tarea para cron, tal y como hicimos en el apartado Ajustes tras la instalación de Ubuntu, en este mismo capítulo, para hacer que las actualizaciones del sistema se instalaran de forma automática.
Ahora podemos proceder del mismo modo, pero creando una tarea programada como la siguiente, que hará que el comando backintime se ejecute una vez al día (la opción -b indica que Back In Time debe tomar una instantánea en ese momento):
0 0 * * * /usr/bin/backintime -b
En cualquier caso, en el capítulo próximo aprenderemos otras formas diferentes de programar tareas, que pueden resultar más adecuadas para este uso.
Observaciones finales
Antes de terminar este apartado, me gustaría incluir algunas observaciones / recomendaciones finales:
- La primera es que, para ampliar el uso que hagamos de Back In Time, deberíamos comenzar por consultar su manual. Para hacerlo, basta con abrir una ventana de Consola (Alt + Ctrl + T) y escribir este comando:
man backintime
- El perfil de creación de instantáneas se guarda en un archivo llamado config. Este archivo se crea automáticamente desde la ventana Settings de la interfaz gráfica, pero puede ser útil copiarlo o modificarlo en modo texto. Para ello es importante saber dónde se encuentra
- Si utilizas Back In Time como administrador, podrás encontrarlo en /root/.config/backintime.
- Si lo utilizas como un usuario normal, lo encontrarás en /home/usuario/.config/backintime (sustituyendo usuario por el nombre de la cuenta de usuario que estés utilizando).
- Debemos elegir bien el lugar donde se almacenan las instantáneas. Quizás lo más común sea un directorio dentro del propio disco duro o una partición independiente. Sin embargo, merece la pena valorar otras alternativas:
- Un dispositivo externo (un disco duro o una memoria USB): Dada la bajada de precios que están presentando este tipo de dispositivos, esta puede ser una solución muy interesante para los entornos de trabajo más modestos.
- Un directorio compartido en un servidor de la red: Esta solución es adecuada para entornos más profesionales. Para implementarla, podemos utilizar NFS, que lo estudiaremos en otro capítulo más adelante.
- Un servicio de almacenamiento en la nube: Este es otro tipo de servicios que han adquirido gran relevancia desde hace unos años. Una vez contratado el servicio, sólo habrá que establecer como directorio de destino para las instantáneas alguno que se encuentre dentro de los que se sincronizan con el servicio elegido (por ejemplo, DropBox). Esta es una solución que añade un nivel más de seguridad a la implantación, con un esfuerzo mínimo por nuestra parte.