Sincronizar tus datos de Google Drive en Linux

Sincronizar tus datos de Google Drive en Linux

Hace ya unos meses os ofrecí en este artículo sobre rclone, una de las mejores formas de poder conectar (montar) un directorio remoto de Google Drive en un directorio de tu equipo local. Últimamente me han comentado muchos linuxeros que lo han probado, si se puede sincronizar de forma automática los cambios en tus ficheros y directorios (carpetas) de Drive con un directorio local del sistema de Linux.

He estado investigando y hay algunas opciones para hacerlo, pero no he encontrado ninguna que sea libre y gratuita. Por eso, me he decidido a escribir esta entrada que acompañaré con un vídeo de Youtube, explicando cual sería la mejor alternativa para poder tener tus datos sincronizados con la nube en Google Drive.

NOTA: Antes de empezar, por si acaso haz siempre una copia de seguridad de tus datos para no perder nada

Si quieres empezar a dar tus primeros pasos con Linux y no sabes por dónde empezar, te ofrezco en esta misma página el curso básico de Linux totalmente gratis para que comiences a explorar este maravilloso sistema.

Comprobamos el espacio ocupado por lo datos

En primer lugar tenemos que asegurarnos de que todos los ficheros y directorios que queremos tener sincronizados en nuestro equipo local, van a caber en nuestro disco duro. Para ello existen algunas formas de comprobar el espacio ocupado en Google Drive.

La más sencilla es ir directamente a la página web de tu cuenta de Google Drive y donde pone “Almacenamiento”, hacemos click. Una vez pasamos a la siguiente vista, podemos ver el espacio ocupado y disponible de nuestra cuenta de Google. Y veremos diferenciado por colores, el espacio ocupado por Google Photos, Gmail y Google Drive. Si pulsamos en el color de Google Drive podemos ver una vista similar a esta:

Ocupación del espacio en Drive

Otra opción es revisar estos tamaños mediante el uso de los directorios directamente de Linux. Para ello, por supuesto, deberás haber realizado ya la configuración de “Rclone” en tu equipo para poder tener montado el directorio de Google Drive.

Una vez montado, entramos en el directorio y seleccionas con el ratón todos los ficheros y directorios que están contenidos dentro. Cuando lo tenemos todo seleccionado, pulsas con el botón derecho del ratón y en “Propiedades” nos ofrecerá la información del almacenamiento ocupado por los ficheros alojados en Google Drive.

Otra opción, pulsar el botón derecho del ratón dentro del directorio montado por Rclone o acceder directamente por la terminal, y ejecutar el comando:

du -sh

Una vez que sabemos exactamente o al menos de una forma bastante aproximada el tamaño que va a ocupar la información que está en Google Drive, tenemos que asegurar que podemos almacenar estos datos en nuestro sistema. Para ello puedes utilizar una aplicación como el monitor de sistema que viene incluido en GNOME o directamente ejecutar en la línea de comandos:

df -h

En mi caso tengo esta salida, por lo que me sobraría espacio para alojar la información que tengo en Google Drive.

Ocupación del espacio en mi almacenamiento

Creamos un script ejecutable

A continuación debemos crear un fichero ejecutable que será el que usemos cuando queramos sincronizar los datos de Google Drive con nuestro equipo local.

Para eso puedes crear un fichero al que vamos a llamar de una forma super original, “sincronizar_remoto_a_local.sh”. Y a continuación vamos a darle permisos de ejecución. Estos pasos los podemos hacer con estos comandos:

mkdir scripts
cd scripts
touch sincronizar_remote_a_local.sh
chmod u+x sincronizar_remote_a_local.sh
ls -l sincronizar_remote_a_local.sh 
-rwxrw-r-- 1 jaime jaime 482 jun 20 12:15 sincronizar_remote_a_local.sh

Sincronizar tus datos de Drive en Linux local

Ahora si que toca ponernos manos a la obra… En el vídeo te explico paso a paso porque utilizaremos cada una de las líneas de este script. Solo quiero que tengas en cuenta que la opción “–delete” de rsync hace que cuando un fichero o directorio no se encuentra en el origen (en este caso en el directorio de Drive, REMOTE) pero si existe en el destino, va a borrarlo del directorio destino. Si no quieres que se realice esta acción, es mejor que quites la opcion de “delete”.

Pero para hacerlo más sencillo, tan solo tendrás que copiar este script:

#!/bin/bash

LOCAL="/var/drive_local/"
REMOTE="/home/jaime/gdrive/"

# Montamos el directorio de Google Drive
/usr/bin/rclone mount gdrive: $REMOTE  2>&1 > /dev/null &
# Esperamos 10 segundos a que termine de montarse correctamente
/usr/bin/sleep 10

# Comprobamos que esta montado
montado=`/usr/bin/df | /usr/bin/grep gdrive`
if [ ${#montado} != 0 ];then 
	
	echo "Esta montado, comienza la sincronizacion"

	# Sincronizamos con el directorio local
	/usr/bin/rsync -auv --delete $REMOTE $LOCAL 

	# Esperamos a que termine de sincronizarse todo
	/usr/bin/sync
	/usr/bin/sleep 2

	# Desmontamos el directorio remoto
	/usr/bin/fusermount -u $REMOTE
else
	echo "No esta montado, no se sincroniza"
fi

Sincronizar tus datos locales en Linux a Drive

Ahora deberíamos pensar en el camino contrario. Tu has trabajado en Local con tus datos y ahora quieres que esos datos se sincronicen con los datos remotos que tienes en tu nube de Google Drive.

El script es muy similar al anterior, y solo cambiaría el orden del ORIGEN y el DESTINO para rsync. Como en el punto anterior, te recuerdo que la opción “–delete” de rsync hace que cuando un fichero o directorio no se encuentra en el origen (en este caso en el directorio LOCAL) pero si existe en el destino (REMOTE), va a borrarlo del directorio destino.

#!/bin/bash

LOCAL="/var/drive_local/"
REMOTE="/home/jaime/gdrive/"

# Montamos el directorio de Google Drive
/usr/bin/rclone mount gdrive: $REMOTE  2>&1 > /dev/null &
# Esperamos 10 segundos a que termine de montarse correctamente
/usr/bin/sleep 10

# Comprobamos que esta montado
montado=`/usr/bin/df | /usr/bin/grep gdrive`
if [ ${#montado} != 0 ];then 
	
	echo "Esta montado, comienza la sincronizacion"

	# Sincronizamos con el directorio local
	/usr/bin/rsync -auv --delete $LOCAL $REMOTE 

	# Esperamos a que termine de sincronizarse todo
	/usr/bin/sync
	/usr/bin/sleep 2

	# Desmontamos el directorio remoto
	/usr/bin/fusermount -u $REMOTE
else
	echo "No esta montado, no se sincroniza"
fi

Sincronizar on login o automatizarlo con crontab

Ahora la duda sería, ¿cuándo quieres sincronizar tus datos en la nube? ¿Cuando quieres que tus datos de la nube se sincronicen con los datos locales?

Aquí si existe la posibilidad de hacerlo cuando uno quiera, ejecutando cada uno de los scripts cuando lo consideres necesario o hacerlo de forma automática. Yo solo te voy a ofrecer mi humilde opinión, pero puede que no coincida con la tuya.

Yo lo que hago es una sincronización de los datos remotos en local al hacer login. Así cuando voy a empezar a trabajar sé que voy a tener disponibles los últimos datos que he modificado en la nube. Esto se puede hacer de varias formas, pero ayudándonos de las herramientas que están disponibles en muchas distros, yo he usado la opción de “Preferencias de las aplicaciones al inicio”.

Sincronizar Drive en Linux al inicio

Luego la mejor opción para mi es sincronizar cada 5 minutos mis datos locales con los datos remotos. Para ello he utilizado el crontab de mi cuenta poniendo esta directiva:

# m h dom mon dow command
*/5 *  *   *   *  /home/jaime/scripts/sincronizar_local_a_remote.sh >> /tmp/sincronizacion.log

Si no sabes usar CRON correctamente, te recomiendo que veas el vídeo en el que te ayudo a entender CRONTAB de forma sencilla.

Vídeo completo para sincronizar Drive en Local para Linux

Este es el vídeo donde puedes ver el proceso paso a paso.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *