While Microsoft has been making a lot of progress in supporting open source software, and released things such as SQL Server on Linux, their support for consumer software is still lacking.
But while applications like Office are still not available for desktop users (well, unless you use virtual machines or Wine), you can get OneDrive file syncing today using an open source application created by GitHub user skilion.
While this application is still early in development, it already has a good set of features, some of which are not available for the official OneDrive client on Windows or Linux:
- File change monitoring
- Resumable file transfers
- Support for multiple accounts
- Selective sync
Currently, this client is not packaged for most major distributions, therefore, you will have to compile and install it manually.
The application has 3 dependencies (along with typical tools such as curl, gcc, git, and make). These are libcurl, sqlite, and the DMD Compiler.
To install these on Ubuntu, type this command in the terminal:
sudo apt install libcurl4-openssl-dev libsqlite3-dev
sudo dnf install libcurl-devel sqlite-devel
To install the DMD Compiler (if it is not available through your package manager), use this command:
curl -fsS https://dlang.org/install.sh | bash -s dmd.
After the compiler downloads the necessary files, it will offer you to activate it with a command that looks something like this, depending on the latest version available and the path you used to install it:
Once you use it, the compiler will be activated, which will be indicated by (dmd-X.XXX.X) appearing in front of your terminal prompt.
Installing the client takes just a few steps:
- Install the dependencies
- Clone the Git repository and enter it by typing the following command into the terminal:
git clone https://github.com/skilion/onedrive.git; cd onedrive
- Compile the OneDrive client by running make
- Install the client by running sudo make install
Once that is done, the OneDrive client should be installed.
Next, you will need to sign in. To do that:
- Type onedrive in the terminal
- Open the URL the app provides in a web browser
- Sign into your Microsoft account
- Copy the URL of the empty page that you are redirected to after signing in
- Paste it into the terminal where you opened onedrive
With that, your OneDrive client should be ready to sync all of your files
Setting up the OneDrive systemd service
This client also includes a systemd service, which can be enabled after installation using the following terminal commands:
systemctl –user enable onedrive
systemctl –user start onedrive
One useful tweak you can do yourself is make it so that the client will automatically restart if it crashes. To do that, before you install the client, open the onedrive.service.in file in a text editor, and change the line Restart=no to be Restart=always. Once you do that and install the OneDrive client, it will always restart after something goes wrong.
You can also see the status of the service by running the following command:
journalctl –user-unit onedrive -f
While this OneDrive client does not provide a GUI, it still has a lot of customizable options and convenient features. For example, it allows you to either sync only the files and folders that you specifically choose, or to exclude certain files and folders from syncing. The GitHub repository has a detailed description of all the options available, and examples of how to use them. You can find the repository by following the link below: