Nombre de rsync.sh.
#!/bin/sh
# rsync.sh
#
# Ejecutar como root: $sh rsync.sh
# Para que os funcione, tendréis que cambiar la dirección de origen y destino
#
echo ""
echo "~*~*~*~*~*~*~*~*~*~*~*~*~*"
echo "Backup de mi proyecto"
echo ""
echo "~*~*~*~*~*~*~*~*~*~*~*~*~*"
zip -ur Proyecto.zip Proyecto/
rsync -vurt --progress --delete /home/manolo/Proyecto.zip /media/PENSITO/
echo ""
echo "~*~*~*~*~*~*~*~*~*~*~*~*~*"
echo "Todo hecho!"
Como véis, existen dos líneas donde se realiza todo el trabajo, pues las demás son órdenes echo para imprimir por pantalla.
- La orden
zip -ur Proyecto.zip Proyecto/comprime mi carpeta proyecto en un archivo con extensión .zip del mismo nombre. Los argumentos-urindican que se compriman sólo ficheros nuevos o actualizados, y que se comprima de manera recursiva, es decir, que se comprimen todo lo que haya en la carpetaProyecto. La idea es que cada vez que se ejecute el script, solamente se añaden los ficheros/carpetas nuevos o con actualizaciones al fichero .zip que ya existe. Cuando el script se ejecuta por primera vez, dicho .zip no existe, pero se crea. - La orden
rsync -vurt --progress --delete /home/manolo/Proyecto.zip /media/PENSITO/sincroniza mi disco local con mi pendrive, de tal forma que copia desde un origen,/home/manolo/Proyecto.zip, el fichero .zip generado con anterioridad a un destino,/media/PENSITO/,en mi pendrive de nombrePENSITO. Los argumentos utilizados son:-u: comprueba, antes de sincronizar, que lo que se desea copiar sea más actual que la copia que existe en el lugar de destino (pendrive).-r: la sincronización se realiza de manera recursiva (en esta caso no es necesario pues solo se sincronizará un fichero).- -t: preserva los tiempos de modificación.
--progress: va mostrando por pantalla el proceso de sincronización.--delete: elimina algún tipo de fichero extraño en el destino.
Algunos quizás conozcáis el comando rsync y otros no, y supongo que os preguntaréis que porque comprimo mi proyecto y luego lo sincronizo, pues si rsync es capaz de sincronizar carpetas, sería mejor sincronizar la carpeta del proyecto en sí y listo. El problema es que al trabajar con distintos medios en el que sus sistemas de archivos son diferentes (disco duro-ext3 y pendrive-fat32) existen algunos ficheros con caracteres tipo -/_.” que no se permiten en el pendrive y cuando se intentan sincronizar esos archivos, no se puede. Si buscáis por Internet, os encontraréis alguna que otra solución difícil. La verdad, es que me constó un poco solucionar el problema, pues en un principio comprimía todo el proyecto y sincronizaba, pero la utilizar el argumento -u al comprimir, todo va sobre ruedas.