Cómo montar OneDrive en GNU Linux con rclone.

Cómo montar OneDrive en GNU Linux con rclone

Miguel Menéndez

OneDrive, el servicio de almacenamiento de Microsoft, a diferencia de otras opciones de almacenamiento en “la nube” como Mega o Internxt, no tiene un cliente nativo de escritorio para GNU Linux.

Recuerda que, en cualquier caso, siempre puedes usar un navegador web para interactuar con tu contenido en OneDrive desde GNU Linux.

Si no le tienes demasiado miedo al emulador de terminal, a continuación voy a usar el programa rclone para montar una unidad de MS OneDrive en un directorio de GNU Linux y usarla de forma transparente.

rclone

Rclone es un programa que te permitirá montar y sincronizar un directorio local de GNU Linux con numerosos servicios de almacenamiento remoto (Google Drive, Dropbox, Nextcloud, Amazon Web Services S3 y otros 40 servicios más).

Con esta utilidad, puedes realizar copias de seguridad remotas, recuperar archivos desde “la nube”, replicar datos, migrar datos entre servicios o, incluso, usar múltiples servicios remotos de almacenmiento como un disco local.

Recuerda consultar las limitaciones de OneDrive en cuanto a tráfico (peticiones/tiempo, velocidad de subida y bajada…) y tamaño máximo de los archivos (250GB en el momento de escribir esto) porque puede que no se adapte a tus necesidades y tengas que recurrir a otros servicios como Azure o AWS S3.

Cómo montar una unidad de Microsoft OneDrive en GNU Linux con rclone

Usar rclone no es tan complicado como parece. Requiere, eso sí, paciencia y tener cierta soltura con el emulador de terminal.

1. Instala rclone

En Debian y derivados:

$ sudo apt install rclone

En Arch y derivados:

$ sudo pacman -S rclone

2. Añade el servicio remoto

$ rclone config

Si es la primera vez que ejecutas rclone, debes añadir un nuevo servicio remoto. Pulsa n para añadir un nuevo servicio remoto:

$ rclone config
NOTICE: Config file "/home/miguel/.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>

Ahora introduce el nombre del nuevo servicio. Puedes elegir cualquier nombre que sea descriptivo del servicio. Es este ejemplo, vamos a usar “OneDrive”:

$ rclone config
NOTICE: Config file "/home/miguel/.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> OneDrive

Después de darle un nombre al nuevo servicio, verás una lista numerada con todos los servicios soportados por rclone (Google Drive, Box…):

[...]
21 / Microsoft OneDrive
   \ "onedrive"
22 / OpenDrive
   \ "opendrive"
[...]
Sotorage>

Debes introducir el número del servicio que quieres usar. En este ejemplo, a Microsoft OneDrive le corresponde el número 21:

[...]
21 / Microsoft OneDrive
   \ "onedrive"
22 / OpenDrive
   \ "opendrive"
[...]
Sotorage> 21

Deja client_id y client_secret en blanco. Rechaza la configuración avanzada y dile que sí quieres usar la autoconfiguración:

Microsoft App Client Id
Leave blank normally.
Enter a string value. Press Enter for the default ("").
client_id>
Microsoft App Client Secret
Leave blank normally.
Enter a string value. Press Enter for the default ("").
client_secret>
Edit advanced config? (y/n)
y) Yes
n) No
y/n> n
Remote config
Use auto config?
 * Say Y if not sure
 * Say N if you are working on a remote or headless machine
y) Yes
n) No
y/n>

Cuando pulses Y e Intro, se abrirá tu navegador web para que inicies sesión con tu cuenta de Microsoft, cuando te pregunte si deseas conceder permisos de acceso, lectura y escritura a rclone, dile que sí:

Microsoft Login.

Ahora debes seleccionar el tipo de cuenta. En este ejemplo, se trata de una cuenta de OneDrive personal o de empresa:

Choose a number from below, or type in an existing value
 1 / OneDrive Personal or Business
   \ "onedrive"
 2 / Root Sharepoint site
   \ "sharepoint"
 3 / Type in driveID
   \ "driveid"
 4 / Type in SiteID
   \ "siteid"
 5 / Search a Sharepoint site
   \ "search"
Your choice> 1
Found 1 drives, please select the one you want to use:
0:  (personal) id=a98x4l1p985q0083
Choose drive to use:>

Si tuvieses varias unidades de OneDrive asignadas a tu cuenta de Microsoft, se mostrarán de forma numerada. En este ejemplo, sólo hay una unidad personal, la 0:

Found 1 drives, please select the one you want to use:
0:  (personal) id=a98x4l1p985q0083
Choose drive to use:> 0
Found drive 'root' of type 'personal', URL: https://onedrive.live.com/?cid=a98x4l1p985q0083
Is that okay?
y) Yes
n) No
y/n> y

Para finalizar esta configuración de rclone, debes guardarla:

[OneDrive]
token = {"access_token":":DLKjf39ruKDJL29uldskdjf10ewlfkJLKEJLKSHDE[...]"}
drive_id = a98x4l1p985q0083
drive_type = personal
--------------------
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y

Y sales con q del asistente de configuración de rclone:

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

$

3. Monta OneDrive en un directorio local

Crea una carpeta en tu directorio personal:

$ mkdir ~/OneDrive

Y monta la unidad de OneDrive en ese directorio:

$ rclone --vfs-cache-mode writes mount "OneDrive": ~/OneDrive

En la anterior línea, “OneDrive” es el nombre que le pusimos al servicio remoto en el paso 2.

Si abres el explorador de archivos, verás que aparece una nueva unidad llamada OneDrive (en /home/miguel/OneDrive/) con el contenido de tu espacio de almacenamiento en “la nube” de OneDrive.

Si finalizas el anterior comando (con Ctrl + C) o cierras la ventana del terminal la unidad se demontará.

4. Monta OneDrive al arrancar el sistema con Systemd

Crea un nuevo servicio de systemd:

$ sudo nano /etc/systemd/system/rclonemount.service

Con el siguiente contenido:

[Unit]
Description=rclonemount
AssertPathIsDirectory=/mnt/onedrive
After=network-online.target

[Service]
Type=simple
ExecStart=/usr/bin/rclone mount --config=/home/miguel/.config/rclone/rclone.conf --vfs-cache-mode writes OneDrive: /home/miguel/OneDrive
ExecStop=/bin/fusermount -u /home/miguel/OneDrive
Restart=always
RestartSec=10

[Install]
WantedBy=default.target

Si diese problemas de permisos, puedes añadir --uid y --gid al comando de inicio:

ExecStart=/usr/bin/rclone mount --config=/home/miguel/.config/rclone/rclone.conf --vfs-cache-mode writes OneDrive: /home/miguel/OneDrive --uid=miguel --gid=miguel

Levanta el nuevo servicio con systemctl start rclonemount. Si no hay errores y quieres que se monte en cada inicio del sistema: systemctl enable rclonemount.

Fuentes: Microsoft OneDrive (rclone.org) y rclone mount options .

Comentarios

¿Has encontrado un error? ¿Crees que algo podría mejorarse? No dudes en comentármelo y estaré encantado de echarle un vistazo.