432 lines
11 KiB
Markdown
432 lines
11 KiB
Markdown
---
|
|
title: "Zoho"
|
|
description: "Zoho WorkDrive"
|
|
versionIntroduced: "v1.54"
|
|
---
|
|
|
|
# Zoho Workdrive
|
|
|
|
[Zoho WorkDrive](https://www.zoho.com/workdrive/) is a cloud storage solution
|
|
created by [Zoho](https://zoho.com).
|
|
|
|
## Configuration
|
|
|
|
Here is an example of making a zoho configuration. First run
|
|
|
|
```console
|
|
rclone config
|
|
```
|
|
|
|
This will guide you through an interactive setup process:
|
|
|
|
```text
|
|
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](/remote_setup/) 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
|
|
|
|
```console
|
|
rclone lsd remote:
|
|
```
|
|
|
|
Make a new directory
|
|
|
|
```console
|
|
rclone mkdir remote:directory
|
|
```
|
|
|
|
List the contents of a directory
|
|
|
|
```console
|
|
rclone ls remote:directory
|
|
```
|
|
|
|
Sync `/home/local/directory` to the remote path, deleting any
|
|
excess files in the path.
|
|
|
|
```console
|
|
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.
|
|
|
|
<!-- autogenerated options start - DO NOT EDIT - instead edit fs.RegInfo in backend/zoho/zoho.go and run make backenddocs to verify --> <!-- markdownlint-disable-line line-length -->
|
|
### 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
|
|
|
|
### 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](/overview/#encoding) 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
|
|
|
|
<!-- autogenerated options stop -->
|
|
|
|
## 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.
|
|
|
|
1. Log in to the [Zoho API Console](https://api-console.zoho.com)
|
|
|
|
2. 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/`.
|
|
|
|
3. 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.
|