2022-04-21 00:57:43 +08:00
|
|
|
---
|
|
|
|
title: "Combine"
|
|
|
|
description: "Combine several remotes into one"
|
2022-12-21 04:05:05 +08:00
|
|
|
versionIntroduced: "v1.59"
|
2022-04-21 00:57:43 +08:00
|
|
|
---
|
|
|
|
|
|
|
|
# {{< icon "fa fa-folder-plus" >}} Combine
|
|
|
|
|
|
|
|
The `combine` backend joins remotes together into a single directory
|
|
|
|
tree.
|
|
|
|
|
|
|
|
For example you might have a remote for images on one provider:
|
|
|
|
|
|
|
|
```
|
|
|
|
$ rclone tree s3:imagesbucket
|
|
|
|
/
|
|
|
|
├── image1.jpg
|
|
|
|
└── image2.jpg
|
|
|
|
```
|
|
|
|
|
|
|
|
And a remote for files on another:
|
|
|
|
|
|
|
|
```
|
|
|
|
$ rclone tree drive:important/files
|
|
|
|
/
|
|
|
|
├── file1.txt
|
|
|
|
└── file2.txt
|
|
|
|
```
|
|
|
|
|
|
|
|
The `combine` backend can join these together into a synthetic
|
|
|
|
directory structure like this:
|
|
|
|
|
|
|
|
```
|
|
|
|
$ rclone tree combined:
|
|
|
|
/
|
|
|
|
├── files
|
|
|
|
│ ├── file1.txt
|
|
|
|
│ └── file2.txt
|
|
|
|
└── images
|
|
|
|
├── image1.jpg
|
|
|
|
└── image2.jpg
|
|
|
|
```
|
|
|
|
|
|
|
|
You'd do this by specifying an `upstreams` parameter in the config
|
|
|
|
like this
|
|
|
|
|
|
|
|
upstreams = images=s3:imagesbucket files=drive:important/files
|
|
|
|
|
|
|
|
During the initial setup with `rclone config` you will specify the
|
|
|
|
upstreams remotes as a space separated list. The upstream remotes can
|
|
|
|
either be a local paths or other remotes.
|
|
|
|
|
|
|
|
## Configuration
|
|
|
|
|
|
|
|
Here is an example of how to make a combine called `remote` for the
|
|
|
|
example above. 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
|
|
|
|
q) Quit config
|
|
|
|
n/s/q> n
|
|
|
|
name> remote
|
|
|
|
Option Storage.
|
|
|
|
Type of storage to configure.
|
|
|
|
Choose a number from below, or type in your own value.
|
|
|
|
...
|
|
|
|
XX / Combine several remotes into one
|
|
|
|
\ (combine)
|
|
|
|
...
|
|
|
|
Storage> combine
|
|
|
|
Option upstreams.
|
|
|
|
Upstreams for combining
|
|
|
|
These should be in the form
|
|
|
|
dir=remote:path dir2=remote2:path
|
|
|
|
Where before the = is specified the root directory and after is the remote to
|
|
|
|
put there.
|
|
|
|
Embedded spaces can be added using quotes
|
|
|
|
"dir=remote:path with space" "dir2=remote2:path with space"
|
|
|
|
Enter a fs.SpaceSepList value.
|
|
|
|
upstreams> images=s3:imagesbucket files=drive:important/files
|
|
|
|
--------------------
|
|
|
|
[remote]
|
|
|
|
type = combine
|
|
|
|
upstreams = images=s3:imagesbucket files=drive:important/files
|
|
|
|
--------------------
|
|
|
|
y) Yes this is OK (default)
|
|
|
|
e) Edit this remote
|
|
|
|
d) Delete this remote
|
|
|
|
y/e/d> y
|
|
|
|
```
|
|
|
|
|
|
|
|
### Configuring for Google Drive Shared Drives
|
|
|
|
|
|
|
|
Rclone has a convenience feature for making a combine backend for all
|
|
|
|
the shared drives you have access to.
|
|
|
|
|
|
|
|
Assuming your main (non shared drive) Google drive remote is called
|
|
|
|
`drive:` you would run
|
|
|
|
|
|
|
|
rclone backend -o config drives drive:
|
|
|
|
|
|
|
|
This would produce something like this:
|
|
|
|
|
|
|
|
[My Drive]
|
|
|
|
type = alias
|
|
|
|
remote = drive,team_drive=0ABCDEF-01234567890,root_folder_id=:
|
|
|
|
|
|
|
|
[Test Drive]
|
|
|
|
type = alias
|
|
|
|
remote = drive,team_drive=0ABCDEFabcdefghijkl,root_folder_id=:
|
|
|
|
|
|
|
|
[AllDrives]
|
|
|
|
type = combine
|
2022-07-10 22:34:48 +08:00
|
|
|
upstreams = "My Drive=My Drive:" "Test Drive=Test Drive:"
|
2022-04-21 00:57:43 +08:00
|
|
|
|
|
|
|
If you then add that config to your config file (find it with `rclone
|
|
|
|
config file`) then you can access all the shared drives in one place
|
|
|
|
with the `AllDrives:` remote.
|
|
|
|
|
|
|
|
See [the Google Drive docs](/drive/#drives) for full info.
|
|
|
|
|
|
|
|
{{< rem autogenerated options start" - DO NOT EDIT - instead edit fs.RegInfo in backend/combine/combine.go then run make backenddocs" >}}
|
|
|
|
### Standard options
|
|
|
|
|
2022-07-10 01:08:20 +08:00
|
|
|
Here are the Standard options specific to combine (Combine several remotes into one).
|
2022-04-21 00:57:43 +08:00
|
|
|
|
|
|
|
#### --combine-upstreams
|
|
|
|
|
|
|
|
Upstreams for combining
|
|
|
|
|
|
|
|
These should be in the form
|
|
|
|
|
|
|
|
dir=remote:path dir2=remote2:path
|
|
|
|
|
|
|
|
Where before the = is specified the root directory and after is the remote to
|
|
|
|
put there.
|
|
|
|
|
|
|
|
Embedded spaces can be added using quotes
|
|
|
|
|
|
|
|
"dir=remote:path with space" "dir2=remote2:path with space"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Properties:
|
|
|
|
|
|
|
|
- Config: upstreams
|
|
|
|
- Env Var: RCLONE_COMBINE_UPSTREAMS
|
|
|
|
- Type: SpaceSepList
|
|
|
|
- Default:
|
|
|
|
|
2024-03-10 19:22:43 +08:00
|
|
|
### Advanced options
|
|
|
|
|
|
|
|
Here are the Advanced options specific to combine (Combine several remotes into one).
|
|
|
|
|
|
|
|
#### --combine-description
|
|
|
|
|
|
|
|
Description of the remote
|
|
|
|
|
|
|
|
Properties:
|
|
|
|
|
|
|
|
- Config: description
|
|
|
|
- Env Var: RCLONE_COMBINE_DESCRIPTION
|
|
|
|
- Type: string
|
|
|
|
- Required: false
|
|
|
|
|
2022-07-10 01:08:20 +08:00
|
|
|
### Metadata
|
|
|
|
|
|
|
|
Any metadata supported by the underlying remote is read and written.
|
|
|
|
|
|
|
|
See the [metadata](/docs/#metadata) docs for more info.
|
|
|
|
|
2022-04-21 00:57:43 +08:00
|
|
|
{{< rem autogenerated options stop >}}
|