Sincronizar Google Drive con rClone

rClone logo

Además de Dropbox o pCloud, existen muchos otros proveedores de almacenamiento en la nube y no todos tienen aplicación nativa para escritorio o, lo que es peor, no la tienen para Linux. Uno de ellos es Drive de Google. Los usuarios de este servicio llevamos años esperando una aplicación que nos permita acceder a él cómo si fuese una unidad más de nuestro equipo como lo hacen los dos proveedores anteriores.


Por suerte, tenemos una potente herramienta que nos permite conectar estos servicios. Se trata de rClone, en esta publicación veremos como instalarla, configurarla y ponerla en marcha fácilmente.

API Google

Más adelante necesitaremos nuestra identificación en Google, por lo tanto, empezaremos creando la nuestra en Drive. Tenemos toda la información detallada en el sitio de rClone.

Iniciamos sesión en la consola API de Google y seleccionaremos o crearemos un proyecto nuevo. Haremos clic en Enable APIS and services y, a continuación, localizaremos Google Drive API y la activaremos con Enable.

A continuación haremos clic en Credentials, en el panel izquierdo, y luego en + Create credentials.

Seleccionaremos OAuth client ID y haremos clic en el boton Configure consent screen, seleccionaremos Externo y haremos clic en CREATE.

Introduciremos un nombre para la aplicación, por ejemplo rClone, y un correo electrónico válido de soporte de usuario, y otro para el desarrollador. El resto de datos son opcionales. Guardaremos y continuaremos. Volvemos a Credentials, en el panel izquierdo.

Haremos clic en + CREATE CREDENTIALS, en la parte superior de la pantalla, y seleccionaremos OAuth client ID.

Elegimos Desktop app como tipo de aplicación y pulsaremos en CREATE.

En ese momento nos aparecerán el id cliente y la llave secreta del cliente. Tomaremos nota de los dos.

Volvemos a OAuth consent screen, y publicaremos la aplicación recién creada.

rClone

Ahora será el turno de instalar la aplicación en nuestro equipo:

sudo pacman -Sy rclone

Para empezar el asistente que nos guiará en todo el proceso, ejecutaremos:

rclone config

Empezaremos introduciendo n para iniciar una nueva conexión, y a continuación introduciremos un nombre para la conexión, por ejemplo gdrive:

2021/11/04 05:27:54 NOTICE: Config file "/home/user/.config/rclone/rclone.conf" not found - using defaults
No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n
name> gdrive

A continuación listará los proveedores que están disponibles. A fecha de hoy, más de 40 servicios:

...
13 / FTP Connection
   \ "ftp"
14 / Google Cloud Storage (this is not Google Drive)
   \ "google cloud storage"
15 / Google Drive
   \ "drive"
16 / Google Photos
   \ "google photos"
17 / Hadoop distributed file system
   \ "hdfs"
18 / Hubic
   \ "hubic"
...

El que nos interesa ahora es Drive de Google, lo buscaremos en la lista, y lo introduciremos:

Storage> 15

A continuacion, nos pedirá introducir el id cliente y su correspondiente llave secreta:

Google Application Client Id
Setting your own is recommended.
See https://rclone.org/drive/#making-your-own-client-id for how to create your own.
If you leave this blank, it will use an internal key which is low performance.
Enter a string value. Press Enter for the default ("").
client_id> xxxxxxxxxxxx-nnnnnnnnnnnnnnnnnnnnnnnn.apps.googleusercontent.com
OAuth Client Secret
Leave blank normally.
Enter a string value. Press Enter for the default ("").
client_secret>nnnnnnnn-xxxxxxxxxxxxxxxxxxxxxxxxx

Seguimos con la configuración, y ahora tendremos que elegir el tipo de permisos que usará rclone al conectarse a Drive. Necesitaremos un acceso completo a todos los ficheros, excluyendo la carpeta de datos de la aplicación, por lo tanto elegiremos la opción 1:

Scope that rclone should use when requesting access from drive.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
 1 / Full access all files, excluding Application Data Folder.
   \ "drive"
 2 / Read-only access to file metadata and file contents.
   \ "drive.readonly"
   / Access to files created by rclone only.
 3 | These are visible in the drive website.
   | File authorization is revoked when the user deauthorizes the app.
   \ "drive.file"
   / Allows read and write access to the Application Data folder.
 4 | This is not visible in the drive website.
   \ "drive.appfolder"
   / Allows read-only access to file metadata but
 5 | does not allow any access to read or download file content.
   \ "drive.metadata.readonly"
scope> 1

En los tres próximos pasos, dejaremos en blanco la opción, para aceptar los valores propuestos por defecto:

ID of the root folder
Leave blank normally.

Fill in to access "Computers" folders (see docs), or for rclone to use
a non root folder as its starting point.

Enter a string value. Press Enter for the default ("").
root_folder_id>
Service Account Credentials JSON file path
Leave blank normally.
Needed only if you want use SA instead of interactive login.

Leading `~` will be expanded in the file name as will environment variables such as `${RCLONE_CONFIG_DIR}`.

Enter a string value. Press Enter for the default ("").
service_account_file>
Edit advanced config?
y) Yes
n) No (default)
y/n> 

Usaremos la auto configuración, por la tanto, una vez más, validaremos el valor por defecto, en este caso y:

Use auto config?
 * Say Y if not sure
 * Say N if you are working on a remote or headless machine

y) Yes (default)
n) No
y/n>

El asistente se quedará en espera del código, y nos abrirá nuestro navegador favorito:

2021/11/04 06:07:17 NOTICE: Make sure your Redirect URL is set to "urn:re:wwgg:oauth:2.0:opob" in your custom config.
2021/11/04 06:07:17 NOTICE: If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth?state=63s9p7opeewWHFkqC8CFpes
2021/11/04 06:07:17 NOTICE: Log in and authorize rclone for access
2021/11/04 06:07:17 NOTICE: Waiting for code...

En el navegador recién abierto, seleccionaremos una de las cuentas Google para acceder a la aplicación rclone:

Seleccionaremos una cuenta de Google

Una vez seleccionada, nos saldrá una advertencia. Tranquilos, sólo nos avisará de que Google no ha verificado esta aplicación, pero como la hemos creado nosotros mismos, no debería haber ningún problema. Pincharemos en Configuración avanzada, y a continuación Ir a rclone (no seguro):

Aviso de seguridad

Otra advertencia, ahora avisándonos de que rclone quiere acceder a nuestra cuenta Google, justo lo que necesitamos. Pinchamos en Continuar:

Confirmar acceso

El navegador nos informará de que el acceso ha sido completado con éxito, y nos invitara a volver a la configuración de rclone:

¡Éxito!

El asistente retomará la configuración obteniendo el código que necesitaba, y continuaremos validando de nuevo la opción por defecto:

2021/11/04 06:08:10 NOTICE: Got code
Configure this as a Shared Drive (Team Drive)?

y) Yes
n) No (default)
y/n>

Seguidamente nos mostrará toda la información recopilada y estará en espera de que confirmemos con y, opción por defecto, que todo es correcto:

[gdrive]
type = drive
client_id = xxxxxxxxxxxx-nnnnnnnnnnnnnnnnnnnnnnnn.apps.googleusercontent.com
client_secret = nnnnnnnn-xxxxxxxxxxxxxxxxxxxxxxxxx
scope = drive
token = {"xxxxxx-nnnnnnnnn"}
team_drive =
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> y

La configuración habrá terminado, y nos propondrá varias opciones. Podremos salir con la opción q:

Name                 Type
====                 ====
gdrive               drive

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> q

Montando la unidad desde la terminal

Crearemos la carpeta dónde queremos que se monte la unidad recién creada. Por ejemplo:

mkdir ~/Documentos/cloud/drive

Y ahora simplemente ejecutamos el comando siguiente:

rclone --vfs-cache-mode writes mount gdrive: ~/Documentos/cloud/drive &

Unidad Drive montada correctamente en Nemo

Para desmontar la unidad:

fusermount -u ~/Documentos/cloud/drive

Es posible que el comando nos retorne un mensaje de dispositivo ocupado. En la mayoría de las ocasiones, debería ser suficiente esperar unos instantes para volver a intentarlo.

Montando la unidad con systemd

Creamos el servicio:

sudo nano /etc/systemd/system/gdrive.service
[Unit]
Description=Rclone mount google drive
OnFailure=unit-status-telegram@%n.service
After=multi-user.target

[Service]
Type=simple
User=usuario
Group=users
ExecStart=/usr/bin/rclone mount --config "/home/usuario/.config/rclone/rclone.conf" --allow-non-empty --dir-cache-time 15m gdrive: /home/usuario/Documentos/cloud/drive/
ExecStop=/usr/bin/fusermount -uz /home/usuario/Documentos/cloud/drive
Restart=on-abort

[Install]
WantedBy=default.target

Es posible que nos pida recargar antes de arrancar el servicio:

sudo systemctl daemon-reload

Y como es habitual, arrancaremos el servicio con start y pararemos con stop. Nota: Siempre es recomendable desmontar las unidades correctamente y más en el caso de rClone:

sudo systemctl start gdrive
sudo systemctl stop gdrive

En el caso de querer montar la unidad Drive en el arranque, activaremos con enable:

sudo systemctl enable gdrive

Soy Jaume Ferré, aficionado a los nuevas tecnologias, aunque ya no lo son tanto.
¡Gracias por leerme!

Valora este artículo1 2 3 4 5 (0 votos)

(0 votos)

Categorias del blog

twitter

Últimos tweets