Ir al contenido principal

Copias de seguridad con duplicity.

Es una tarea dura eso de realizar copias de seguridad, por eso vamos a explicar como hacer copias de seguridad con duplicity automáticamente y además subirlas a un servidor ftp. En primer lugar, tenemos que instalar duplicity y ncftp

$ sudo apt-get install duplicity 
$ sudo apt-get install ncftp 

 Ahora vamos a realizar una copia sencilla sin encriptar de un directorio en concreto y subirla a nuestro servidor. Para ello lo hacemos de la siguiente manera:

$ duplicity --no-encryption /home/usuario/pepe ftp://usuario@IP/ruta

En el comando anterior, estamos indicando con el parámetro --no-encryption, que la copia no irá encriptada.

Ahora supongamos que dentro de la carpeta /home/usuario/pepe hay una carpeta en la que no hay información valiosa y por tanto no queremos que a la hora de realizar la copia de seguridad, también que copie esa carpeta y que solo se copien todas las demás excepto esa. Para eso lo hacemos de la siguiente manera:

$ duplicity --no-encryption /home/usuario/pepe --exclude /home/usuario/pepe/basura ftp://usuario@IP/ruta

Con el parámetro --exclude excluímos la carpeta /home/usuario/pepe/basura, por lo tanto la copia se realizará de todo el contenido de la carpeta exceptuando la carpeta basura.

Supongamos que ahora, queremos excluir una serie de carpeta que empiezan igual y realmente solo nos interesa una. Por ejemplo las carpetas se llamarían hola1, hola2, hola3... y así muchas carpetas. Se haría de la siguiente manera:

$ duplicity --no-encryption /home/usuario/pepe --exclude /home/usuario/pepe/"hola**" \ --include /home/usuario/pepe/hola7 ftp://usuario@IP/ruta

Para incluir una carpeta o archivo, se pone el parámetro --include y a continuación ponemos la carpeta que no queremos que se excluya en el caso de que empiece por ejemplo igual que las otras que hemos excluído. También si queremos incluir otra carpeta que no está dentro de la carpeta a la que queremos hacerle la copia, podemos usar --include. Para excluir carpetas con el mismo nombre simplemente ponemos entre comillas (" ") como empiezan o terminan las carpetas o archivo y añadir un asterisco indicando que todo lo que empiece o acabe por lo que hemos indicado, como hemos podido ver en el ejemplo anterior. Para seraparar el parámetro --exclude y --include, usamos una barra lateral hacia la izquierda ( \ ).

Por defecto las copias serán completas o full, pero si queremos que sea incremental simplemente indicamos incremental en el comando. por ejemplo de la siguiente manera:

$ duplicity incremental --no-encryption /home/usuario/pepe ftp://usuario@IP/ruta

Por defecto, para evitar problemas con las copias de seguridad, duplicity parte las copias en paquetes de 25Mb pero si tenemos mucha información que copiar, saldrían muchísimos paquetes, para que los paquetes sean un poco mas grandes, podemos indicarlo con el parámetro --volsize 

Supongamos que queremos que los paquetes de nuestra copia de seguridad sean de 150Mb, para ello lo hacemos de la siguiente manera:

$ duplicity --no-encryption /home/usuario/pepe --volsize 150 ftp://usuario@IP/ruta

Si solo ponemos un número, por defecto será expresado en Mb.

Cuando llevamos tiempo realizando las copias, cada vez está mas lleno y mas lleno nuestro servidor donde almacenamos las copias, podemos hacer que se borren automáticamente cara cierto tiempo de la siguiente manera:

$ duplicity remove-older-than 60D ftp://usuario@IP/ruta

Así indicamos con el parámetro remove-older-than el tiempo que queremos que mantenga las copias. Como podemos ver en el ejemplo, hemos puesto 60D y esto significa, que permaneceran las copias 60 dias y cuando tengan 60 dias se borrará automáticamente.

nota: no se puede realizar copias de seguridad y borrar copias en el mismo comando.


Puede darse el caso de que las copias estén incompletas o no se hayan hecho bien, entonces esto puede dar problemas, para borrar las copias incompletas o mal realizadas, podemos hacerlo con el parámetro cleanup. Podemos verlo en el siguiente ejemplo:


$ duplicity --no-encryption cleanup ftp://usuario@IP/ruta

Ya solo faltaría que las copias se hicieran solas, para ello utilizamos el cron. Para usar el cron ejecutamos el comando crontab -e. En este fichero, podemos indicar los minutos, la hora, el dia, el mes... de cuando queremos que se ejecute un comando que en nuestro caso serán las copias de seguridad. El cron funciona de la siguiente manera:

min hora dia mes año comando

En ese orden indicamos el momento exacto que queremos que se ejecute el comando. Por ejemplo queremos que se realice una copia de seguridad todos los dias a las 9 de la mañana, para ello lo ponemos de la siguiente manera en el final del fichero crontab

0 9 * * * export FTP_PASSWORD=contraseña;duplicity --no-encryption /home/usuario/pepe ftp://usuario@IP/ruta

Añadimos un export al comando para que no pida contraseña a la hora de hacer las copias, porque sino no se haría automáticamente. Los asteriscos indican que todos los dias, meses y años se ejecute a las 9 de la mañana la copia de seguridad.

Nota: la primera vez que hagamos una copia, no hará falta que indiquemos que es full ya que es la primera copia y obviamente la primera copia tiene que ser una completa, las siguientes veces hay que indicar que es full ya que si no lo indicamos la copia será incremental. Para ello simplemente poner full detrás de duplicity.

0 9 * * * export FTP_PASSWORD=contraseña;duplicity full --no-encryption /home/usuario/pepe ftp://usuario@IP/ruta

 

Comentarios

Entradas populares de este blog

Instalación Django en NAS Synology con FastCGI

Los NAS Synology no traen el módulo de apache mod-wsgi por lo que he utilizado el módulo mod-fastcgi en su lugar para hacer funcionar Django en los NAS Synology. Necesitamos del módulo mysql-python , para su instalación podemos seguir la entrada que ya se publicó en este mismo blog:  http://ilizaran.blogspot.com.es/2014/09/instalacion-del-modulo-mysql-python-en.html De la instalación de mysql-python ya tendremos instalado pip en el NAS por lo que podremos instalar Django con algunos módulos necesarios: pip install Django pip install setuptools pip install flup Para saber que la instalación de Django ha sido correcta y verificar la versión podemos realizar: python import django  django.VERSION Ahora modifcamos la configuración de apache editando el fichero /etc/httpd/conf/httpd.conf-user  para hacer accesible los ficheros css, imágenes y javascript de la parte administrativa de Django, por lo que añadimos: Alias /static/admin /usr/local/packages/@appstore/Python/usr/l

Calcular en Mysql el primer y último día del mes

SELECT DATE_FORMAT(now(),'%Y-%m-01') AS first_day; SELECT date_add(date_add(LAST_DAY(now()),interval 1 DAY),interval -1 MONTH) AS first_day; SELECT LAST_DAY(now()) AS last_day; Calcular en Mysql el primer y último día del mes anterior: SELECT date_add(date_add(LAST_DAY(now()),interval 1 DAY),interval -2 MONTH) AS first_day; SELECT LAST_DAY(date_add(last_day(now()),interval -1 MONTH)) AS last_day;

Instalación del módulo mysql-python en NAS Synology

Instalar gcc en Synology Para la instalación de mysql-python es necesario el compilador gcc, por lo que lo obtendremos de Synology Open Source Project (http://sourceforge.net/projects/dsgpl). El paquete a descargar dependerá de la versión de NAS Synology que tengamos, por lo que tendremos que utilizara el comando: uname -a para conocer la versión de nuestro kernel y arquitectura instalada y descargar el paquete correspondiente. En mi caso he descargado: gcc463_glibc213_i686_cedarview-GPL.tgz pues mi equipo muestra cedarview y i686. Ahora lo descargamos y lo extraemos: cd /usr/local http://kent.dl.sourceforge.net/project/dsgpl/DSM%205.2%20Tool%20Chains/Intel%20x86%20Linux%203.2.40%20%28Cedarview%29/cedarview-gcc463_glibc213_i686_patched-GPL.txz tar -xvJf cedarview-gcc463_glibc213_i686_patched-GPL.txz rm cedarview-gcc463_glibc213_i686_patched-GPL.txz Instalación de las fuentes de Mysql Synology utiliza MariaDB, pero para la compilación del módulo de python podemos utiliz