1
0
mirror of https://github.com/rclone/rclone.git synced 2025-12-10 05:13:45 +00:00
Files
rclone/docs/content/combine.md
albertony 0f3aa17fb6 build: improve backend docs autogenerated marker line
Replace custom rem hugo shortcode template with HTML comment. HTML comments are now
allowed in Hugo without enabling unsafe HTML parsing.

Improve the text in the comment: Remove unnecessary quoting, and avoid impression that
make backenddocs has to be run and results committed, since we have a lint check which
will then report error because we want to prevent manual changes in autogenerated sections.

Disable the markdownlint rule line-length on the autogenerated marker line.

Make the autogenerated marker detection a bit more robust.

See #8942 for more details.
2025-11-04 21:56:01 +01:00

187 lines
4.2 KiB
Markdown

---
title: "Combine"
description: "Combine several remotes into one"
versionIntroduced: "v1.59"
---
# {{< 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:
```console
$ rclone tree s3:imagesbucket
/
├── image1.jpg
└── image2.jpg
```
And a remote for files on another:
```console
$ rclone tree drive:important/files
/
├── file1.txt
└── file2.txt
```
The `combine` backend can join these together into a synthetic
directory structure like this:
```console
$ 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
```text
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:
```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
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
Configuration complete.
Options:
- type: combine
- upstreams: images=s3:imagesbucket files=drive:important/files
Keep this "remote" remote?
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
```console
rclone backend -o config drives drive:
```
This would produce something like this:
```ini
[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
upstreams = "My Drive=My Drive:" "Test Drive=Test Drive:"
```
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.
<!-- autogenerated options start - DO NOT EDIT - instead edit fs.RegInfo in backend/combine/combine.go and run make backenddocs to verify --> <!-- markdownlint-disable-line line-length -->
### Standard options
Here are the Standard options specific to combine (Combine several remotes into one).
#### --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:
### 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
### Metadata
Any metadata supported by the underlying remote is read and written.
See the [metadata](/docs/#metadata) docs for more info.
<!-- autogenerated options stop -->