Mass migrating Data to Shade via Rclone

How to migrate data into Shade via Rclone

Handling Data Migration and Transfers Efficiently

This is a guide for migrating large amounts of data into or out of your shade drive using rclone, a powerful open-source tool which supports many different sources.

Downloading rclone

Please note: The Shade backend is not yet available in the official rclone documentation, as the pull request is currently pending. If you would like to use rclone with Shade, download the specific executable for the system you're running on here:

https://app.shade.inc/publish/617fe363-8d01-4cd5-be1c-2ad094f4ffef

Once the backend is merged into the official rclone release, you'll be able to download rclone from the official rclone downloads page.

About rclone

rclone is a powerful command-line program to manage files on cloud storage. It's often described as "rsync for cloud storage" and supports over 70 different cloud storage providers.

Common use cases for rclone include:

  • Syncing and backing up files between your local system and cloud storage

  • Migrating data from one cloud provider to another

  • Automating workflows with scheduled syncs and backups

  • Managing large file transfers with resume capability and bandwidth controls

  • Batch operations for copying, moving, or deleting files across cloud services

With Shade's rclone backend, you can leverage all of rclone's powerful features to interact with your Shade drives directly from the command line.

Configuration

Here is an example of making a Shade configuration.

First, create a free account and choose a plan.

You will need to log in and get the API Key and Drive ID for your account from the settings section of your account and created drive respectively.

Now open a command prompt or terminal and navigate to where you downloaded that file, and run

./rclone config (If you are on a mac you will need to tell your computer that this file can be executed, so run

chmod +x rclone )

Then follow this interactive process:

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> n

Enter name for new remote.
name> Shade

Option Storage.
Type of storage to configure.
Choose a number from below, or type in your own value.
(Scroll along the list and find the Shade option, as of 11/5/25 it is 52)
[OTHER OPTIONS]
xx / Shade FS
   \ (shade)
[OTHER OPTIONS]
Storage> xx

Option drive_id.
The ID of your drive, see this in the drive settings. Individual rclone configs must be made per drive.
Enter a value.
drive_id> [YOUR_ID]

Option api_key.
An API key for your account.
Enter a value.
api_key> [YOUR_API_KEY]

Edit advanced config?
y) Yes
n) No (default)
y/n> n

Configuration complete.
Options:
- type: shade
- drive_id: [YOUR_ID]
- api_key: [YOUR_API_KEY]
Keep this "Shade" remote?
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> y

Example Workflow: Copying Files to Shade

Once you've configured your Shade remote, you can easily copy files from your local filesystem to Shade. Here's a common workflow:

Copying a Local Folder to Shade

To copy a folder from your local system to your Shade drive:

./rclone copy /path/to/local/folder Shade:/destination/folder

For example, to copy your "Projects" folder to Shade:

./rclone copy ~/Projects Shade:/Projects

This command will:

  • Copy all files from your local Projects folder to Shade

  • Preserve the folder structure

  • Skip files that already exist and haven't changed

  • Show progress during the transfer

Additional Useful Commands

Sync a folder (makes destination identical to source, including deletions):

./rclone sync ~/Projects Shade:/Projects

Check what would be copied without actually copying:

./rclone copy ~/Projects Shade:/Projects --dry-run

Copy with progress and statistics:

./rclone copy ~/Projects Shade:/Projects --progress --stats 1s

List files in your Shade drive:

./rclone ls Shade:/

Standard Options

Here are the Standard options specific to shade (Shade FS).

Note: For most users, you only need to configure the drive_id and api_key. The advanced options below are for specific use cases and can be left at their defaults.

--shade-drive-id

The ID of your drive, see this in the drive settings. Individual rclone configs must be made per drive.

Properties:

  • Config: drive_id

  • Env Var: RCLONE_SHADE_DRIVE_ID

  • Type: string

  • Required: true

--shade-api-key

An API key for your account. You can find this under Settings > API Keys

Properties:

  • Config: api_key

  • Env Var: RCLONE_SHADE_API_KEY

  • Type: string

  • Required: true

Advanced Options

Here are the Advanced options specific to shade (Shade FS).

--shade-endpoint

Endpoint for the service.

Leave blank normally.

Properties:

  • Config: endpoint

  • Env Var: RCLONE_SHADE_ENDPOINT

  • Type: string

  • Required: false

--shade-chunk-size

Chunk size to use for uploading.

Any files larger than this will be uploaded in chunks of this size.

Note that this is stored in memory per transfer, so increasing it will increase memory usage.

Minimum is 5MB, maximum is 5GB.

Properties:

  • Config: chunk_size

  • Env Var: RCLONE_SHADE_CHUNK_SIZE

  • Type: SizeSuffix

  • Default: 64Mi

--shade-encoding

The encoding for the backend.

See the encoding section in the overview for more info.

Properties:

  • Config: encoding

  • Env Var: RCLONE_SHADE_ENCODING

  • Type: Encoding

  • Default: Slash,BackSlash,Del,Ctl,InvalidUtf8,Dot

--shade-description

Description of the remote.

Properties:

  • Config: description

  • Env Var: RCLONE_SHADE_DESCRIPTION

  • Type: string

  • Required: false

API Routes Used by Rclone Integration

The following routes are used by the rclone integration to interface directly with the Shade filesystem. If you want to use these routes directly in your own applications, you'll need to first obtain a user token by calling the appropriate route from the 'Users' section in the 'Using the API' section of our documentation. Once you have the user token, pass it as a bearer token in your requests instead of your API key.

Note: The rclone backend handles authentication automatically using your API key - you only need to worry about user tokens if you're building custom integrations outside of rclone.

List directory contents for a given drive path

get
Path parameters
drivestringRequired
Query parameters
pathstringRequired
Header parameters
authorizationstringRequired
get
/{drive-id}/fs/listdir
GET /{drive-id}/fs/listdir?path=text HTTP/1.1
Host: 
authorization: text
Accept: */*

Get file or directory attributes/metadata

get
Path parameters
drivestringRequired
Query parameters
pathstringRequired
Header parameters
authorizationstringRequired
get
/{drive-id}/fs/attr
GET /{drive-id}/fs/attr?path=text HTTP/1.1
Host: 
authorization: text
Accept: */*

Download a file with optional content disposition

get
Path parameters
drivestringRequired
Query parameters
pathstringRequired
disposition_typestringRequiredDefault: attachment
Header parameters
authorizationstringRequired
get
/{drive-id}/fs/download
GET /{drive-id}/fs/download?path=text&disposition_type=attachment HTTP/1.1
Host: 
authorization: text
Accept: */*

Create a directory at the specified path

post
Path parameters
drivestringRequired
Query parameters
pathstringRequired
Header parameters
authorizationstringRequired
post
/{drive-id}/fs/mkdir
POST /{drive-id}/fs/mkdir?path=text HTTP/1.1
Host: 
authorization: text
Accept: */*

Create multiple directories in a single request

post
Path parameters
drivestringRequired
Header parameters
authorizationstringRequired
Body
post
/{drive-id}/fs/mkdir/batch
POST /{drive-id}/fs/mkdir/batch HTTP/1.1
Host: 
authorization: text
Accept: */*

Copy a file from one path to another

post
Path parameters
drivestringRequired
Query parameters
fromstringRequired
tostringRequired
Header parameters
authorizationstringRequired
post
/{drive-id}/fs/copy-file
POST /{drive-id}/fs/copy-file?from=text&to=text HTTP/1.1
Host: 
authorization: text
Accept: */*

Move or rename a file or directory

post
Path parameters
drivestringRequired
Query parameters
fromstringRequired
tostringRequired
Header parameters
authorizationstringRequired
post
/{drive-id}/fs/move
POST /{drive-id}/fs/move?from=text&to=text HTTP/1.1
Host: 
authorization: text
Accept: */*

Delete a file or directory at the specified path

post
Path parameters
drivestringRequired
Query parameters
pathstringRequired
Header parameters
authorizationstringRequired
post
/{drive-id}/fs/delete
POST /{drive-id}/fs/delete?path=text HTTP/1.1
Host: 
authorization: text
Accept: */*

Fetch overall storage usage and limits

get
Path parameters
drivestringRequired
Header parameters
authorizationstringRequired
get
/{drive-id}/info/storage
GET /{drive-id}/info/storage HTTP/1.1
Host: 
authorization: text
Accept: */*

Fetch upload configuration and constraints

get
Path parameters
drivestringRequired
Header parameters
authorizationstringRequired
get
/{drive-id}/info/upload
GET /{drive-id}/info/upload HTTP/1.1
Host: 
authorization: text
Accept: */*

Upload a specific part of a multipart upload

post
Path parameters
drivestringRequired
partNumbernumberRequired
Query parameters
tokenstringRequired
signAllEndpointsstringOptional
post
/{drive-id}/upload/multipart/part/{partNumber}
POST /{drive-id}/upload/multipart/part/{partNumber}?token=text HTTP/1.1
Host: 
Accept: */*

Initiate a multipart upload session

post
Path parameters
drivestringRequired
Header parameters
authorizationstringRequired
Body
post
/{drive-id}/upload/multipart
POST /{drive-id}/upload/multipart HTTP/1.1
Host: 
authorization: text
Accept: */*

Complete a multipart upload by finalizing parts

post
Path parameters
drivestringRequired
Query parameters
tokenstringRequired
Header parameters
authorizationstringRequired
Body
post
/{drive-id}/upload/multipart/complete
POST /{drive-id}/upload/multipart/complete?token=text HTTP/1.1
Host: 
authorization: text
Accept: */*

Last updated