Pages

Ads 468x60px

lunes, 15 de septiembre de 2014

Mini-Script para automatizar un backup





Bueno, como lo prometido es deuda, he conseguido hacer un pequeño script (que me perdonen los puristas de Linux xD) que automatiza la copia de seguridad que vimos como se hacía el otro día.

Me ha llevado casi una hora dar con ello (suponiendo que es la primera vez que hago un script en linux) pero lo importante es que no me he rendido y he sido capaz jeje.

Vamos al lío. Recordemos que habíamos hecho un backup manual de un fichero, pero claro, eso no nos vale de mucho ni siquiera para hacerlo en casa. Así que, vamos a teclear un poco.

Os dejo el script en sí y ahora vamos completando la información.

  1. #!/bin/bash
  2. #Primer Script por @1gbDeInfo
  3. #fecha=$(date +"%D_%H_%M")
  4. #Carpeta que queremos guardar
  5. guarda=/home/rober/Datos
  6. #Donde guardamos el backup
  7. destino=/home/rober/backup
  8. #comando de copia con rsync
  9. rsync -avvb --backup-dir=/home/rober/backup --delete -u --no-whole-file ${guarda} ${destino} >> /home/rober/backup/log.txt
  10. #
  11. #
  12. echo _________________________________
  13. echo
  14. echo  "Copia finalizada con exito"
  15. echo _________________________________
  16. echo
  17. echo


Creáis una carpeta llamada scripts con mkdir scripts y el script lo guardáis en /home/rober/scripts.

Como veis es un script "guarrypeich" (y si, he estado una hora :() bastante sencillo en el que solo tenemos que pasarle la ruta de donde están los datos que queremos guardar y la ruta donde queremos dejarlo.

Aún estoy empezando, así que ni crea carpetas de manera automática ni 'na'. Nos toca hacerlo a mano, pero bueno, algo es algo, intentaré mejorarlo poco a poco. 

La cuestión es la siguiente. Creamos una carpeta llamada Datos en /home/rober con mkdir Datos. También creamos una carpeta llamada backup en la misma ruta con mkdir backup. Y dentro de la carpeta backup creamos un fichero de texto llamado log.txt (esta vez con nano, para variar jeje) con nano log.txt. Lo dejamos en blanco y pulsamos la tecla control + o para guardar y control + x para salir.




Nota: Para que podamos ejecutar el script hay que darle permisos con chmod +x backup3.sh y chmod 0755 backup3.sh 

Ya tenemos el script por un lado y las carpetas creadas por otro. Ahora es el momento de meterlo en el crontab con el comando crontab -e lo que nos abre el fichero, y en la ultima linea añadimos la siguiente:

     00 23 * * * /home/rober/scripts/backup3.sh

Lo que hará que todos los días a las 23:00 ejecute el script y éste haga el backup. Os recomiendo que le peguéis un buen vistazo a este enlace (o cualquier otro) que explique el funcionamiento de cron.

Bueno pues ya lo tenemos todo. Vamos a ejecutarlo de forma manual porque no me voy a esperar hasta las 23:00 para ver si funciona :P (ya esta probado y funciona ok).

Lo primero es ir a la ruta donde tenemos el script. Para ello /home/rober/scripts y acto seguido lo ejecutamos escribiendo ./backup3.sh 




Como veis no sale nada más que "copia finalizada con éxito" que no es mas que una broma porque si da un error aparece lo mismo, más el error jeje.

Entre medias, hemos creado un archivo en /home/rober/Datos llamado texto.txt que es el que nos guardará el backup (en realidad toda la carpeta Datos) en /home/rober/backup 
Bien, pues vamos a ver que pasa en la carpeta backup. Vamos a ella con /home/rober/backup 




Como podemos ver en la imagen, hay una carpeta llamada Datos que contiene el backup con su fichero texto.txt y también está el fichero log.txt que contiene lo siguiente:




Nos dice los archivos y carpetas que ha guardado, que la copia es incremental (es decir, solo guardará los ficheros nuevos o modificados) y el tiempo que ha tardado (entre otras).

Si quisiéramos ver la fecha de acceso, modificación, cambio etc, con un stat log.txt podríamos verlo.




Y esto es todo. El script a pesar de ser el primero y muy muy básico, cumple su misión y funciona.

Actualizacion: He "mejorado" algo el script, ahora ademas de la copia de los archivos en la carpeta backup, también lo comprime. A continuación dejo el nuevo script.

  1. #!/bin/bash
  2. #Primer Script por @1gbDeInfo
  3.  
  4. #FECHA=`date +"%D_%H_%M`
  5. #Carpeta que queremos guardar
  6. guarda=/home/rober/Documentos
  7. #Donde guardamos el backup
  8. destino=/home/rober/backup
  9. echo
  10. echo
  11. echo "Haciendo backup de los datos"
  12. echo
  13. #comando de copia diferencial con rsync
  14. rsync -avvb --backup-dir=/home/rober/backup --delete -u --no-whole-file ${guarda} ${destino} >> /home/rober/backup/log.txt
  15. #
  16. #
  17. echo _________________________________
  18. echo
  19. echo  "Copia finalizada con exito"
  20. echo _________________________________
  21. echo
  22. echo
  23. #Comprimimos lo que hemos guardado
  24. echo "....Comprimiendo el backup"
  25. echo
  26. cd /home/rober/backup/ && tar zcf cseguridad.tar.gzp $destino
  27.  
  28. echo
  29. echo _______________________________
  30. echo
  31. echo  "*****Finalizado*****"
  32. echo _______________________________
  33. echo
  34. echo

Roberto García (@1GbDeInfo)


Creative Commons Licence
1Gb De informacion by Roberto García Amoriz is licensed under a Creative Commons Attribution-NonCommercial 3.0 Unported License.
Based on a work at http://www.1gbdeinformacion.com/.
Permissions beyond the scope of this license may be available at http://www.1gbdeinformacion.com/.

Perfil profesional en Linkedin

 
Blogger Templates