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:
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)
:
Otra advertencia, ahora avisándonos de que rclone quiere acceder a nuestra cuenta Google, justo lo que necesitamos. Pinchamos en Continuar
:
El navegador nos informará de que el acceso ha sido completado con éxito, y nos invitara a volver a la configuración de rclone:
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 &
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