Rclone is a tool for mounting remote drives. It allows us to move files and make backups with schedules and specific rules on which folders to sync.
Read more at rclone.org
Only required for setup on Mac.
Get OSXFuse at osxfuse.github.io
Check latest install instructions at rclone.org
curl https://rclone.org/install.sh | sudo bash
You can use your own credentials if you don't want to be rate limited. These credentials need to be stored locally for rclone to read. Otherwise you will use the shared credentials at the official rclone project.
For Google drive, follow this guide For Microsoft onedrive, follow this guide
We use the same command to create a new remote, edit existing remotes and remove them.
rclone config
Verify you have access to your drive.
Verifying access to Google Drive
rclone -v --drive-impersonate foo@example.com lsf gdrive:backup
Mounting a drive is quite straightforward. Please read up on the flags.
rclone mount remote:path /path/to/mountpoint [flags]
# example: mount local folder gdrive to remote private_drive
# rclone mount private_gdrive: gdrive
I used cron to mount the remote drives on boot but you can also use systemd.
# restart rclone mount for google drive on reboot
@reboot /home/username/projects/rclonesetup/mountrclone.sh
I couldn't make cron load this on boot on a Mac, but launchd works. Here's how to set it up to launch silently on user login.
Check out launchd.info for an introduction.
I chose to make a shell script also so I can easily add and remove drives.
Create a plist
file for the launchd job, then add it with launchctl
.
I chose to make this a Launch Agent for the specific logged in user instead of a system task because the files and remote drive probably belong to a specific person and not all users on the same machine.
Here's an example shell script to silently mount a drive as a daemon:
#!/bin/zsh
# run rclone as a daemon to silently mount drives without launching terminal on login
rclone mount --daemon remotename:path localpath
Make the script executable with chmod +x script.sh
Here's a template for launching a shell script with launchd on login:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>addpath</string>
</dict>
<key>Label</key>
<string>com.mountrclone</string>
<key>Program</key>
<string>pathtoshellscript.sh</string>
<key>RunAtLoad</key>
<true/>
<key>StandardOutPath</key>
<string>pathto/rclonesetup/out.log</string>
<key>StandardErrorPath</key>
<string>pathto/error.log</string>
</dict>
</plist>
These files should follow a naming convention to be the same name as the task. Look at existing tasks for some examples. Here are some of mine:
com.cisco.proximity.plist
Add this file to your user's library path, which should look like this /Users/username/Library/LaunchAgents
If you want to make this a system task then you need to use the System folder instead.
Then add the job:
# permanently load job for logged in user launch agents
launchctl load -w ~/Library/LaunchAgents/com.mountrclone.plist
# permanently unload job
launchctl unload -w ~/Library/LaunchAgents/com.mountrclone.plist
If there's a problem with the job then there should be an error command when attempting to load it.
Try to reboot, login and check if the drive was mounted.
sudo umount <device|directory>
# for example, to unmount /dev/sdc1
# sudo umount /dev/sdc1
Use OSXFuse to unmount drives.
umount drivename
# example: unmount drive called gdrive
# umount gdrive