Copias de seguridad con attic

tools_serverTras haberlo visto mencionado en Planet Debian me he decidido a echarle un vistazo al programa attic para emplearlo como sistema principal de copias de seguridad de servidores autónomos de Debian.

Y con sistemas autónomo me refiero a aquellos que no son necesariamente parte de una red, como las máquinas del trabajo, y que necesitan salvar su información con seguridad y sencillez.

Parto de lo siguiente:

  • El directorio /etc se mantiene como repositorio git gracias a etckeeper.
  • La lista de paquetes instalados en Debian se debe extraer mediante la ejecución de un proceso (dpkg –get-selections).
  • Los directorios de usuario son muy importantes pero también prolijos en cachés y montajes externos. Deben excluirse con seguridad.
  • Las bases de datos … En fin, son algo más complejas de salvar y no estoy muy seguro de incluírlas. Este tipo de copias es para al menos salvar el sistema, no las aplicaciones que sirve.

Como condiciones me impongo:

  • Los datos deben guardarse en otra máquina. Punto. Posiblemente tenga que crear un usuario especial para cada máquina o para todas las copias en sí.
  • Las copias deben estar protegidas con un cifrado como poco. Así me quedo más tranquilo si reutilizo máquinas del trabajo y de casa para intercambiar espacio de copias y reducir riesgos.

Y resulta que Attic es un programa con las siguientes características:

  • Se organiza en repositorios que a su vez contienen volúmenes. Éstos son colecciones de archivos y metadatos que pueden considerarse como un trabajo de copia por sí mismos.
  • Emplea técnicas de deduplicado de datos (creo que no existe el término en español) de manera que consume menos espacio al no guardar información redundante.
  • Aprovechando lo anterior también es factible crear trabajos de copia diarios sin consumir mucho ancho de banda.
  • Admite repositorios remotos vía SSH (los datos ya viajan cifrados).
  • Admite cifrado de repositorio para que salgan de la máquina protegidos y permanezcan igual en el destino.
  • Conserva bastantes atributos de los archivos.
  • Puede continuar una copia interrumpida.
  • Incluye verificación de copias.
  • Permite montar los volúmenes vía fuse, por lo que es factible emplear otros sistemas de copias (como bareos) o verificar sus contenidos con herramientas de terceros.
  • Está incluído en Debian.

Así que he estado pensando en mecanizar un poco el proceso para poder instalarlo en cualquier servidor de los que llamo autónomo con los menores cambios posibles.

Y pensando sobre ello he visto lo siguiente:

  • Sí, se puede realizar también una copia local si la máquina dispone de espacio. Como algo complementario.
  • Las máquinas remotas de copias necesitan:
    • Una cuenta SSH con la que acceder: se puede emplear un usuario específico con contraseña o con certificado.
    • Un espacio en disco habilitado y suficiente.
    • El propio programa attic instalado dado que mejora mucho el rendimiento.
  • Los directorios y archivos que deben incluirse en la copia, así como algún script para obtener información extra, se repiten mucho. Es posible reutilizarlos con las expresiones de selección adecuadas.
  • Los repositorios que emplea attic tiene la misma estructura en cualquier localización. Esto es, si dispongo que en cada máquina el repositorio de copias de sistema se sitúe en /srv/backups.attic, por ejemplo, puedo emplear la máquina tanto para enviar copias fuera como para recibirlas. Es cuestión de organizar los nombres de archivo correspondiente. El nombre de red completo puede ser un buen candidato.

Vale, pues ya he reunido ideas y efectuado algunas pruebas de concepto: es factible. Así que ahora voy a crear un protocolo para cada máquina en la que quiero instalarlo.

  1. Instalar el programa attic.
  2. Crear una cuenta de usuario para efectuar y recibir copias.
  3. Reservar espacio en disco para ese usuario.
  4. Instalar un script que realice las copias en remoto y ejecutarlo regularmente.

En mi almacén de contraseñas debo apuntar lo siguiente:

  1. Contraseña de acceso al usuario de copias (o clave privada de acceso, a elegir).
  2. Contraseña para las copias de seguridad que efectúa la máquina en lugares remotos.

Creo que las ideas están claras. Voy a ponerme con ello antes de que se me pase la oportunidad y me encarguen alguna otra tontada ;-)