Añadir una carpeta de OneDrive en Linux sincronizada

En la vida profesional de muchos de nosotros nos obligan a trabajar con software privativo. Uno de estos casos es el uso de Microsoft OneDrive, un servicio de almacenaje en la nube de la ex-compañía de Bill Gates. Sin embargo, algunos nos mantenemos en la resistencia intentando mantener el uso de Linux y de software libre en nuestras compañías. Aunque en algunas ocasiones tengamos que recurrir a otros desarrollos. En esta entrada os comentaré cómo podéis añadir una carpeta de OneDrive en Linux, completamente sincronizada y funcional al estilo de Dropbox y otros almacejanes en la nube.

Añadir una carpeta de OneDrive en Linux sincronizada

Añadir una carpeta de OneDrive en Linux

Como hemos comentado, Microsoft OneDrive es un servicio de alojamiento y sincronización de archivos, similar a Dropbox, Google Drive, MEGA, etc. Sin embargo, no existe un cliente oficial de Microsoft OneDrive para Linux. Aun así, es posible mantener los archivos de OneDrive sincronizados con una carpeta en nuestra máquina Linux. En nuestro caso vamos a instalarlo en Linux Mint 20.

Para ello disponemos de un cliente libre de OneDrive publicado en GitHub con licencia GPL. Este cliente se tiene que manejar desde línea de comandos a través de la terminal, aunque una vez instalado y activo existirán notificaciones en el escritorio para informarnos del estatus de sincronización y la posible existencia de fallos.

Instalar el cliente libre de OneDrive en Linux

Como es imprescindible, el primer paso para añadir una carpeta de OneDrive en Linux completamente sincronizada es instalar el cliente libre de OneDrive.

Añadir el repositorio PPA de OneDrive

El primer paso para instalar OneDrive es añadir el repositorio PPA en nuestra distribución Linux Mint, que es extensible a Ubuntu y Debian. A continuación es necesario actualizar la base de datos de paquetes. Ambos comandos están escritos en el siguiente código.

sudo add-apt-repository ppa:yann1ck/onedrive
sudo apt-get update

Instalar el cliente libre de OneDrive

A continuación podemos instalar OneDrive bien desde el gestor de paquetes Synaptic o desde la terminal con este comando.

sudo apt install onedrive

Uso del cliente para añadir una carpeta de OneDrive en Linux

Ya tenemos instalado el cliente de OneDrive en Linux. Toca ahora manejar la consola para configurarlo y enlazarlo con nuestra cuenta OneDrive.

Autorizar la APP del cliente

El primer paso es ejecutar la siguiente línea en la terminal:

onedrive

Después de ejecutar este comando tenemos que autorizar el cliente visitando una URL que aparece en la terminal, tal y como se ve a continuación.

Authorize this app visiting:

https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=22c49a0d-d21c-4792-aed1-8f163c982546&scope=Files.ReadWrite%20Files.ReadWrite.all%20Sites.ReadWrite.All%20offline_access&response_type=code&redirect_uri=https://login.microsoftonline.com/common/oauth2/nativeclient

Enter the response uri: 

Simplemente copiamos la dirección anterior y la pegamos en nuestro navegador. ¡No os asustéis! Después de ver un logo de carga de OneDrive y de seleccionar el usuario para autorizar la conexión, la página se queda completamente en blanco. Ahora lo que tenéis que hacer es copiar la URL a continuación de Enter the response uri:

Authorize this app visiting:

https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=22c49a0d-d21c-4792-aed1-8f163c982546&scope=Files.ReadWrite%20Files.ReadWrite.all%20Sites.ReadWrite.All%20offline_access&response_type=code&redirect_uri=https://login.microsoftonline.com/common/oauth2/nativeclient

Enter the response uri: https://login.microsoftonline.com/common/oauth2/nativeclient?code=0.AQwA1TS6Rcqptku9HCCfrNApXQ2axCIc0pJHrtGPFjyYJUYMALQ.AQABAAIAAABeStGSRwwnTq2vHplZ9KL431e9651RvaDmuOQR5sDDrVVMs1SUQCxt0Fc3KerEKxBUeUH1UujFSM33RXwdibbq3k4FtRtvDlORhQzW8wnQD2fiNp2nU6T5Da9XTp1NmaJ2izTKFLskr06dX1y8nZDoBezKfM5wpHx6eUvpizsykMUgLy7y7p2jAgb1PGMLOAz4GVliE0dArLa_XamHtjqTiLygL_jk_wy1UolSLzT4HocgM_5OhizfDvouuHyrmccx_G8eoyZF8gm9URZLzwk-Zi0IxPcyy8rLPYCleBkHtowR3MhJ9zgQ6DlAotmR1KZg2aC0OfuZLzvlyBkDrJ0ztwGcZmubGPssr5Ww2FDSdKZraYDuIi2eXl5IuRZdWYUXqO5ELlJxxRp1VWC0Xc951Ho4wovZaJuHR24cpExFLqjWJRIPP2uuO_QDWb-a9Mn8qunv5GXeEMTdgscHX3Uu80yHCNOKWM5KiHxDHSa7ZJgrhHwUGfqtFDv43kiLzSEEFyIzIMSf_cKKl8tGv60qkpWlDr4TErgi6RBAH3kooDnrIEjGPD8Wu_KEzPlrmjBpij__0L8OCIF1Uf-RgGH2qUh1elLjuOvanx86YFItS2SSIJUeHJB3VWukGQ1qhNhKF77YhxYADqdY9-4zWJcl6cD07t8BKqAKo4BgzbD4FiqlrE2huyYA9jwy79Ke1KPVLJmm_4urYQ0vDlWn1lckDRd2ATfCmi9TH31F665i9SAA&session_state=b85b7e14-0b53-4dc5-b84e-ad6df8f18415

Una vez pegada la URL y ejecutada la línea, si no ha habido fallos, nos aparecerá lo siguiente:

Application has been successfully authorised, however no additional command switches were provided.

Please use --help for further assistance in regards to running this application.

Como podemos ver, nos hemos autenticado correctamente. Pero de momento no ha pasado nada, sino que simplemente se han enganchado el cliente con OneDrive a través de la API.

Descargar y sincronizar la nube de OneDrive con la carpeta de Linux

Antes que nada, vamos a comprobar que la sincronización se puede realizar. Para ello ejecutamos la siguiente línea que nos hará una prueba de sincronización. Tened en cuenta que esta prueba ya creará una carpeta llamada OneDrive en nuestro raíz de usuario (~/OneDrive).

onedrive --synchronize --verbose --dry-run

Si no aparecen errores, ello quiere decir que ya podemos hacer una sincronización completa y real de toda nuestra nube de OneDrive. Nos bastaría con ejecutar la siguiente línea:

onedrive --synchronize

Si queréis sincronizar simplemente una parte de vuestra nube, os recomiendo leer este post.

Habilitar el cliente OneDrive como servicio en el systemd de Linux

Para que el cliente libre de OneDrive para Linux se ejecute como un servicio, de modo que se inicie automáticamente en nuestro ordenador y esté constantemente atento a cualquier cambio de OneDrive, sincronizando los archivos y carpetas cambiados, tenemos que activar su servicio systemd.

Cuando se usa como un servicio systemd, este cliente de línea de comandos OneDrive para Linux se ejecuta en modo monitor (--monitor), lo que le permite controlar continuamente su sistema de archivos local para detectar cambios en los archivos.

Para habilitar e iniciar el servicio de OneDrive systemd (con notificaciones habilitadas) para nuestro usuario actual (no root), hay que ejecutar:

systemctl --user enable onedrive
systemctl --user start onedrive

Por último, vamos a revisar el estatus de systemd para revisar que todo está perfectamente configurado.

systemctl status --user onedrive

Deja un comentario