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
$ 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