Backup con duplicity

Desde hace tiempo estamos usando este programa para gestionar las copias de seguridad, sobre todo en maquinas remotas o en aquellas que sólo tenemos acceso por terminal: duplicity.
Sobre programas de copias de seguridad hay multitud de entradas en Internet tantas como programas y de muy diversas características, por ejemplo en Wikipedia. Pero en este artículo queremos destacar las que para nosotros son más importantes:
1. Copias remotas mediante SCP/SFTP. Hoy en día y con la gran cantidad de sistemas distribuidos que se tienen esto es un requisito indispensable, además en la web oficial dicen que soporta en teoría todos los protocolos de conexión con sistemas de ficheros:In theory many protocols for connecting to a file server could be supported; so far ssh/scp, local file access, rsync, ftp, HSI, WebDAV, Tahoe-LAFS, and Amazon S3 have been written. Currently duplicity supports deleted files, full unix permissions, directories, and symbolic links, fifos, and device files, but not hard links.
2. La facilidad de uso, con varias opciones podemos controlar fácilmente un conjunto complejo de posibilidades para una gestión eficiente de nuestras copias de seguridad.
Ej: Un comando para guardar una copia de seguridad de /home/me en el directorio remoto /usr/backup en el host other.hostduplicity /home/me scp://uname@other.host//usr/backup
El inverso para restaurar una copia al directorio restoredir:duplicity scp://uid@other.host//usr/backup restoreddir
3. Posibilidad de encriptar y firmar con el mismo programa los ficheros. Esto le da un valor añadido al poderse usar el mismo para la encriptación y la firma digital usando GnuGP.
En definitiva es un programa que debe usarse y que nos sacara de más de un apuro.
Para los que estáis buscando un script sencillo para gestionar copias de seguridad os dejo este bajo licencia GPL para vuestro uso, aunque podéis encontrar muchos más por Internet: Ubuntu.com, virtualserverlabs.com, ..

!/bin/bash

-----------------------------------------------------------------------------------------

This program is free software: you can redistribute it and/or modify

it under the terms of the GNU General Public License as published by

the Free Software Foundation, either version 3 of the License, or

(at your option) any later version.

#

This program is distributed in the hope that it will be useful,

but WITHOUT ANY WARRANTY; without even the implied warranty of

MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

GNU General Public License for more details.

#

You should have received a copy of the GNU General Public License

along with this program. If not, see .

-----------------------------------------------------------------------------------------

P.G.G. - enreda.coop - 2010

Script de backup, periodico. Guarda backup diario, mensual y anual.

Diario durante 30 días. Mensual durante 1 año. Anual duante 2 años.

# date=date +%d
year=date +%d-%m

Variables

destino=/usr/backup
files=/home/me

Podeis usar la password o una ssh key.

export FTP_PASSWORD=password

Escribimos en el log

echo date +%H:%M-%d/%m/%Y Comienza el backup >> /var/log/backup.log

Si estamos en el dia 1 del mes

if [ $date = 01 ]
then

Copia completa mensual en la carpeta /mes

duplicity full $files --ssh-askpass --no-encryption scp://uname@other.host//$destino/mes/

Borramos las diaras despues de crear la copia mensual y borramos las copias mensuales que tienen más de 1 año

duplicity remove-older-than 1M --force --ssh-askpass scp://uname@other.host//$destino/dia/
duplicity remove-older-than 1Y --force --ssh-askpass scp://uname@other.host//$destino/mes/

Escribimos en el log

echo date +%H:%M-%d/%m/%YCopia mensual realizada. Copias diarias eliminadas. Copias mensuales anteriores a un año eliminadas >> /var/log/backup.log
else

Si es cualquier otro día se crea la copia de seguridad diaria

duplicity $files --ssh-askpass --no-encryption scp://uname@other.host//$destino/dia/

Escribimos en el log

echo date +%H:%M-%d/%m/%Y Copia diaria realizada. >> /var/log/backup.log
fi

Escribimos en el log

echo date +%H:%M-%d/%m/%Y Fin backup remoto >> /var/log/backup.log

Si es el dia 1 de Enero, se crea una copia anual y se borra si existen las copias anteriores a 2 años

if [ $year = 01-01 ]
then

Escribimos en el log

echo date +%H:%M-%d/%m/%YComienza el backup anual 1 de Enero >> /var/log/backup.log
duplicity full $files --ssh-askpass --no-encryption scp://uname@other.host//$destino/year/
duplicity remove-older-than 2Y --force --ssh-askpass scp://uname@other.host//$destino/mes/

Escribimos en el log

echo date +%H:%M-%d/%m/%YFin backup anual >> /var/log/backup.log
fi
unset FTP_PASSWORD
exit 0

Pablo García

Pablo García

http://pablogg.com

Socio fundador de la Cooperativa enreda.coop #FLOSS #InnovacionSocial #ConocimientoAbierto

View Comments