La sincronización de carpetas entre la Raspberry y el servidor la vamos a hacer con rsync, que viene ya con el sistema y no hace falta instalar nada.
En el servidor, en el home de pi, vamos a crear un par de carpetas. Crearemos primero una que vamos a llamar «datos» y dentro de esta crearemos otra que llamaremos «pantallas». En «pantallas» iremos metiendo los archivos que queramos reproducir. Luego, más adelante, dentro de la carpeta «datos» crearemos otra para otras cosas, pero esto lo veremos en una entrada posterior.

En cuanto a la Raspberry no nos complicamos mucho, en su home ya tiene una carpeta llamada Videos, así que usaremos esa.
Colocamos para probar un par de archivos pequeñitos en la carpeta «pantallas» y probamos la sincronización con la siguiente instrucción:
rsync --progress --delete -rtvu pi@ip_del_servidor:/home/pi/datos/pantallas/ /home/pi/Videos/
Nos pedirá la clave para hacer la conexión, se la ponemos y comprobamos, gracias a la opción progress, que se realiza la transferencia de los archivos. Comprobamos igualmente que los archivos se han copiado a la Raspberry.
Ahora borramos uno de esos archivos de la carpeta «pantallas» y volvemos a ejecutar la misma instrucción:
rsync --progress --delete -rtvu pi@ip_del_servidor:/home/pi/datos/pantallas/ /home/pi/Videos/
Tenemos que comprobar que tras ello, el archivo que hemos borrado se ha borrado ahora de la carpeta de la Raspberry.
Si esto ha funcionado ya estamos en disposición de seguir adelante, ahora toca combinar rsync con ssh para que esto lo haga sin pedir la clave. Ponemos algo en «origen» para que tenga algo que actualizar y la instrucción que buscamos es esta (hay que ejecutarla desde /home/pi Recordamos que al fichero de claves le hemos llamado «miclave», así que la instrucción será algo así:
rsync --progress --delete -rtvu -e "ssh -i /home/pi/.ssh/miclave" pi@ip_del_servidor:/home/pi/datos/pantallas/ /home/pi/Videos/
Donde obviamente habrá que sustituir «miclave» por el nombre que hayamos dado al fichero e «ip_del_servidor» por la que corresponda.
Debemos de conseguir que la carpeta Videos se actualice y lo haga sin pedirnos la clave para la conexión, y si hemos seguido los pasos de la entrada correctamente, no debería haber ningún problema.
Una vez acabadas las pruebas ya no nos hace falta la opción progress, así que la instrucción definitiva quedará así:
rsync --delete -rtvu -e "ssh -i miclave" pi@ip_del_servidor:/home/pi/datos/pantallas/ /home/pi/Videos
El resto de las opciones, para saber lo que estamos haciendo, son:
–delete: Borra cualquier archivo que no esté en la carpeta «pantallas»
-r: Carpeta y subcarpetas. No usaremos subcarpetas, pero esta opción es necesaria para que funcione la anterior, delete
-t: Conserva la fecha y hora de modificación
-u: Actualiza, sólo copia los ficheros que faltan o reemplaza con versiones nuevas.
-v: Verbosity: Aumenta la información sobre lo que está haciendo
La que hemos quitado corresponde a:
–progress: Muestra el progreso del copiado de archivos
Y listo. Pero por supuesto esto ha de funcionar antes de seguir adelante.
Vamos creando ya el script para la sincronización de las carpetas. De momento muy simple, conteniendo sólo la instrucción, más adelante lo completaremos con otras funcionalidades.
Lógicamente habrá que cambiar 888.888.888.888 por la IP del servidor.
También se puede ver que se ha añadido una nueva opción –timeout=60 Esto lo que hace es que si en 60 segundos no se ha transferido ningún dato la conexión se aborta y se lanza un error. No quiere decir que la actualización tenga que durar un minuto, sino estar un minuto sin transferencia de datos.
Bautizamos al script como actualiza.sh y probamos que funcione todo correctamente:
bash actualiza.sh
Ficheros tratados en esta entrada
-
- actualiza.sh: script de sincronización de carpetas
- Carpeta origen: imágenes y vídeos en el servidor
- Carpeta Videos: imágenes y vídeos en la Raspberry
- actualiza.sh: script de sincronización de carpetas