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.
- #!/bin/bash
- #Primer Script por @1gbDeInfo
- #fecha=$(date +"%D_%H_%M")
- #Carpeta que queremos guardar
- guarda=/home/rober/Datos
- #Donde guardamos el backup
- destino=/home/rober/backup
- #comando de copia con rsync
- rsync -avvb --backup-dir=/home/rober/backup --delete -u --no-whole-file ${guarda} ${destino} >> /home/rober/backup/log.txt
- #
- #
- echo _________________________________
- echo
- echo "Copia finalizada con exito"
- echo _________________________________
- echo
- 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:
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.
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.
- #!/bin/bash
- #Primer Script por @1gbDeInfo
- #FECHA=`date +"%D_%H_%M`
- #Carpeta que queremos guardar
- guarda=/home/rober/Documentos
- #Donde guardamos el backup
- destino=/home/rober/backup
- echo
- echo
- echo "Haciendo backup de los datos"
- echo
- #comando de copia diferencial con rsync
- rsync -avvb --backup-dir=/home/rober/backup --delete -u --no-whole-file ${guarda} ${destino} >> /home/rober/backup/log.txt
- #
- #
- echo _________________________________
- echo
- echo "Copia finalizada con exito"
- echo _________________________________
- echo
- echo
- #Comprimimos lo que hemos guardado
- echo "....Comprimiendo el backup"
- echo
- cd /home/rober/backup/ && tar zcf cseguridad.tar.gzp $destino
- echo
- echo _______________________________
- echo
- echo "*****Finalizado*****"
- echo _______________________________
- echo
- echo
Roberto García (@1GbDeInfo)