Skip to content

Latest commit

 

History

History
167 lines (118 loc) · 4.86 KB

README.md

File metadata and controls

167 lines (118 loc) · 4.86 KB

Rclone setup

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

Mac OSX Prerequisite: Install OSXFuse

Only required for setup on Mac.

Get OSXFuse at osxfuse.github.io

Install Rclone

Check latest install instructions at rclone.org

curl https://rclone.org/install.sh | sudo bash

Optional: Get private credentials

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

Configure remote

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

Mount remote manually

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

Mount remote on boot

On Linux

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

On Mac OSX

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.

How to unmount remotes

On Linux

sudo umount <device|directory>
# for example, to unmount /dev/sdc1
# sudo umount /dev/sdc1

On Mac OSX

Use OSXFuse to unmount drives.

umount drivename
# example: unmount drive called gdrive
#  umount gdrive