Zoho Workdrive
Zoho WorkDrive is a cloud storage solution created by Zoho.
Configuration
Here is an example of making a zoho configuration. First run
rclone config
This will guide you through an interactive setup process:
No remotes found, make a new one?
n) New remote
s) Set configuration password
n/s> n
name> remote
Type of storage to configure.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
[snip]
XX / Zoho
\ "zoho"
[snip]
Storage> zoho
** See help for zoho backend at: https://rclone.org/zoho/ **
OAuth Client Id
Leave blank normally.
Enter a string value. Press Enter for the default ("").
client_id>
OAuth Client Secret
Leave blank normally.
Enter a string value. Press Enter for the default ("").
client_secret>
Edit advanced config? (y/n)
y) Yes
n) No (default)
y/n> n
Remote config
Use web browser to automatically authenticate rclone with remote?
* Say Y if the machine running rclone has a web browser you can use
* Say N if running rclone on a (remote) machine without web browser access
If not sure try Y. If Y failed, try N.
y) Yes (default)
n) No
y/n>
If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth?state=LVn0IHzxej1ZkmQw31d0wQ
Log in and authorize rclone for access
Waiting for code...
Got code
Choose a number from below, or type in your own value
1 / MyTeam
\ "4u28602177065ff22426787a6745dba8954eb"
Enter a Team ID> 1
Choose a number from below, or type in your own value
1 / General
\ "4u2869d2aa6fca04f4f2f896b6539243b85b1"
Enter a Workspace ID> 1
Configuration complete.
Options:
- type: zoho
- token: {"access_token":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","token_type":"Zoho-oauthtoken","refresh_token":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","expiry":"2020-10-12T00:54:52.370275223+02:00"}
- root_folder_id: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Keep this "remote" remote?
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d>
See the remote setup docs for how to set it up on a machine without an internet-connected web browser available.
Rclone runs a webserver on your local computer to collect the
authorization token from Zoho Workdrive. This is only from the moment
your browser is opened until the token is returned.
The webserver runs on http://127.0.0.1:53682/.
If local port 53682 is protected by a firewall you may need to temporarily
unblock the firewall to complete authorization.
Once configured you can then use rclone like this (replace remote with the
name you gave your remote):
See top level directories
rclone lsd remote:
Make a new directory
rclone mkdir remote:directory
List the contents of a directory
rclone ls remote:directory
Sync /home/local/directory to the remote path, deleting any
excess files in the path.
rclone sync --interactive /home/local/directory remote:directory
Zoho paths may be as deep as required, eg remote:directory/subdirectory.
Modification times and hashes
Modified times are currently not supported for Zoho Workdrive
No hash algorithms are supported.
Usage information
To view your current quota you can use the rclone about remote:
command which will display your current usage.
Restricted filename characters
Only control characters and invalid UTF-8 are replaced. In addition most Unicode full-width characters are not supported at all and will be removed from filenames during upload.
Standard options
Here are the Standard options specific to zoho (Zoho).
--zoho-client-id
OAuth Client Id.
Leave blank normally.
Properties:
- Config: client_id
- Env Var: RCLONE_ZOHO_CLIENT_ID
- Type: string
- Required: false
--zoho-client-secret
OAuth Client Secret.
Leave blank normally.
Properties:
- Config: client_secret
- Env Var: RCLONE_ZOHO_CLIENT_SECRET
- Type: string
- Required: false
--zoho-region
Zoho region to connect to.
You'll have to use the region your organization is registered in. If not sure use the same top level domain as you connect to in your browser.
Properties:
- Config: region
- Env Var: RCLONE_ZOHO_REGION
- Type: string
- Required: false
- Examples:
- "com"
- United states / Global
- "eu"
- Europe
- "in"
- India
- "jp"
- Japan
- "com.cn"
- China
- "com.au"
- Australia
- "com"
Advanced options
Here are the Advanced options specific to zoho (Zoho).
--zoho-token
OAuth Access Token as a JSON blob.
Properties:
- Config: token
- Env Var: RCLONE_ZOHO_TOKEN
- Type: string
- Required: false
--zoho-auth-url
Auth server URL.
Leave blank to use the provider defaults.
Properties:
- Config: auth_url
- Env Var: RCLONE_ZOHO_AUTH_URL
- Type: string
- Required: false
--zoho-token-url
Token server url.
Leave blank to use the provider defaults.
Properties:
- Config: token_url
- Env Var: RCLONE_ZOHO_TOKEN_URL
- Type: string
- Required: false
--zoho-client-credentials
Use client credentials OAuth flow.
This will use the OAUTH2 client Credentials Flow as described in RFC 6749.
Note that this option is NOT supported by all backends.
Properties:
- Config: client_credentials
- Env Var: RCLONE_ZOHO_CLIENT_CREDENTIALS
- Type: bool
- Default: false
--zoho-root-folder-id
ID of the root folder.
Leave blank normally.
Fill in to make rclone use a non root folder as its starting point.
Properties:
- Config: root_folder_id
- Env Var: RCLONE_ZOHO_ROOT_FOLDER_ID
- Type: string
- Required: false
--zoho-upload-cutoff
Cutoff for switching to large file upload api (>= 10 MiB).
Properties:
- Config: upload_cutoff
- Env Var: RCLONE_ZOHO_UPLOAD_CUTOFF
- Type: SizeSuffix
- Default: 10Mi
--zoho-tpslimit
Max number of API transactions per second.
Zoho WorkDrive rate limits its API and returns HTTP 429 (error F7008, "Request rate limit exceeded") when called too quickly, so the data API calls (list, upload, download, copy, move, delete) are paced to this rate.
Set to 0 to disable the cap, matching the global --tpslimit; pacing still can't be turned off entirely because backoff and Retry-After always apply.
The default of 6 is a safe sustainable rate. Higher values can trigger long 429 Retry-After stalls that make throughput WORSE, so raise it only if your account tolerates more.
Properties:
- Config: tpslimit
- Env Var: RCLONE_ZOHO_TPSLIMIT
- Type: float64
- Default: 6
--zoho-tpslimit-burst
Number of API calls to allow back-to-back without sleeping, for --zoho-tpslimit.
This is the token-bucket capacity. Keep at 1 for Zoho: a burst > 1 lets several calls fire at once after an idle gap, which can trigger synchronized clusters of 429 errors.
Properties:
- Config: tpslimit_burst
- Env Var: RCLONE_ZOHO_TPSLIMIT_BURST
- Type: int
- Default: 1
--zoho-list-folder-limit
Max listings of the SAME folder allowed per --zoho-list-folder-window.
Zoho WorkDrive rate limits its listing API (GET files/{id}/files) PER folder, independently of --zoho-tpslimit: listing one folder too often in a short time returns HTTP 429 (error F7008) with a multi-minute Retry-After penalty, which a tight polling loop can hit even at a low overall rate. Measured live, Zoho allows ~19 listings of one folder in any rolling ~60s window and the 20th fails, which the defaults (19 per 60s) model exactly.
This is a true per-window cap for any traffic pattern: each window starts with --zoho-list-folder-burst listings passing back-to-back (the burst re-arms at every window boundary) and the rest are spaced --zoho-list-folder-window/(limit - burst) apart (the defaults give ~4.6s), while a sliding log of recent listings enforces the cap across window boundaries. 0 disables the limiter. Only REPEATED listings of one folder are delayed; different folders, or a folder listed fewer than --zoho-list-folder-burst times, never are.
A HIGHER value means MORE listings per window, not more safety: raising it above 19 trips F7008. Lower it for a wider margin at the cost of listing responsiveness.
Properties:
- Config: list_folder_limit
- Env Var: RCLONE_ZOHO_LIST_FOLDER_LIMIT
- Type: int
- Default: 19
--zoho-list-folder-window
The window for --zoho-list-folder-limit.
The default of 60s (shown as 1m0s) matches Zoho's real sliding window: at most --zoho-list-folder-limit listings of one folder are allowed in any window of this length. A bare number is parsed as seconds ("60" = "60s").
Widen it (or lower the limit) for a bigger safety margin; the sustained spacing between same-folder listings is window/(limit - burst).
Properties:
- Config: list_folder_window
- Env Var: RCLONE_ZOHO_LIST_FOLDER_WINDOW
- Type: Duration
- Default: 1m0s
--zoho-list-folder-burst
Same-folder listings allowed back-to-back before --zoho-list-folder-limit paces them.
The burst is carved out of --zoho-list-folder-limit, so raising it never raises the per-window total: this many listings may fire immediately and the remaining limit - burst are spaced window/(limit - burst) apart. The burst RE-ARMS at every window boundary, so sustained re-listing gets a fresh burst each window while a sliding log of recent listings still enforces the per-window cap. A folder listed only a handful of times (the common case - a sync re-listing one directory a few times then moving on) never waits.
The default 6 is the largest burst validated live under the default 19-per-60s cap (bursts of 4, 5 and 6 all ran clean; an over-cap probe tripped F7008 exactly at the 20th listing in a window). Keep it well below ~15 - Zoho also has an instantaneous back-to-back cap around 15-16 regardless of the window. Set to 1 to pace from the second listing. Values >= the limit are clamped to limit - 1.
Properties:
- Config: list_folder_burst
- Env Var: RCLONE_ZOHO_LIST_FOLDER_BURST
- Type: int
- Default: 6
--zoho-encoding
The encoding for the backend.
See the encoding section in the overview for more info.
Properties:
- Config: encoding
- Env Var: RCLONE_ZOHO_ENCODING
- Type: Encoding
- Default: Del,Ctl,InvalidUtf8
--zoho-description
Description of the remote.
Properties:
- Config: description
- Env Var: RCLONE_ZOHO_DESCRIPTION
- Type: string
- Required: false
Setting up your own client_id
For Zoho we advise you to set up your own client_id. To do so you have to complete the following steps.
-
Log in to the Zoho API Console
-
Create a new client of type "Server-based Application". The name and website don't matter, but you must add the redirect URL
http://localhost:53682/. -
Once the client is created, you can go to the settings tab and enable it in other regions.
The client id and client secret can now be used with rclone.