Un BackUp facilito
Como ya comentamos hay muchas soluciones de backup a todos los niveles, y el nivel personal o doméstico no iba a ser una excepción.
A mucha gente le basta con comprimir su directorio de documentos, o su correo, y meterlo en CD regrabable, otros confían en el Time Machine de Apple (un software en estado beta se diga o no), e incluso he visto a algunos con extrañas utilidades de sincronización con un frontend gráfico que tanto intenta abstraer al usuario del sistema de ficheros que acabas por no entender nada de lo que está pasando ni saber si esas copias te van a servir realmente en un caso de necesidad.
Yo para mis equipos domésticos basados en UNIX (GNU/Linux, MacOS-X, FreeBSD…) utilizo un sencillo script que llama a rsync y me sincroniza una copia que mantengo en un disco USB pequeñito. Le meto una sincronización cada dos o tres días y así sé que pase lo que pase siempre dispondré de todos los ficheros más o menos actualizados.
La solución no es tan buena como tener un servidor doméstico y un servicio tipo BackupPC y programar el sistema para sincronizar la copia diariamente, pero las ventajas son que lo puede implementar cualquiera, que podemos guardar el disco USB en nuestra maleta, llevarlo a otra dependencia, utilizarlo no sólo como copia de respaldo sino para traspasar datos…
Al grano:
Requisitos:
- Tener instalada la utilidad “rsync“ en nuestro sistema, viene con la mayoría de los UNIX, si no de serie si que como opción fácilmente instalable.
- Tener instalada la utilidad “sudo“. También suele venir por defecto.
- Tener claro cual es el punto de montaje de nuestro disco USB y que sea inequívoco con cualquier otro disco. Por ejemplo: “/mnt/LaCieMini“, “/Volumes/LaCieMini“, o “/mnt/MiDiscoDeCopias“.
- Que en el disco externo haya espacio suficiente para la copia que queremos hacer. Aunque podemos restringir el backup a lo que nos interese.
- Que el disco externo esté formateado en un sistema de ficheros “razonable”, que permita guardar los permisos y atributos del sistema que vamos a respaldar. Un sistema de ficheros razonable no es FAT32, pero si ext3, xfs, jfs, reiserfs, hfs+, etc…
Los scripts:
- general_backup.sh: Será al que llamaremos para iniciar la sincronización. Lo que hace es pedir la contraseña de administrador (sudo) y actuar como envoltorio al resto del script. Si no hiciésemos esto habría que pedir la contraseña varias veces y en medio de un backup presuntamente desatendido.
#!/bin/bash
# Llamar a general_backup_root.sh
# con un envoltorio sudo:
sudo $(dirname $0)/general_backup_root.sh
- general_backup_root.sh: El backup mediante rsync.
- exclude_general.txt: Una serie de directorios y ficheros, o máscaras de ellos, de los cuales no queremos hacer backup.
# Ficheros a excluir del backup
mysql.sock
mysqld.sock
symfony_projects/.DS_Store
symmfony_projects/**/.DS_Store
symfony_projects/**/log/*
symfony_projects/**/cache/*
symfony_projects/**/.cache/*
.svn
Transmission/socket
/tmp
/Users/queru/Library/Caches
- colores.inc: Define códigos de escape de un terminal habitual (xterm) para obtener colores. Este include os puede servir para vuestros propios scripts.
# Colores:
NORMAL="\e[0m"
BOLD="\e[1m"
INVERSO="$BOLD\e[30;47m"
ROJO="$BOLD\e[31m"
VERDE="$BOLD\e[32m"
MARRON="$BOLD\e[33m"
AZUL="$BOLD\e[34m"
MAGENTA="$BOLD\e[35m"
CYAN="$BOLD\e[36m"
BLANCO="$BOLD\e[37m"
FORTUNECOLOR="$MARRON"
AMARILLO="$MARRON"
Si lo preferís, todos los ficheros están en este tarball: QueruBackup.tar.gz.
Instalación:
Muy fácil: Se ponen todos estos ficheritos en un directorio, preferiblemente que esté en vuestro path pero sin mezclarlo con cosas del sistema, por ejemplo “/home/queru/bin“.
Editáis el “exclude_general.txt” a vuestro gusto y cambiáis el path a la unidad de backup editando la variable “DISCODEST” en “general_backup_root.sh“.
Editáis la variable “SRC” poniendo los directorios de vuestro sistema que queréis respaldar. Sobre todo el “/home/yomismo” o el “/Users/yomismo” en el caso del OS-X.
Por supuesto debéis darle permisos de ejecución:
# chmod +x general_backup.sh
# chmod +x general_backup_root.sh
Ejecución:
Pincháis el disco externo y llamáis a “general_backup.sh”. El script detectará si el disco externo está montado y comenzará la sincronización. Podéis seguir trabajando con el ordenador mientras tanto ya que si tenéis SATA o SCSCI y USB2.0 o Firewire la carga general del sistema no será mucha, aunque pensad que la primera vez le cuesta más porque tiene que copiar todo.
Por supuesto si estáis trabajando con una base de datos SQL, la copia de sus datos en binario podría no ser estable, pero que es mejor… ¿Tener esta copia o no tener nada?
Más fácil y más barato imposible, ¿No? Estoy a vuestra disposición para dudas, mejoras, etc…