Ubuntu – Script para backup de carpetas desde consola (1)

Script para backup de carpetas desde consola en Ubuntu utilizando 7z para comprimir.

Nos ponemos en situación

Tenemos una carpeta en la que almacenamos todos nuestros proyectos. Pongamos que estamos hablando de la carpeta:

/opt/lampp/htodcs/

Dentro de esta carpeta tenemos muchas otras carpetas, cada una de ellas con un proyecto. Además, se van añadiendo nuevas carpetas.

Qué queremos hacer?

Crear un script llamamdo backup-proyectos.sh que se encargue de comprimir cada uno de los proyectos (carpetas de proyectos) por separado.

Así pués, como hemos dicho anteriormente tendremos

/opt/lampp/htodcs/proyecto1
/opt/lampp/htodcs/proyecto2
/opt/lampp/htodcs/proyecto3
/opt/lampp/htodcs/proyecto4

/opt/lampp/htodcs/proyectoN

Y queremos que cuando se ponga en marcha el backup, nos queden las copias de las carpetas por separado:

proyecto1.7z
proyecto2.7z
proyecto3.7z
proyecto4.7z

proyectoN.7z

Nos preparamos

Necesitamos el comprimidor que utilicemos. En mi caso 7z, que consigo buenos ratios de compresión. Para instalarlo en Ubuntu:

sudo apt-get install p7zip-full

Aquí cada uno es libre de utilizar el que desee (zip, rar, tar.gz… )

nuestro script

Nos vamos al /home/nombreusuario, y con cualquier editor (kate, gedit…) creamos un fichero llamado backup.sh

Lo tenemos? Pues en su interior añadimos las siguientes lineas (atentos que tendréis que adaptarlas a vuestras necesidades):

#!/bin/bash
cd /opt/lampp/htdocs/
for dir in $(dir -D)
do 
7z a -t7z /tmp/Proyectos-$dir.7z $dir -mx9 -pNuestroPassword;
done
exit
  • La primera linea indica que es un ejecutable que interpretará bash.
  • La segunda, nos lleva al directorio donde estan todas las carpetas a comprimir por separado.
  • En la tercera linea empieza el for que recorre todas las carpetas.
  • En la quinta, la orden que comprime las carpetas que va recorriendo el for ($idr).

me guastaría remarcar que en la orden de 7z, por un lado le digo dónde debe ir a parar el fichero comprimido (/tmp/Proyectos-$dir.7z) y por otro, le indico que carpeta comprimir ($dir). Además le digo que lo comprima lo máximo (-mx9) y que le ponga contraseña (-pNuestroPassword)

Ya tenemos el script

Ahora guardáis el fichero, y volvéis a estar en el terminal Ubuntu. Ahora tenemos que hacer que el fichero que hemos creado tenga permisos de ejecución. Tan simple como ejecutar la orden:

chmod +x backup.sh

Backup

Pues ya podemos ejecutar el backup con la siguiente orden:

./backup.sh

Espero que os sirva de ayuda para organizar y agilizar vuestras copias de seguridad.

Espero que os haya sido de utilidad el artículo para crear script para backup de carpetas desde consola en Ubuntu utilizando 7z para comprimir.

Actualización
En el siguiente enlace veréis como añadir la fecha al nombre del fichero resultante del backup
Bash – Script para backup de carpetas desde consola (2)


Más información