mirror of
https://github.com/rclone/rclone.git
synced 2026-01-28 23:35:47 +00:00
Compare commits
14 Commits
fix-9117-p
...
tiers
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
136f76b245 | ||
|
|
36f6a3fa1a | ||
|
|
944dcc3e35 | ||
|
|
65c60c1d30 | ||
|
|
d9c1a96071 | ||
|
|
824257583c | ||
|
|
cd857754c7 | ||
|
|
017d930dfc | ||
|
|
6ed68883fe | ||
|
|
2a5e0b28c9 | ||
|
|
264e75d892 | ||
|
|
4553c3de7b | ||
|
|
2e9e4a47a2 | ||
|
|
e44829a448 |
@@ -632,14 +632,22 @@ Add your backend to the docs - you'll need to pick an icon for it from
|
||||
alphabetical order of full name of remote (e.g. `drive` is ordered as
|
||||
`Google Drive`) but with the local file system last.
|
||||
|
||||
First add a data file about your backend in
|
||||
`docs/data/backends/remote.yaml` - this is used to build the overview
|
||||
tables and the tiering info.
|
||||
|
||||
- Create it with: `bin/manage_backends.py create docs/data/backends/remote.yaml`
|
||||
- Edit it to fill in the blanks. Look at the [tiers docs](https://rclone.org/tiers/).
|
||||
- Run this command to fill in the features: `bin/manage_backends.py features docs/data/backends/remote.yaml`
|
||||
|
||||
Next edit these files:
|
||||
|
||||
- `README.md` - main GitHub page
|
||||
- `docs/content/remote.md` - main docs page (note the backend options are
|
||||
automatically added to this file with `make backenddocs`)
|
||||
- make sure this has the `autogenerated options` comments in (see your
|
||||
reference backend docs)
|
||||
- update them in your backend with `bin/make_backend_docs.py remote`
|
||||
- `docs/content/overview.md` - overview docs - add an entry into the Features
|
||||
table and the Optional Features table.
|
||||
- `docs/content/docs.md` - list of remotes in config section
|
||||
- `docs/content/_index.md` - front page of rclone.org
|
||||
- `docs/layouts/chrome/navbar.html` - add it to the website navigation
|
||||
|
||||
@@ -17,12 +17,10 @@ Improvements:
|
||||
|
||||
import (
|
||||
"context"
|
||||
"crypto/tls"
|
||||
"encoding/base64"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
"path"
|
||||
"slices"
|
||||
"strings"
|
||||
@@ -256,25 +254,7 @@ func NewFs(ctx context.Context, name, root string, m configmap.Mapper) (fs.Fs, e
|
||||
defer megaCacheMu.Unlock()
|
||||
srv := megaCache[opt.User]
|
||||
if srv == nil {
|
||||
// srv = mega.New().SetClient(fshttp.NewClient(ctx))
|
||||
|
||||
// Workaround for Mega's use of insecure cipher suites which are no longer supported by default since Go 1.22.
|
||||
// Relevant issues:
|
||||
// https://github.com/rclone/rclone/issues/8565
|
||||
// https://github.com/meganz/webclient/issues/103
|
||||
clt := fshttp.NewClient(ctx)
|
||||
clt.Transport = fshttp.NewTransportCustom(ctx, func(t *http.Transport) {
|
||||
var ids []uint16
|
||||
// Read default ciphers
|
||||
for _, cs := range tls.CipherSuites() {
|
||||
ids = append(ids, cs.ID)
|
||||
}
|
||||
// Insecure but Mega uses TLS_RSA_WITH_AES_128_GCM_SHA256 for storage endpoints
|
||||
// (e.g. https://gfs302n114.userstorage.mega.co.nz) as of June 18, 2025.
|
||||
t.TLSClientConfig.CipherSuites = append(ids, tls.TLS_RSA_WITH_AES_128_GCM_SHA256)
|
||||
})
|
||||
srv = mega.New().SetClient(clt)
|
||||
|
||||
srv = mega.New().SetClient(fshttp.NewClient(ctx))
|
||||
srv.SetRetries(ci.LowLevelRetries) // let mega do the low level retries
|
||||
srv.SetHTTPS(opt.UseHTTPS)
|
||||
srv.SetLogger(func(format string, v ...any) {
|
||||
|
||||
@@ -10,8 +10,8 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
protonDriveAPI "github.com/henrybear327/Proton-API-Bridge"
|
||||
"github.com/henrybear327/go-proton-api"
|
||||
protonDriveAPI "github.com/rclone/Proton-API-Bridge"
|
||||
"github.com/rclone/go-proton-api"
|
||||
|
||||
"github.com/pquerna/otp/totp"
|
||||
|
||||
@@ -904,7 +904,7 @@ func (o *Object) Storable() bool {
|
||||
|
||||
// Open opens the file for read. Call Close() on the returned io.ReadCloser
|
||||
func (o *Object) Open(ctx context.Context, options ...fs.OpenOption) (io.ReadCloser, error) {
|
||||
fs.FixRangeOption(options, o.Size())
|
||||
fs.FixRangeOption(options, *o.originalSize)
|
||||
var offset, limit int64 = 0, -1
|
||||
for _, option := range options { // if the caller passes in nil for options, it will become array of nil
|
||||
switch x := option.(type) {
|
||||
|
||||
300
bin/manage_backends.py
Executable file
300
bin/manage_backends.py
Executable file
@@ -0,0 +1,300 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Manage the backend yaml files in docs/data/backends
|
||||
|
||||
usage: manage_backends.py [-h] {create,features,update,help} [files ...]
|
||||
|
||||
Manage rclone backend YAML files.
|
||||
|
||||
positional arguments:
|
||||
{create,features,update,help}
|
||||
Action to perform
|
||||
files List of YAML files to operate on
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
"""
|
||||
import argparse
|
||||
import sys
|
||||
import os
|
||||
import yaml
|
||||
import json
|
||||
import subprocess
|
||||
import time
|
||||
import socket
|
||||
from contextlib import contextmanager
|
||||
from pprint import pprint
|
||||
|
||||
# --- Configuration ---
|
||||
|
||||
# The order in which keys should appear in the YAML file
|
||||
CANONICAL_ORDER = [
|
||||
"backend",
|
||||
"name",
|
||||
"tier",
|
||||
"maintainers",
|
||||
"features_score",
|
||||
"integration_tests",
|
||||
"data_integrity",
|
||||
"performance",
|
||||
"adoption",
|
||||
"docs",
|
||||
"security",
|
||||
"virtual",
|
||||
"remote",
|
||||
"features",
|
||||
"hashes",
|
||||
"precision"
|
||||
]
|
||||
|
||||
# Default values for fields when creating/updating
|
||||
DEFAULTS = {
|
||||
"tier": None,
|
||||
"maintainers": None,
|
||||
"features_score": None,
|
||||
"integration_tests": None,
|
||||
"data_integrity": None,
|
||||
"performance": None,
|
||||
"adoption": None,
|
||||
"docs": None,
|
||||
"security": None,
|
||||
"virtual": False,
|
||||
"remote": None,
|
||||
"features": [],
|
||||
"hashes": [],
|
||||
"precision": None
|
||||
}
|
||||
|
||||
# --- Test server management ---
|
||||
|
||||
def wait_for_tcp(address_str, delay=1, timeout=2, tries=60):
|
||||
"""
|
||||
Blocks until the specified TCP address (e.g., '172.17.0.3:21') is reachable.
|
||||
"""
|
||||
host, port = address_str.split(":")
|
||||
port = int(port)
|
||||
print(f"Waiting for {host}:{port}...")
|
||||
for tri in range(tries):
|
||||
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:
|
||||
sock.settimeout(timeout)
|
||||
result = sock.connect_ex((host, port))
|
||||
if result == 0:
|
||||
print(f"Connected to {host}:{port} successfully!")
|
||||
break
|
||||
else:
|
||||
print(f"Failed to connect to {host}:{port} try {tri} !")
|
||||
time.sleep(delay)
|
||||
|
||||
def parse_init_output(binary_input):
|
||||
"""
|
||||
Parse the output of the init script
|
||||
"""
|
||||
decoded_str = binary_input.decode('utf-8')
|
||||
result = {}
|
||||
for line in decoded_str.splitlines():
|
||||
if '=' in line:
|
||||
key, value = line.split('=', 1)
|
||||
result[key.strip()] = value.strip()
|
||||
return result
|
||||
|
||||
@contextmanager
|
||||
def test_server(remote):
|
||||
"""Start the test server for remote if needed"""
|
||||
remote_name = remote.split(":",1)[0]
|
||||
init_script = "fstest/testserver/init.d/" + remote_name
|
||||
if not os.path.isfile(init_script):
|
||||
yield
|
||||
return
|
||||
print(f"--- Starting {init_script} ---")
|
||||
out = subprocess.check_output([init_script, "start"])
|
||||
out = parse_init_output(out)
|
||||
pprint(out)
|
||||
# Configure the server with environment variables
|
||||
env_keys = []
|
||||
for key, value in out.items():
|
||||
env_key = f"RCLONE_CONFIG_{remote_name.upper()}_{key.upper()}"
|
||||
env_keys.append(env_key)
|
||||
os.environ[env_key] = value
|
||||
for key,var in os.environ.items():
|
||||
if key.startswith("RCLON"):
|
||||
print(key, var)
|
||||
if "_connect" in out:
|
||||
wait_for_tcp(out["_connect"])
|
||||
try:
|
||||
yield
|
||||
finally:
|
||||
print(f"--- Stopping {init_script} ---")
|
||||
subprocess.run([init_script, "stop"], check=True)
|
||||
# Remove the env vars
|
||||
for env_key in env_keys:
|
||||
del os.environ[env_key]
|
||||
|
||||
# --- Helper Functions ---
|
||||
|
||||
def load_yaml(filepath):
|
||||
if not os.path.exists(filepath):
|
||||
return {}
|
||||
with open(filepath, 'r', encoding='utf-8') as f:
|
||||
return yaml.safe_load(f) or {}
|
||||
|
||||
def save_yaml(filepath, data):
|
||||
# Reconstruct dictionary in canonical order
|
||||
ordered_data = {}
|
||||
|
||||
# Add known keys in order
|
||||
for key in CANONICAL_ORDER:
|
||||
if key in data:
|
||||
ordered_data[key] = data[key]
|
||||
|
||||
# Add any other keys that might exist (custom fields)
|
||||
for key in data:
|
||||
if key not in CANONICAL_ORDER:
|
||||
ordered_data[key] = data[key]
|
||||
|
||||
# Ensure features are a sorted list (if present)
|
||||
if 'features' in ordered_data and isinstance(ordered_data['features'], list):
|
||||
ordered_data['features'].sort()
|
||||
|
||||
with open(filepath, 'w', encoding='utf-8') as f:
|
||||
yaml.dump(ordered_data, f, default_flow_style=False, sort_keys=False, allow_unicode=True)
|
||||
print(f"Saved {filepath}")
|
||||
|
||||
def get_backend_name_from_file(filepath):
|
||||
"""
|
||||
s3.yaml -> S3
|
||||
azureblob.yaml -> Azureblob
|
||||
"""
|
||||
basename = os.path.basename(filepath)
|
||||
name, _ = os.path.splitext(basename)
|
||||
return name.title()
|
||||
|
||||
def fetch_rclone_features(remote_str):
|
||||
"""
|
||||
Runs `rclone backend features remote:` and returns the JSON object.
|
||||
"""
|
||||
cmd = ["rclone", "backend", "features", remote_str]
|
||||
try:
|
||||
with test_server(remote_str):
|
||||
result = subprocess.run(cmd, capture_output=True, text=True, check=True)
|
||||
return json.loads(result.stdout)
|
||||
except subprocess.CalledProcessError as e:
|
||||
print(f"Error running rclone: {e.stderr}")
|
||||
return None
|
||||
except FileNotFoundError:
|
||||
print("Error: 'rclone' command not found in PATH.")
|
||||
sys.exit(1)
|
||||
|
||||
# --- Verbs ---
|
||||
|
||||
def do_create(files):
|
||||
for filepath in files:
|
||||
if os.path.exists(filepath):
|
||||
print(f"Skipping {filepath} (already exists)")
|
||||
continue
|
||||
|
||||
data = DEFAULTS.copy()
|
||||
# Set a default name based on filename
|
||||
data['name'] = get_backend_name_from_file(filepath)
|
||||
save_yaml(filepath, data)
|
||||
|
||||
def do_update(files):
|
||||
for filepath in files:
|
||||
if not os.path.exists(filepath):
|
||||
print(f"Warning: {filepath} does not exist. Use 'create' first.")
|
||||
continue
|
||||
|
||||
data = load_yaml(filepath)
|
||||
modified = False
|
||||
|
||||
# Inject the filename as the 'backend'
|
||||
file_backend = os.path.splitext(os.path.basename(filepath))[0]
|
||||
|
||||
if data.get('backend') != file_backend:
|
||||
data['backend'] = file_backend
|
||||
modified = True
|
||||
print(f"[{filepath}] Updated backend to: {file_backend}")
|
||||
|
||||
# Add missing default fields
|
||||
for key, default_val in DEFAULTS.items():
|
||||
if key not in data:
|
||||
data[key] = default_val
|
||||
modified = True
|
||||
print(f"[{filepath}] Added missing field: {key}")
|
||||
|
||||
# Special handling for 'name' if it was just added as None or didn't exist
|
||||
if data.get('name') is None:
|
||||
data['name'] = get_backend_name_from_file(filepath)
|
||||
modified = True
|
||||
print(f"[{filepath}] Set default name: {data['name']}")
|
||||
|
||||
if modified:
|
||||
save_yaml(filepath, data)
|
||||
else:
|
||||
# We save anyway to enforce canonical order if the file was messy
|
||||
save_yaml(filepath, data)
|
||||
|
||||
def do_features(files):
|
||||
for filepath in files:
|
||||
if not os.path.exists(filepath):
|
||||
print(f"Error: {filepath} not found.")
|
||||
continue
|
||||
|
||||
data = load_yaml(filepath)
|
||||
remote = data.get('remote')
|
||||
|
||||
if not remote:
|
||||
print(f"Error: [{filepath}] 'remote' field is missing or empty. Cannot fetch features.")
|
||||
continue
|
||||
|
||||
print(f"[{filepath}] Fetching features for remote: '{remote}'...")
|
||||
rclone_data = fetch_rclone_features(remote)
|
||||
|
||||
if not rclone_data:
|
||||
print(f"Failed to fetch data for {filepath}")
|
||||
continue
|
||||
|
||||
# Process Features (Dict -> Sorted List of True keys)
|
||||
features_dict = rclone_data.get('Features', {})
|
||||
# Filter only true values and sort keys
|
||||
feature_list = sorted([k for k, v in features_dict.items() if v])
|
||||
|
||||
# Process Hashes
|
||||
hashes_list = rclone_data.get('Hashes', [])
|
||||
|
||||
# Process Precision
|
||||
precision = rclone_data.get('Precision')
|
||||
|
||||
# Update data
|
||||
data['features'] = feature_list
|
||||
data['hashes'] = hashes_list
|
||||
data['precision'] = precision
|
||||
|
||||
save_yaml(filepath, data)
|
||||
|
||||
# --- Main CLI ---
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description="Manage rclone backend YAML files.")
|
||||
parser.add_argument("verb", choices=["create", "features", "update", "help"], help="Action to perform")
|
||||
parser.add_argument("files", nargs="*", help="List of YAML files to operate on")
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
if args.verb == "help":
|
||||
parser.print_help()
|
||||
sys.exit(0)
|
||||
|
||||
if not args.files:
|
||||
print("Error: No files specified.")
|
||||
parser.print_help()
|
||||
sys.exit(1)
|
||||
|
||||
if args.verb == "create":
|
||||
do_create(args.files)
|
||||
elif args.verb == "update":
|
||||
do_update(args.files)
|
||||
elif args.verb == "features":
|
||||
do_features(args.files)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -1067,3 +1067,6 @@ put them back in again. -->
|
||||
- Qingwei Li <332664203@qq.com>
|
||||
- yy <yhymmt37@gmail.com>
|
||||
- Marc-Philip <marc-philip.werner@sap.com>
|
||||
- Mikel Olasagasti Uranga <mikel@olasagasti.info>
|
||||
- Nick Owens <mischief@offblast.org>
|
||||
- hyusap <paulayush@gmail.com>
|
||||
|
||||
@@ -659,8 +659,14 @@ second that each client_id can do set by Google.
|
||||
If there is a problem with this client_id (eg quota too low or the
|
||||
client_id stops working) then you can make your own.
|
||||
|
||||
Please follow the steps in [the google drive docs](https://rclone.org/drive/#making-your-own-client-id).
|
||||
You will need these scopes instead of the drive ones detailed:
|
||||
Please follow the steps in [the google drive docs](https://rclone.org/drive/#making-your-own-client-id)
|
||||
with the following differences:
|
||||
|
||||
- At step 3, instead of enabling the "Google Drive API", search for and
|
||||
enable the "Photos Library API".
|
||||
|
||||
- At step 5, you will need to add different scopes. Use these scopes
|
||||
instead of the drive ones:
|
||||
|
||||
```text
|
||||
https://www.googleapis.com/auth/photoslibrary.appendonly
|
||||
|
||||
@@ -14,105 +14,7 @@ show through.
|
||||
|
||||
Here is an overview of the major features of each cloud storage system.
|
||||
|
||||
| Name | Hash | ModTime | Case Insensitive | Duplicate Files | MIME Type | Metadata |
|
||||
| ---------------------------- |:-----------------:|:-------:|:----------------:|:---------------:|:---------:|:--------:|
|
||||
| 1Fichier | Whirlpool | - | No | Yes | R | - |
|
||||
| Akamai Netstorage | MD5, SHA256 | R/W | No | No | R | - |
|
||||
| Amazon S3 (or S3 compatible) | MD5 | R/W | No | No | R/W | RWU |
|
||||
| Backblaze B2 | SHA1 | R/W | No | No | R/W | - |
|
||||
| Box | SHA1 | R/W | Yes | No | - | - |
|
||||
| Citrix ShareFile | MD5 | R/W | Yes | No | - | - |
|
||||
| Cloudinary | MD5 | R | No | Yes | - | - |
|
||||
| Drime | - | - | No | No | R/W | - |
|
||||
| Dropbox | DBHASH ¹ | R | Yes | No | - | - |
|
||||
| Enterprise File Fabric | - | R/W | Yes | No | R/W | - |
|
||||
| FileLu Cloud Storage | MD5 | R/W | No | Yes | R | - |
|
||||
| Filen | Blake3 | R/W | Yes | No | R/W | - |
|
||||
| Files.com | MD5, CRC32 | DR/W | Yes | No | R | - |
|
||||
| FTP | - | R/W ¹⁰ | No | No | - | - |
|
||||
| Gofile | MD5 | DR/W | No | Yes | R | - |
|
||||
| Google Cloud Storage | MD5 | R/W | No | No | R/W | - |
|
||||
| Google Drive | MD5, SHA1, SHA256 | DR/W | No | Yes | R/W | DRWU |
|
||||
| Google Photos | - | - | No | Yes | R | - |
|
||||
| HDFS | - | R/W | No | No | - | - |
|
||||
| HiDrive | HiDrive ¹² | R/W | No | No | - | - |
|
||||
| HTTP | - | R | No | No | R | R |
|
||||
| iCloud Drive | - | R | No | No | - | - |
|
||||
| Internet Archive | MD5, SHA1, CRC32 | R/W ¹¹ | No | No | - | RWU |
|
||||
| Jottacloud | MD5 | R/W | Yes | No | R | RW |
|
||||
| Koofr | MD5 | - | Yes | No | - | - |
|
||||
| Linkbox | - | R | No | No | - | - |
|
||||
| Mail.ru Cloud | Mailru ⁶ | R/W | Yes | No | - | - |
|
||||
| Mega | - | - | No | Yes | - | - |
|
||||
| Memory | MD5 | R/W | No | No | - | - |
|
||||
| Microsoft Azure Blob Storage | MD5 | R/W | No | No | R/W | - |
|
||||
| Microsoft Azure Files Storage | MD5 | R/W | Yes | No | R/W | - |
|
||||
| Microsoft OneDrive | QuickXorHash ⁵ | DR/W | Yes | No | R | DRW |
|
||||
| OpenDrive | MD5 | R/W | Yes | Partial ⁸ | - | - |
|
||||
| OpenStack Swift | MD5 | R/W | No | No | R/W | - |
|
||||
| Oracle Object Storage | MD5 | R/W | No | No | R/W | RU |
|
||||
| pCloud | MD5, SHA1 ⁷ | R/W | No | No | W | - |
|
||||
| PikPak | MD5 | R | No | No | R | - |
|
||||
| Pixeldrain | SHA256 | R/W | No | No | R | RW |
|
||||
| premiumize.me | - | - | Yes | No | R | - |
|
||||
| put.io | CRC-32 | R/W | No | Yes | R | - |
|
||||
| Proton Drive | SHA1 | R/W | No | No | R | - |
|
||||
| QingStor | MD5 | - ⁹ | No | No | R/W | - |
|
||||
| Quatrix by Maytech | - | R/W | No | No | - | - |
|
||||
| Seafile | - | - | No | No | - | - |
|
||||
| SFTP | MD5, SHA1 ² | DR/W | Depends | No | - | - |
|
||||
| Shade | - | - | Yes | No | - | - |
|
||||
| Sia | - | - | No | No | - | - |
|
||||
| SMB | - | R/W | Yes | No | - | - |
|
||||
| SugarSync | - | - | No | No | - | - |
|
||||
| Storj | - | R | No | No | - | - |
|
||||
| Uloz.to | MD5, SHA256 ¹³ | - | No | Yes | - | - |
|
||||
| WebDAV | MD5, SHA1 ³ | R ⁴ | Depends | No | - | - |
|
||||
| Yandex Disk | MD5 | R/W | No | No | R | - |
|
||||
| Zoho WorkDrive | - | - | No | No | - | - |
|
||||
| The local filesystem | All | DR/W | Depends | No | - | DRWU |
|
||||
|
||||
¹ Dropbox supports [its own custom
|
||||
hash](https://www.dropbox.com/developers/reference/content-hash).
|
||||
This is an SHA256 sum of all the 4 MiB block SHA256s.
|
||||
|
||||
² SFTP supports checksums if the same login has shell access and
|
||||
`md5sum` or `sha1sum` as well as `echo` are in the remote's PATH.
|
||||
|
||||
³ WebDAV supports hashes when used with Fastmail Files, Owncloud and Nextcloud only.
|
||||
|
||||
⁴ WebDAV supports modtimes when used with Fastmail Files, Owncloud and Nextcloud
|
||||
only.
|
||||
|
||||
⁵ [QuickXorHash](https://docs.microsoft.com/en-us/onedrive/developer/code-snippets/quickxorhash)
|
||||
is Microsoft's own hash.
|
||||
|
||||
⁶ Mail.ru uses its own modified SHA1 hash
|
||||
|
||||
⁷ pCloud only supports SHA1 (not MD5) in its EU region
|
||||
|
||||
⁸ Opendrive does not support creation of duplicate files using
|
||||
their web client interface or other stock clients, but the underlying
|
||||
storage platform has been determined to allow duplicate files, and it
|
||||
is possible to create them with `rclone`. It may be that this is a
|
||||
mistake or an unsupported feature.
|
||||
|
||||
⁹ QingStor does not support SetModTime for objects bigger than 5 GiB.
|
||||
|
||||
¹⁰ FTP supports modtimes for the major FTP servers, and also others
|
||||
if they advertised required protocol extensions. See [this](/ftp/#modification-times)
|
||||
for more details.
|
||||
|
||||
¹¹ Internet Archive requires option `wait_archive` to be set to a non-zero value
|
||||
for full modtime support.
|
||||
|
||||
¹² HiDrive supports [its own custom
|
||||
hash](https://static.hidrive.com/dev/0001).
|
||||
It combines SHA1 sums for each 4 KiB block hierarchically to a single
|
||||
top-level sum.
|
||||
|
||||
¹³ Uloz.to provides server-calculated MD5 hash upon file upload. MD5 and SHA256
|
||||
hashes are client-calculated and stored as metadata fields.
|
||||
{{< features-table >}}
|
||||
|
||||
### Hash
|
||||
|
||||
@@ -508,74 +410,7 @@ See [the metadata docs](/docs/#metadata) for more info.
|
||||
All rclone remotes support a base command set. Other features depend
|
||||
upon backend-specific capabilities.
|
||||
|
||||
| Name | Purge | Copy | Move | DirMove | CleanUp | ListR | StreamUpload | MultithreadUpload | LinkSharing | About | EmptyDir |
|
||||
| ---------------------------- |:-----:|:----:|:----:|:-------:|:-------:|:-----:|:------------:|:------------------|:------------:|:-----:|:--------:|
|
||||
| 1Fichier | No | Yes | Yes | No | No | No | No | No | Yes | No | Yes |
|
||||
| Akamai Netstorage | Yes | No | No | No | No | Yes | Yes | No | No | No | Yes |
|
||||
| Amazon S3 (or S3 compatible) | No | Yes | No | No | Yes | Yes | Yes | Yes | Yes | No | No |
|
||||
| Backblaze B2 | No | Yes | No | No | Yes | Yes | Yes | Yes | Yes | No | No |
|
||||
| Box | Yes | Yes | Yes | Yes | Yes | No | Yes | No | Yes | Yes | Yes |
|
||||
| Citrix ShareFile | Yes | Yes | Yes | Yes | No | No | No | No | No | No | Yes |
|
||||
| Drime | Yes | Yes | Yes | Yes | No | No | Yes | Yes | No | No | Yes |
|
||||
| Dropbox | Yes | Yes | Yes | Yes | No | No | Yes | No | Yes | Yes | Yes |
|
||||
| Cloudinary | No | No | No | No | No | No | Yes | No | No | No | No |
|
||||
| Enterprise File Fabric | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | Yes |
|
||||
| Filen | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes |
|
||||
| Files.com | Yes | Yes | Yes | Yes | No | No | Yes | No | Yes | No | Yes |
|
||||
| FTP | No | No | Yes | Yes | No | No | Yes | No | No | No | Yes |
|
||||
| Gofile | Yes | Yes | Yes | Yes | No | No | Yes | No | Yes | Yes | Yes |
|
||||
| Google Cloud Storage | Yes | Yes | No | No | No | No | Yes | No | No | No | No |
|
||||
| Google Drive | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes |
|
||||
| Google Photos | No | No | No | No | No | No | No | No | No | No | No |
|
||||
| HDFS | Yes | No | Yes | Yes | No | No | Yes | No | No | Yes | Yes |
|
||||
| HiDrive | Yes | Yes | Yes | Yes | No | No | Yes | No | No | No | Yes |
|
||||
| HTTP | No | No | No | No | No | No | No | No | No | No | Yes |
|
||||
| iCloud Drive | Yes | Yes | Yes | Yes | No | No | No | No | No | No | Yes |
|
||||
| ImageKit | Yes | No | Yes | No | No | No | No | No | No | No | Yes |
|
||||
| Internet Archive | No | Yes | No | No | Yes | Yes | No | No | Yes | Yes | No |
|
||||
| Jottacloud | Yes | Yes | Yes | Yes | Yes | Yes | No | No | Yes | Yes | Yes |
|
||||
| Koofr | Yes | Yes | Yes | Yes | No | No | Yes | No | Yes | Yes | Yes |
|
||||
| Mail.ru Cloud | Yes | Yes | Yes | Yes | Yes | No | No | No | Yes | Yes | Yes |
|
||||
| Mega | Yes | No | Yes | Yes | Yes | No | No | No | Yes | Yes | Yes |
|
||||
| Memory | No | Yes | No | No | No | Yes | Yes | No | No | No | No |
|
||||
| Microsoft Azure Blob Storage | Yes | Yes | No | No | No | Yes | Yes | Yes | No | No | No |
|
||||
| Microsoft Azure Files Storage | No | Yes | Yes | Yes | No | No | Yes | Yes | No | Yes | Yes |
|
||||
| Microsoft OneDrive | Yes | Yes | Yes | Yes | Yes | Yes ⁵ | No | No | Yes | Yes | Yes |
|
||||
| OpenDrive | Yes | Yes | Yes | Yes | No | No | No | No | No | Yes | Yes |
|
||||
| OpenStack Swift | Yes ¹ | Yes | No | No | No | Yes | Yes | No | No | Yes | No |
|
||||
| Oracle Object Storage | No | Yes | No | No | Yes | Yes | Yes | Yes | No | No | No |
|
||||
| pCloud | Yes | Yes | Yes | Yes | Yes | Yes | No | No | Yes | Yes | Yes |
|
||||
| PikPak | Yes | Yes | Yes | Yes | Yes | No | No | No | Yes | Yes | Yes |
|
||||
| Pixeldrain | Yes | No | Yes | Yes | No | No | Yes | No | Yes | Yes | Yes |
|
||||
| premiumize.me | Yes | No | Yes | Yes | No | No | No | No | Yes | Yes | Yes |
|
||||
| put.io | Yes | No | Yes | Yes | Yes | No | Yes | No | No | Yes | Yes |
|
||||
| Proton Drive | Yes | No | Yes | Yes | Yes | No | No | No | No | Yes | Yes |
|
||||
| QingStor | No | Yes | No | No | Yes | Yes | No | No | No | No | No |
|
||||
| Quatrix by Maytech | Yes | Yes | Yes | Yes | No | No | No | No | No | Yes | Yes |
|
||||
| Seafile | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes |
|
||||
| SFTP | No | Yes ⁴| Yes | Yes | No | No | Yes | No | No | Yes | Yes |
|
||||
| Sia | No | No | No | No | No | No | Yes | No | No | No | Yes |
|
||||
| SMB | No | No | Yes | Yes | No | No | Yes | Yes | No | No | Yes |
|
||||
| SugarSync | Yes | Yes | Yes | Yes | No | No | Yes | No | Yes | No | Yes |
|
||||
| Storj | Yes ² | Yes | Yes | No | No | Yes | Yes | No | Yes | No | No |
|
||||
| Uloz.to | No | No | Yes | Yes | No | No | No | No | No | No | Yes |
|
||||
| WebDAV | Yes | Yes | Yes | Yes | No | No | Yes ³ | No | No | Yes | Yes |
|
||||
| Yandex Disk | Yes | Yes | Yes | Yes | Yes | No | Yes | No | Yes | Yes | Yes |
|
||||
| Zoho WorkDrive | Yes | Yes | Yes | Yes | No | No | No | No | No | Yes | Yes |
|
||||
| The local filesystem | No | No | Yes | Yes | No | No | Yes | Yes | No | Yes | Yes |
|
||||
|
||||
¹ Note Swift implements this in order to delete directory markers but
|
||||
it doesn't actually have a quicker way of deleting files other than
|
||||
deleting them individually.
|
||||
|
||||
² Storj implements this efficiently only for entire buckets. If
|
||||
purging a directory inside a bucket, files are deleted individually.
|
||||
|
||||
³ StreamUpload is not supported with Nextcloud
|
||||
|
||||
⁴ Use the `--sftp-copy-is-hardlink` flag to enable.
|
||||
|
||||
⁵ Use the `--onedrive-delta` flag to enable.
|
||||
{{< optional-features-table >}}
|
||||
|
||||
### Purge
|
||||
|
||||
|
||||
58
docs/content/tiers.md
Normal file
58
docs/content/tiers.md
Normal file
@@ -0,0 +1,58 @@
|
||||
---
|
||||
title: "Backend Support Tiers"
|
||||
description: "A complete list of supported backends and their stability tiers."
|
||||
---
|
||||
|
||||
# Tiers
|
||||
|
||||
Rclone backends are divided into tiers to give users an idea of the stability of each backend.
|
||||
|
||||
| Tier | Label | Intended meaning |
|
||||
|--------|---------------|------------------|
|
||||
| {{< tier tier="Tier 1" >}} | Core | Production-grade, first-class |
|
||||
| {{< tier tier="Tier 2" >}} | Stable | Well-supported, minor gaps |
|
||||
| {{< tier tier="Tier 3" >}} | Supported | Works for many uses; known caveats |
|
||||
| {{< tier tier="Tier 4" >}} | Experimental | Use with care; expect gaps/changes |
|
||||
| {{< tier tier="Tier 5" >}} | Deprecated | No longer maintained or supported |
|
||||
|
||||
## Overview
|
||||
|
||||
Here is a summary of all backends:
|
||||
|
||||
{{< tiers-table >}}
|
||||
|
||||
## Scoring
|
||||
|
||||
Here is how the backends are scored.
|
||||
|
||||
### Features
|
||||
|
||||
These are useful optional features a backend should have in rough
|
||||
order of importance. Each one of these scores a point for the Features
|
||||
column.
|
||||
|
||||
- F1: Hash(es)
|
||||
- F2: Modtime
|
||||
- F3: Stream upload
|
||||
- F4: Copy/Move
|
||||
- F5: DirMove
|
||||
- F6: Metadata
|
||||
- F7: MultipartUpload
|
||||
|
||||
|
||||
### Tier
|
||||
|
||||
The tier is decided after determining these attributes. Some discretion is allowed in tiering as some of these attributes are more important than others.
|
||||
|
||||
| Attr | T1: Core | T2: Stable | T3: Supported | T4: Experimental | T5: Incubator |
|
||||
|------|----------|------------|---------------|------------------|---------------|
|
||||
| Maintainers | >=2 | >=1 | >=1 | >=0 | >=0 |
|
||||
| API source | Official | Official | Either | Either | Either |
|
||||
| Features (F1-F7) | >=5/7 | >=4/7 | >=3/7 | >=2/7 | N/A |
|
||||
| Integration tests | All Green | All green | Nearly all green | Some Flaky | N/A |
|
||||
| Error handling | Pacer | Pacer | Retries | Retries | N/A |
|
||||
| Data integrity | Hashes, alt, modtime | Hashes or alt | Hash OR modtime | Best-effort | N/A |
|
||||
| Perf baseline | Bench within 2x S3 | Bench doc | Anecdotal OK | Optional | N/A |
|
||||
| Adoption | widely used | often used | some use | N/A | N/A |
|
||||
| Docs completeness | Full | Full | Basic | Minimal | Minimal |
|
||||
| Security | Principle-of-least-privilege | Reasonable scopes | Basic auth | Works | Works |
|
||||
16
docs/data/backends/alias.yaml
Normal file
16
docs/data/backends/alias.yaml
Normal file
@@ -0,0 +1,16 @@
|
||||
backend: alias
|
||||
name: Alias
|
||||
tier: Tier 1
|
||||
maintainers: Core
|
||||
features_score: 7
|
||||
integration_tests: Passing
|
||||
data_integrity: Hash
|
||||
performance: High
|
||||
adoption: Widely used
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: true
|
||||
remote: null
|
||||
features: null
|
||||
hashes: null
|
||||
precision: null
|
||||
43
docs/data/backends/archive.yaml
Normal file
43
docs/data/backends/archive.yaml
Normal file
@@ -0,0 +1,43 @@
|
||||
backend: archive
|
||||
name: Archive
|
||||
tier: Tier 3
|
||||
maintainers: Core
|
||||
features_score: 3
|
||||
integration_tests: Passing
|
||||
data_integrity: Hash
|
||||
performance: High
|
||||
adoption: Some use
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: true
|
||||
remote: 'TestArchive:'
|
||||
features:
|
||||
- About
|
||||
- CanHaveEmptyDirectories
|
||||
- DirMove
|
||||
- Move
|
||||
- OpenWriterAt
|
||||
- Overlay
|
||||
- PartialUploads
|
||||
- PutStream
|
||||
- ReadMetadata
|
||||
- SetWrapper
|
||||
- UnWrap
|
||||
- UserMetadata
|
||||
- WrapFs
|
||||
- WriteMetadata
|
||||
hashes:
|
||||
- md5
|
||||
- sha1
|
||||
- whirlpool
|
||||
- crc32
|
||||
- sha256
|
||||
- sha512
|
||||
- blake3
|
||||
- xxh3
|
||||
- xxh128
|
||||
- dropbox
|
||||
- hidrive
|
||||
- mailru
|
||||
- quickxor
|
||||
precision: 1000000000
|
||||
34
docs/data/backends/azureblob.yaml
Normal file
34
docs/data/backends/azureblob.yaml
Normal file
@@ -0,0 +1,34 @@
|
||||
backend: azureblob
|
||||
name: Azure Blob
|
||||
tier: Tier 1
|
||||
maintainers: Core
|
||||
features_score: 7
|
||||
integration_tests: Passing
|
||||
data_integrity: Hash
|
||||
performance: High
|
||||
adoption: Widely used
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestAzureBlob:'
|
||||
features:
|
||||
- BucketBased
|
||||
- BucketBasedRootOK
|
||||
- Copy
|
||||
- DoubleSlash
|
||||
- GetTier
|
||||
- ListP
|
||||
- ListR
|
||||
- OpenChunkWriter
|
||||
- Purge
|
||||
- PutStream
|
||||
- ReadMetadata
|
||||
- ReadMimeType
|
||||
- ServerSideAcrossConfigs
|
||||
- SetTier
|
||||
- UserMetadata
|
||||
- WriteMetadata
|
||||
- WriteMimeType
|
||||
hashes:
|
||||
- md5
|
||||
precision: 1
|
||||
30
docs/data/backends/azurefiles.yaml
Normal file
30
docs/data/backends/azurefiles.yaml
Normal file
@@ -0,0 +1,30 @@
|
||||
backend: azurefiles
|
||||
name: Azure Files
|
||||
tier: Tier 2
|
||||
maintainers: Core
|
||||
features_score: 6
|
||||
integration_tests: Passing
|
||||
data_integrity: Hash
|
||||
performance: High
|
||||
adoption: Widely used
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestAzureFiles:'
|
||||
features:
|
||||
- About
|
||||
- CanHaveEmptyDirectories
|
||||
- CaseInsensitive
|
||||
- Copy
|
||||
- DirMove
|
||||
- ListP
|
||||
- Move
|
||||
- OpenWriterAt
|
||||
- PartialUploads
|
||||
- PutStream
|
||||
- ReadMimeType
|
||||
- SlowHash
|
||||
- WriteMimeType
|
||||
hashes:
|
||||
- md5
|
||||
precision: 1000000000
|
||||
31
docs/data/backends/b2.yaml
Normal file
31
docs/data/backends/b2.yaml
Normal file
@@ -0,0 +1,31 @@
|
||||
backend: b2
|
||||
name: B2
|
||||
tier: Tier 1
|
||||
maintainers: Core
|
||||
features_score: 6
|
||||
integration_tests: Passing
|
||||
data_integrity: Hash
|
||||
performance: High
|
||||
adoption: Widely used
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestB2:'
|
||||
features:
|
||||
- BucketBased
|
||||
- BucketBasedRootOK
|
||||
- ChunkWriterDoesntSeek
|
||||
- CleanUp
|
||||
- Command
|
||||
- Copy
|
||||
- ListP
|
||||
- ListR
|
||||
- OpenChunkWriter
|
||||
- PublicLink
|
||||
- Purge
|
||||
- PutStream
|
||||
- ReadMimeType
|
||||
- WriteMimeType
|
||||
hashes:
|
||||
- sha1
|
||||
precision: 1000000
|
||||
32
docs/data/backends/box.yaml
Normal file
32
docs/data/backends/box.yaml
Normal file
@@ -0,0 +1,32 @@
|
||||
backend: box
|
||||
name: Box
|
||||
tier: Tier 1
|
||||
maintainers: Core
|
||||
features_score: 6
|
||||
integration_tests: Passing
|
||||
data_integrity: Hash
|
||||
performance: High
|
||||
adoption: Widely used
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestBox:'
|
||||
features:
|
||||
- About
|
||||
- CanHaveEmptyDirectories
|
||||
- CaseInsensitive
|
||||
- ChangeNotify
|
||||
- CleanUp
|
||||
- Copy
|
||||
- DirCacheFlush
|
||||
- DirMove
|
||||
- ListP
|
||||
- Move
|
||||
- PublicLink
|
||||
- Purge
|
||||
- PutStream
|
||||
- PutUnchecked
|
||||
- Shutdown
|
||||
hashes:
|
||||
- sha1
|
||||
precision: 1000000000
|
||||
40
docs/data/backends/cache.yaml
Normal file
40
docs/data/backends/cache.yaml
Normal file
@@ -0,0 +1,40 @@
|
||||
backend: cache
|
||||
name: Cache
|
||||
tier: Tier 5
|
||||
maintainers: None
|
||||
features_score: 7
|
||||
integration_tests: Passing
|
||||
data_integrity: Hash
|
||||
performance: High
|
||||
adoption: Some use
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: true
|
||||
remote: 'TestCache:'
|
||||
features:
|
||||
- About
|
||||
- CanHaveEmptyDirectories
|
||||
- Command
|
||||
- DirCacheFlush
|
||||
- DirMove
|
||||
- Move
|
||||
- Overlay
|
||||
- PutStream
|
||||
- SetWrapper
|
||||
- UnWrap
|
||||
- WrapFs
|
||||
hashes:
|
||||
- md5
|
||||
- sha1
|
||||
- whirlpool
|
||||
- crc32
|
||||
- sha256
|
||||
- sha512
|
||||
- blake3
|
||||
- xxh3
|
||||
- xxh128
|
||||
- dropbox
|
||||
- hidrive
|
||||
- mailru
|
||||
- quickxor
|
||||
precision: 1
|
||||
16
docs/data/backends/chunker.yaml
Normal file
16
docs/data/backends/chunker.yaml
Normal file
@@ -0,0 +1,16 @@
|
||||
backend: chunker
|
||||
name: Chunker
|
||||
tier: Tier 4
|
||||
maintainers: None
|
||||
features_score: 7
|
||||
integration_tests: Passing
|
||||
data_integrity: Hash
|
||||
performance: High
|
||||
adoption: Some use
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: true
|
||||
remote: 'TestChunkerLocal:'
|
||||
features: null
|
||||
hashes: null
|
||||
precision: null
|
||||
18
docs/data/backends/cloudinary.yaml
Normal file
18
docs/data/backends/cloudinary.yaml
Normal file
@@ -0,0 +1,18 @@
|
||||
backend: cloudinary
|
||||
name: Cloudinary
|
||||
tier: Tier 3
|
||||
maintainers: Core
|
||||
features_score: 3
|
||||
integration_tests: Failing
|
||||
data_integrity: Hash
|
||||
performance: High
|
||||
adoption: Often used
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestCloudinary:'
|
||||
features:
|
||||
- CanHaveEmptyDirectories
|
||||
hashes:
|
||||
- md5
|
||||
precision: 3153600000000000000
|
||||
49
docs/data/backends/combine.yaml
Normal file
49
docs/data/backends/combine.yaml
Normal file
@@ -0,0 +1,49 @@
|
||||
backend: combine
|
||||
name: Combine
|
||||
tier: Tier 1
|
||||
maintainers: Core
|
||||
features_score: 7
|
||||
integration_tests: Passing
|
||||
data_integrity: Hash
|
||||
performance: High
|
||||
adoption: Often used
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: true
|
||||
remote: TestCombine:dir1
|
||||
features:
|
||||
- About
|
||||
- CanHaveEmptyDirectories
|
||||
- DirModTimeUpdatesOnWrite
|
||||
- DirMove
|
||||
- DirSetModTime
|
||||
- ListP
|
||||
- MkdirMetadata
|
||||
- Move
|
||||
- OpenWriterAt
|
||||
- Overlay
|
||||
- PartialUploads
|
||||
- PutStream
|
||||
- ReadDirMetadata
|
||||
- ReadMetadata
|
||||
- SlowHash
|
||||
- UserDirMetadata
|
||||
- UserMetadata
|
||||
- WriteDirMetadata
|
||||
- WriteDirSetModTime
|
||||
- WriteMetadata
|
||||
hashes:
|
||||
- md5
|
||||
- sha1
|
||||
- whirlpool
|
||||
- crc32
|
||||
- sha256
|
||||
- sha512
|
||||
- blake3
|
||||
- xxh3
|
||||
- xxh128
|
||||
- dropbox
|
||||
- hidrive
|
||||
- mailru
|
||||
- quickxor
|
||||
precision: 1
|
||||
39
docs/data/backends/compress.yaml
Normal file
39
docs/data/backends/compress.yaml
Normal file
@@ -0,0 +1,39 @@
|
||||
backend: compress
|
||||
name: Compress
|
||||
tier: Tier 4
|
||||
maintainers: Core
|
||||
features_score: 5
|
||||
integration_tests: Failing
|
||||
data_integrity: Hash
|
||||
performance: Medium
|
||||
adoption: Some use
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: true
|
||||
remote: 'TestCompress:'
|
||||
features:
|
||||
- About
|
||||
- CanHaveEmptyDirectories
|
||||
- DirModTimeUpdatesOnWrite
|
||||
- DirMove
|
||||
- DirSetModTime
|
||||
- ListP
|
||||
- MkdirMetadata
|
||||
- Move
|
||||
- Overlay
|
||||
- PartialUploads
|
||||
- PutStream
|
||||
- ReadDirMetadata
|
||||
- ReadMetadata
|
||||
- ReadMimeType
|
||||
- SetWrapper
|
||||
- UnWrap
|
||||
- UserDirMetadata
|
||||
- UserMetadata
|
||||
- WrapFs
|
||||
- WriteDirMetadata
|
||||
- WriteDirSetModTime
|
||||
- WriteMetadata
|
||||
hashes:
|
||||
- md5
|
||||
precision: 1
|
||||
16
docs/data/backends/crypt.yaml
Normal file
16
docs/data/backends/crypt.yaml
Normal file
@@ -0,0 +1,16 @@
|
||||
backend: crypt
|
||||
name: Crypt
|
||||
tier: Tier 1
|
||||
maintainers: Core
|
||||
features_score: 7
|
||||
integration_tests: Passing
|
||||
data_integrity: Hash
|
||||
performance: High
|
||||
adoption: Widely used
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: true
|
||||
remote: 'TestCryptLocal:'
|
||||
features: null
|
||||
hashes: null
|
||||
precision: null
|
||||
16
docs/data/backends/doi.yaml
Normal file
16
docs/data/backends/doi.yaml
Normal file
@@ -0,0 +1,16 @@
|
||||
backend: doi
|
||||
name: Doi
|
||||
tier: Tier 2
|
||||
maintainers: External
|
||||
features_score: 0
|
||||
integration_tests: N/A
|
||||
data_integrity: Other
|
||||
performance: High
|
||||
adoption: Some use
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: null
|
||||
features: null
|
||||
hashes: null
|
||||
precision: null
|
||||
27
docs/data/backends/drime.yaml
Normal file
27
docs/data/backends/drime.yaml
Normal file
@@ -0,0 +1,27 @@
|
||||
backend: drime
|
||||
name: Drime
|
||||
tier: Tier 1
|
||||
maintainers: Core
|
||||
features_score: 4
|
||||
integration_tests: Passing
|
||||
data_integrity: High
|
||||
performance: High
|
||||
adoption: Some use
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestDrime:'
|
||||
features:
|
||||
- CanHaveEmptyDirectories
|
||||
- Copy
|
||||
- DirCacheFlush
|
||||
- DirMove
|
||||
- Move
|
||||
- OpenChunkWriter
|
||||
- Purge
|
||||
- PutStream
|
||||
- PutUnchecked
|
||||
- ReadMimeType
|
||||
- WriteMimeType
|
||||
hashes: []
|
||||
precision: 3153600000000000000
|
||||
48
docs/data/backends/drive.yaml
Normal file
48
docs/data/backends/drive.yaml
Normal file
@@ -0,0 +1,48 @@
|
||||
backend: drive
|
||||
name: Drive
|
||||
tier: Tier 1
|
||||
maintainers: Core
|
||||
features_score: 7
|
||||
integration_tests: Passing
|
||||
data_integrity: Hash
|
||||
performance: High
|
||||
adoption: Widely used
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestDrive:'
|
||||
features:
|
||||
- About
|
||||
- CanHaveEmptyDirectories
|
||||
- ChangeNotify
|
||||
- CleanUp
|
||||
- Command
|
||||
- Copy
|
||||
- DirCacheFlush
|
||||
- DirMove
|
||||
- DirSetModTime
|
||||
- DuplicateFiles
|
||||
- FilterAware
|
||||
- ListP
|
||||
- ListR
|
||||
- MergeDirs
|
||||
- MkdirMetadata
|
||||
- Move
|
||||
- PublicLink
|
||||
- Purge
|
||||
- PutStream
|
||||
- PutUnchecked
|
||||
- ReadDirMetadata
|
||||
- ReadMetadata
|
||||
- ReadMimeType
|
||||
- UserDirMetadata
|
||||
- UserMetadata
|
||||
- WriteDirMetadata
|
||||
- WriteDirSetModTime
|
||||
- WriteMetadata
|
||||
- WriteMimeType
|
||||
hashes:
|
||||
- md5
|
||||
- sha1
|
||||
- sha256
|
||||
precision: 1000000
|
||||
29
docs/data/backends/dropbox.yaml
Normal file
29
docs/data/backends/dropbox.yaml
Normal file
@@ -0,0 +1,29 @@
|
||||
backend: dropbox
|
||||
name: Dropbox
|
||||
tier: Tier 1
|
||||
maintainers: Core
|
||||
features_score: 6
|
||||
integration_tests: Passing
|
||||
data_integrity: Hash
|
||||
performance: High
|
||||
adoption: Widely used
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestDropbox:'
|
||||
features:
|
||||
- About
|
||||
- CanHaveEmptyDirectories
|
||||
- CaseInsensitive
|
||||
- ChangeNotify
|
||||
- Copy
|
||||
- DirMove
|
||||
- ListP
|
||||
- Move
|
||||
- PublicLink
|
||||
- Purge
|
||||
- PutStream
|
||||
- Shutdown
|
||||
hashes:
|
||||
- dropbox
|
||||
precision: 1000000000
|
||||
26
docs/data/backends/fichier.yaml
Normal file
26
docs/data/backends/fichier.yaml
Normal file
@@ -0,0 +1,26 @@
|
||||
backend: fichier
|
||||
name: Fichier
|
||||
tier: Tier 3
|
||||
maintainers: Core
|
||||
features_score: 2
|
||||
integration_tests: Passing
|
||||
data_integrity: Hash
|
||||
performance: Medium
|
||||
adoption: Some use
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestFichier:'
|
||||
features:
|
||||
- About
|
||||
- CanHaveEmptyDirectories
|
||||
- Copy
|
||||
- DirMove
|
||||
- DuplicateFiles
|
||||
- Move
|
||||
- PublicLink
|
||||
- PutUnchecked
|
||||
- ReadMimeType
|
||||
hashes:
|
||||
- whirlpool
|
||||
precision: 3153600000000000000
|
||||
26
docs/data/backends/filefabric.yaml
Normal file
26
docs/data/backends/filefabric.yaml
Normal file
@@ -0,0 +1,26 @@
|
||||
backend: filefabric
|
||||
name: Filefabric
|
||||
tier: Tier 4
|
||||
maintainers: Core
|
||||
features_score: 3
|
||||
integration_tests: Failing
|
||||
data_integrity: Modtime
|
||||
performance: Medium
|
||||
adoption: Some use
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestFileFabric:'
|
||||
features:
|
||||
- CanHaveEmptyDirectories
|
||||
- CaseInsensitive
|
||||
- CleanUp
|
||||
- Copy
|
||||
- DirCacheFlush
|
||||
- DirMove
|
||||
- Move
|
||||
- Purge
|
||||
- ReadMimeType
|
||||
- WriteMimeType
|
||||
hashes: []
|
||||
precision: 1000000000
|
||||
21
docs/data/backends/filelu.yaml
Normal file
21
docs/data/backends/filelu.yaml
Normal file
@@ -0,0 +1,21 @@
|
||||
backend: filelu
|
||||
name: Filelu
|
||||
tier: Tier 1
|
||||
maintainers: Core
|
||||
features_score: 1
|
||||
integration_tests: Passing
|
||||
data_integrity: Hash
|
||||
performance: High
|
||||
adoption: Widely used
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestFileLu:'
|
||||
features:
|
||||
- About
|
||||
- CanHaveEmptyDirectories
|
||||
- Move
|
||||
- Purge
|
||||
- SlowHash
|
||||
hashes: []
|
||||
precision: 3153600000000000000
|
||||
29
docs/data/backends/filen.yaml
Normal file
29
docs/data/backends/filen.yaml
Normal file
@@ -0,0 +1,29 @@
|
||||
backend: filen
|
||||
name: Filen
|
||||
tier: Tier 1
|
||||
maintainers: External
|
||||
features_score: 6
|
||||
integration_tests: Passing
|
||||
data_integrity: Hash
|
||||
performance: High
|
||||
adoption: Some use
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestFilen:'
|
||||
features:
|
||||
- About
|
||||
- CanHaveEmptyDirectories
|
||||
- ChunkWriterDoesntSeek
|
||||
- CleanUp
|
||||
- DirMove
|
||||
- ListR
|
||||
- Move
|
||||
- OpenChunkWriter
|
||||
- Purge
|
||||
- PutStream
|
||||
- ReadMimeType
|
||||
- WriteMimeType
|
||||
hashes:
|
||||
- blake3
|
||||
precision: 1000000
|
||||
29
docs/data/backends/filescom.yaml
Normal file
29
docs/data/backends/filescom.yaml
Normal file
@@ -0,0 +1,29 @@
|
||||
backend: filescom
|
||||
name: Filescom
|
||||
tier: Tier 1
|
||||
maintainers: Core
|
||||
features_score: 5
|
||||
integration_tests: Passing
|
||||
data_integrity: Hash
|
||||
performance: High
|
||||
adoption: Widely used
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestFilesCom:'
|
||||
features:
|
||||
- CanHaveEmptyDirectories
|
||||
- CaseInsensitive
|
||||
- Copy
|
||||
- DirModTimeUpdatesOnWrite
|
||||
- DirMove
|
||||
- DirSetModTime
|
||||
- Move
|
||||
- PublicLink
|
||||
- Purge
|
||||
- PutStream
|
||||
- ReadMimeType
|
||||
hashes:
|
||||
- md5
|
||||
- crc32
|
||||
precision: 1000000000
|
||||
22
docs/data/backends/ftp.yaml
Normal file
22
docs/data/backends/ftp.yaml
Normal file
@@ -0,0 +1,22 @@
|
||||
backend: ftp
|
||||
name: FTP
|
||||
tier: Tier 1
|
||||
maintainers: Core
|
||||
features_score: 4
|
||||
integration_tests: Passing
|
||||
data_integrity: Modtime
|
||||
performance: High
|
||||
adoption: Widely used
|
||||
docs: Full
|
||||
security: Varies
|
||||
virtual: false
|
||||
remote: 'TestFTPProftpd:'
|
||||
features:
|
||||
- CanHaveEmptyDirectories
|
||||
- DirMove
|
||||
- Move
|
||||
- PartialUploads
|
||||
- PutStream
|
||||
- Shutdown
|
||||
hashes: []
|
||||
precision: 1000000000
|
||||
34
docs/data/backends/gofile.yaml
Normal file
34
docs/data/backends/gofile.yaml
Normal file
@@ -0,0 +1,34 @@
|
||||
backend: gofile
|
||||
name: Gofile
|
||||
tier: Tier 1
|
||||
maintainers: Core
|
||||
features_score: 5
|
||||
integration_tests: Passing
|
||||
data_integrity: Hash
|
||||
performance: High
|
||||
adoption: Often used
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestGoFile:'
|
||||
features:
|
||||
- About
|
||||
- CanHaveEmptyDirectories
|
||||
- Copy
|
||||
- DirCacheFlush
|
||||
- DirModTimeUpdatesOnWrite
|
||||
- DirMove
|
||||
- DirSetModTime
|
||||
- DuplicateFiles
|
||||
- ListR
|
||||
- MergeDirs
|
||||
- Move
|
||||
- PublicLink
|
||||
- Purge
|
||||
- PutStream
|
||||
- PutUnchecked
|
||||
- ReadMimeType
|
||||
- WriteDirSetModTime
|
||||
hashes:
|
||||
- md5
|
||||
precision: 1000000000
|
||||
26
docs/data/backends/googlecloudstorage.yaml
Normal file
26
docs/data/backends/googlecloudstorage.yaml
Normal file
@@ -0,0 +1,26 @@
|
||||
backend: googlecloudstorage
|
||||
name: Google Cloud Storage
|
||||
tier: Tier 1
|
||||
maintainers: Core
|
||||
features_score: 6
|
||||
integration_tests: Passing
|
||||
data_integrity: Hash
|
||||
performance: High
|
||||
adoption: Widely used
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestGoogleCloudStorage:'
|
||||
features:
|
||||
- BucketBased
|
||||
- BucketBasedRootOK
|
||||
- CanHaveEmptyDirectories
|
||||
- Copy
|
||||
- ListP
|
||||
- ListR
|
||||
- PutStream
|
||||
- ReadMimeType
|
||||
- WriteMimeType
|
||||
hashes:
|
||||
- md5
|
||||
precision: 1
|
||||
20
docs/data/backends/googlephotos.yaml
Normal file
20
docs/data/backends/googlephotos.yaml
Normal file
@@ -0,0 +1,20 @@
|
||||
backend: googlephotos
|
||||
name: Google Photos
|
||||
tier: Tier 5
|
||||
maintainers: None
|
||||
features_score: 0
|
||||
integration_tests: Failing
|
||||
data_integrity: Other
|
||||
performance: Low
|
||||
adoption: Some use
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestGooglePhotos:'
|
||||
features:
|
||||
- Disconnect
|
||||
- ReadMimeType
|
||||
- Shutdown
|
||||
- UserInfo
|
||||
hashes: []
|
||||
precision: 3153600000000000000
|
||||
16
docs/data/backends/hasher.yaml
Normal file
16
docs/data/backends/hasher.yaml
Normal file
@@ -0,0 +1,16 @@
|
||||
backend: hasher
|
||||
name: Hasher
|
||||
tier: Tier 4
|
||||
maintainers: Core
|
||||
features_score: 7
|
||||
integration_tests: Passing
|
||||
data_integrity: Hash
|
||||
performance: High
|
||||
adoption: Some use
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: true
|
||||
remote: null
|
||||
features: null
|
||||
hashes: null
|
||||
precision: null
|
||||
22
docs/data/backends/hdfs.yaml
Normal file
22
docs/data/backends/hdfs.yaml
Normal file
@@ -0,0 +1,22 @@
|
||||
backend: hdfs
|
||||
name: HDFS
|
||||
tier: Tier 2
|
||||
maintainers: Core
|
||||
features_score: 4
|
||||
integration_tests: Passing
|
||||
data_integrity: Modtime
|
||||
performance: Medium
|
||||
adoption: Some use
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestHdfs:'
|
||||
features:
|
||||
- About
|
||||
- CanHaveEmptyDirectories
|
||||
- DirMove
|
||||
- Move
|
||||
- Purge
|
||||
- PutStream
|
||||
hashes: []
|
||||
precision: 1000000000
|
||||
25
docs/data/backends/hidrive.yaml
Normal file
25
docs/data/backends/hidrive.yaml
Normal file
@@ -0,0 +1,25 @@
|
||||
backend: hidrive
|
||||
name: Hidrive
|
||||
tier: Tier 1
|
||||
maintainers: Core
|
||||
features_score: 5
|
||||
integration_tests: Passing
|
||||
data_integrity: Hash
|
||||
performance: Medium
|
||||
adoption: Often used
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestHiDrive:'
|
||||
features:
|
||||
- CanHaveEmptyDirectories
|
||||
- Copy
|
||||
- DirMove
|
||||
- Move
|
||||
- Purge
|
||||
- PutStream
|
||||
- PutUnchecked
|
||||
- Shutdown
|
||||
hashes:
|
||||
- hidrive
|
||||
precision: 1000000000
|
||||
20
docs/data/backends/http.yaml
Normal file
20
docs/data/backends/http.yaml
Normal file
@@ -0,0 +1,20 @@
|
||||
backend: http
|
||||
name: HTTP
|
||||
tier: Tier 3
|
||||
maintainers: Core
|
||||
features_score: 0
|
||||
integration_tests: N/A
|
||||
data_integrity: Other
|
||||
performance: High
|
||||
adoption: Widely used
|
||||
docs: Full
|
||||
security: Varies
|
||||
virtual: false
|
||||
remote: ':http,url=''http://downloads.rclone.org'':'
|
||||
features:
|
||||
- CanHaveEmptyDirectories
|
||||
- Command
|
||||
- PutStream
|
||||
- ReadMetadata
|
||||
hashes: []
|
||||
precision: 1000000000
|
||||
16
docs/data/backends/iclouddrive.yaml
Normal file
16
docs/data/backends/iclouddrive.yaml
Normal file
@@ -0,0 +1,16 @@
|
||||
backend: iclouddrive
|
||||
name: Iclouddrive
|
||||
tier: Tier 4
|
||||
maintainers: External
|
||||
features_score: 3
|
||||
integration_tests: Flaky
|
||||
data_integrity: Modtime
|
||||
performance: Low
|
||||
adoption: Some use
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestICloudDrive:'
|
||||
features: null
|
||||
hashes: null
|
||||
precision: null
|
||||
23
docs/data/backends/imagekit.yaml
Normal file
23
docs/data/backends/imagekit.yaml
Normal file
@@ -0,0 +1,23 @@
|
||||
backend: imagekit
|
||||
name: Imagekit
|
||||
tier: Tier 1
|
||||
maintainers: External
|
||||
features_score: 0
|
||||
integration_tests: Passing
|
||||
data_integrity: Other
|
||||
performance: High
|
||||
adoption: Some use
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestImageKit:'
|
||||
features:
|
||||
- CanHaveEmptyDirectories
|
||||
- FilterAware
|
||||
- PublicLink
|
||||
- Purge
|
||||
- ReadMetadata
|
||||
- ReadMimeType
|
||||
- SlowHash
|
||||
hashes: []
|
||||
precision: 3153600000000000000
|
||||
28
docs/data/backends/internetarchive.yaml
Normal file
28
docs/data/backends/internetarchive.yaml
Normal file
@@ -0,0 +1,28 @@
|
||||
backend: internetarchive
|
||||
name: Internet Archive
|
||||
tier: Tier 3
|
||||
maintainers: Core
|
||||
features_score: 5
|
||||
integration_tests: Failing
|
||||
data_integrity: Hash
|
||||
performance: Medium
|
||||
adoption: Widely used
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: TestIA:rclone-integration-test
|
||||
features:
|
||||
- About
|
||||
- BucketBased
|
||||
- CleanUp
|
||||
- Copy
|
||||
- ListR
|
||||
- PublicLink
|
||||
- ReadMetadata
|
||||
- UserMetadata
|
||||
- WriteMetadata
|
||||
hashes:
|
||||
- md5
|
||||
- sha1
|
||||
- crc32
|
||||
precision: 1
|
||||
32
docs/data/backends/jottacloud.yaml
Normal file
32
docs/data/backends/jottacloud.yaml
Normal file
@@ -0,0 +1,32 @@
|
||||
backend: jottacloud
|
||||
name: Jottacloud
|
||||
tier: Tier 1
|
||||
maintainers: Core
|
||||
features_score: 6
|
||||
integration_tests: Flaky
|
||||
data_integrity: Hash
|
||||
performance: High
|
||||
adoption: Widely used
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestJottacloud:'
|
||||
features:
|
||||
- About
|
||||
- CanHaveEmptyDirectories
|
||||
- CaseInsensitive
|
||||
- CleanUp
|
||||
- Copy
|
||||
- DirMove
|
||||
- ListR
|
||||
- Move
|
||||
- PublicLink
|
||||
- Purge
|
||||
- ReadMetadata
|
||||
- ReadMimeType
|
||||
- Shutdown
|
||||
- UserInfo
|
||||
- WriteMetadata
|
||||
hashes:
|
||||
- md5
|
||||
precision: 1000000000
|
||||
25
docs/data/backends/koofr.yaml
Normal file
25
docs/data/backends/koofr.yaml
Normal file
@@ -0,0 +1,25 @@
|
||||
backend: koofr
|
||||
name: Koofr
|
||||
tier: Tier 2
|
||||
maintainers: Core
|
||||
features_score: 5
|
||||
integration_tests: Passing
|
||||
data_integrity: Hash
|
||||
performance: High
|
||||
adoption: Widely used
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestKoofr:'
|
||||
features:
|
||||
- About
|
||||
- CanHaveEmptyDirectories
|
||||
- CaseInsensitive
|
||||
- Copy
|
||||
- DirMove
|
||||
- Move
|
||||
- PublicLink
|
||||
- PutStream
|
||||
hashes:
|
||||
- md5
|
||||
precision: 1000000
|
||||
20
docs/data/backends/linkbox.yaml
Normal file
20
docs/data/backends/linkbox.yaml
Normal file
@@ -0,0 +1,20 @@
|
||||
backend: linkbox
|
||||
name: Linkbox
|
||||
tier: Tier 5
|
||||
maintainers: Core
|
||||
features_score: 2
|
||||
integration_tests: Failing
|
||||
data_integrity: Modtime
|
||||
performance: High
|
||||
adoption: Often used
|
||||
docs: Basic
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestLinkbox:'
|
||||
features:
|
||||
- CanHaveEmptyDirectories
|
||||
- CaseInsensitive
|
||||
- DirCacheFlush
|
||||
- Purge
|
||||
hashes: []
|
||||
precision: 3153600000000000000
|
||||
50
docs/data/backends/local.yaml
Normal file
50
docs/data/backends/local.yaml
Normal file
@@ -0,0 +1,50 @@
|
||||
backend: local
|
||||
name: Local
|
||||
tier: Tier 1
|
||||
maintainers: Core
|
||||
features_score: 7
|
||||
integration_tests: Passing
|
||||
data_integrity: Hash
|
||||
performance: High
|
||||
adoption: Widely used
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: .
|
||||
features:
|
||||
- About
|
||||
- CanHaveEmptyDirectories
|
||||
- Command
|
||||
- DirModTimeUpdatesOnWrite
|
||||
- DirMove
|
||||
- DirSetModTime
|
||||
- FilterAware
|
||||
- IsLocal
|
||||
- MkdirMetadata
|
||||
- Move
|
||||
- OpenWriterAt
|
||||
- PartialUploads
|
||||
- PutStream
|
||||
- ReadDirMetadata
|
||||
- ReadMetadata
|
||||
- SlowHash
|
||||
- UserDirMetadata
|
||||
- UserMetadata
|
||||
- WriteDirMetadata
|
||||
- WriteDirSetModTime
|
||||
- WriteMetadata
|
||||
hashes:
|
||||
- md5
|
||||
- sha1
|
||||
- whirlpool
|
||||
- crc32
|
||||
- sha256
|
||||
- sha512
|
||||
- blake3
|
||||
- xxh3
|
||||
- xxh128
|
||||
- dropbox
|
||||
- hidrive
|
||||
- mailru
|
||||
- quickxor
|
||||
precision: 1
|
||||
27
docs/data/backends/mailru.yaml
Normal file
27
docs/data/backends/mailru.yaml
Normal file
@@ -0,0 +1,27 @@
|
||||
backend: mailru
|
||||
name: Mailru
|
||||
tier: Tier 1
|
||||
maintainers: External
|
||||
features_score: 6
|
||||
integration_tests: Passing
|
||||
data_integrity: Hash
|
||||
performance: Medium
|
||||
adoption: Often used
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestMailru:'
|
||||
features:
|
||||
- About
|
||||
- CanHaveEmptyDirectories
|
||||
- CaseInsensitive
|
||||
- CleanUp
|
||||
- Copy
|
||||
- DirMove
|
||||
- Move
|
||||
- PublicLink
|
||||
- Purge
|
||||
- ServerSideAcrossConfigs
|
||||
hashes:
|
||||
- mailru
|
||||
precision: 1000000000
|
||||
27
docs/data/backends/mega.yaml
Normal file
27
docs/data/backends/mega.yaml
Normal file
@@ -0,0 +1,27 @@
|
||||
backend: mega
|
||||
name: Mega
|
||||
tier: Tier 2
|
||||
maintainers: Core
|
||||
features_score: 3
|
||||
integration_tests: Flaky
|
||||
data_integrity: Other
|
||||
performance: High
|
||||
adoption: Widely used
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestMega:'
|
||||
features:
|
||||
- About
|
||||
- CanHaveEmptyDirectories
|
||||
- CleanUp
|
||||
- DirCacheFlush
|
||||
- DirMove
|
||||
- DuplicateFiles
|
||||
- MergeDirs
|
||||
- Move
|
||||
- PublicLink
|
||||
- Purge
|
||||
- PutUnchecked
|
||||
hashes: []
|
||||
precision: 3153600000000000000
|
||||
25
docs/data/backends/memory.yaml
Normal file
25
docs/data/backends/memory.yaml
Normal file
@@ -0,0 +1,25 @@
|
||||
backend: memory
|
||||
name: Memory
|
||||
tier: Tier 1
|
||||
maintainers: Core
|
||||
features_score: 4
|
||||
integration_tests: Passing
|
||||
data_integrity: Hash
|
||||
performance: High
|
||||
adoption: Widely used
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: ':memory:'
|
||||
features:
|
||||
- BucketBased
|
||||
- BucketBasedRootOK
|
||||
- Copy
|
||||
- ListP
|
||||
- ListR
|
||||
- PutStream
|
||||
- ReadMimeType
|
||||
- WriteMimeType
|
||||
hashes:
|
||||
- md5
|
||||
precision: 1
|
||||
22
docs/data/backends/netstorage.yaml
Normal file
22
docs/data/backends/netstorage.yaml
Normal file
@@ -0,0 +1,22 @@
|
||||
backend: netstorage
|
||||
name: Netstorage
|
||||
tier: Tier 1
|
||||
maintainers: Core
|
||||
features_score: 3
|
||||
integration_tests: Passing
|
||||
data_integrity: Hash
|
||||
performance: High
|
||||
adoption: Some use
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestnStorage:'
|
||||
features:
|
||||
- CanHaveEmptyDirectories
|
||||
- Command
|
||||
- ListR
|
||||
- Purge
|
||||
- PutStream
|
||||
hashes:
|
||||
- md5
|
||||
precision: 1000000000
|
||||
38
docs/data/backends/onedrive.yaml
Normal file
38
docs/data/backends/onedrive.yaml
Normal file
@@ -0,0 +1,38 @@
|
||||
backend: onedrive
|
||||
name: Onedrive
|
||||
tier: Tier 1
|
||||
maintainers: Core
|
||||
features_score: 6
|
||||
integration_tests: Flaky
|
||||
data_integrity: Hash
|
||||
performance: High
|
||||
adoption: Widely used
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestOneDrive:'
|
||||
features:
|
||||
- About
|
||||
- CanHaveEmptyDirectories
|
||||
- CaseInsensitive
|
||||
- ChangeNotify
|
||||
- CleanUp
|
||||
- Copy
|
||||
- DirCacheFlush
|
||||
- DirMove
|
||||
- DirSetModTime
|
||||
- ListP
|
||||
- MkdirMetadata
|
||||
- Move
|
||||
- PublicLink
|
||||
- Purge
|
||||
- ReadDirMetadata
|
||||
- ReadMetadata
|
||||
- ReadMimeType
|
||||
- Shutdown
|
||||
- WriteDirMetadata
|
||||
- WriteDirSetModTime
|
||||
- WriteMetadata
|
||||
hashes:
|
||||
- quickxor
|
||||
precision: 1000000000
|
||||
25
docs/data/backends/opendrive.yaml
Normal file
25
docs/data/backends/opendrive.yaml
Normal file
@@ -0,0 +1,25 @@
|
||||
backend: opendrive
|
||||
name: Opendrive
|
||||
tier: Tier 1
|
||||
maintainers: Core
|
||||
features_score: 5
|
||||
integration_tests: Passing
|
||||
data_integrity: Hash
|
||||
performance: High
|
||||
adoption: Often used
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestOpenDrive:'
|
||||
features:
|
||||
- About
|
||||
- CanHaveEmptyDirectories
|
||||
- CaseInsensitive
|
||||
- Copy
|
||||
- DirCacheFlush
|
||||
- DirMove
|
||||
- Move
|
||||
- Purge
|
||||
hashes:
|
||||
- md5
|
||||
precision: 1000000000
|
||||
32
docs/data/backends/oracleobjectstorage.yaml
Normal file
32
docs/data/backends/oracleobjectstorage.yaml
Normal file
@@ -0,0 +1,32 @@
|
||||
backend: oracleobjectstorage
|
||||
name: Oracle Object Storage
|
||||
tier: Tier 1
|
||||
maintainers: Core
|
||||
features_score: 6
|
||||
integration_tests: Passing
|
||||
data_integrity: Hash
|
||||
performance: High
|
||||
adoption: Widely used
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestOracleObjectStorage:'
|
||||
features:
|
||||
- BucketBased
|
||||
- BucketBasedRootOK
|
||||
- CleanUp
|
||||
- Command
|
||||
- Copy
|
||||
- GetTier
|
||||
- ListP
|
||||
- ListR
|
||||
- OpenChunkWriter
|
||||
- PutStream
|
||||
- ReadMetadata
|
||||
- ReadMimeType
|
||||
- SetTier
|
||||
- SlowModTime
|
||||
- WriteMimeType
|
||||
hashes:
|
||||
- md5
|
||||
precision: 1000000
|
||||
31
docs/data/backends/pcloud.yaml
Normal file
31
docs/data/backends/pcloud.yaml
Normal file
@@ -0,0 +1,31 @@
|
||||
backend: pcloud
|
||||
name: Pcloud
|
||||
tier: Tier 1
|
||||
maintainers: Core
|
||||
features_score: 5
|
||||
integration_tests: Passing
|
||||
data_integrity: Hash
|
||||
performance: High
|
||||
adoption: Often used
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestPcloud:'
|
||||
features:
|
||||
- About
|
||||
- CanHaveEmptyDirectories
|
||||
- ChangeNotify
|
||||
- Copy
|
||||
- DirCacheFlush
|
||||
- DirMove
|
||||
- ListP
|
||||
- ListR
|
||||
- Move
|
||||
- PartialUploads
|
||||
- PublicLink
|
||||
- Purge
|
||||
- Shutdown
|
||||
hashes:
|
||||
- sha1
|
||||
- sha256
|
||||
precision: 1000000000
|
||||
30
docs/data/backends/pikpak.yaml
Normal file
30
docs/data/backends/pikpak.yaml
Normal file
@@ -0,0 +1,30 @@
|
||||
backend: pikpak
|
||||
name: Pikpak
|
||||
tier: Tier 1
|
||||
maintainers: External
|
||||
features_score: 5
|
||||
integration_tests: Passing
|
||||
data_integrity: Hash
|
||||
performance: High
|
||||
adoption: Often used
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestPikPak:'
|
||||
features:
|
||||
- About
|
||||
- CanHaveEmptyDirectories
|
||||
- CleanUp
|
||||
- Command
|
||||
- Copy
|
||||
- DirCacheFlush
|
||||
- DirMove
|
||||
- Move
|
||||
- NoMultiThreading
|
||||
- PublicLink
|
||||
- Purge
|
||||
- ReadMimeType
|
||||
- UserInfo
|
||||
hashes:
|
||||
- md5
|
||||
precision: 3153600000000000000
|
||||
29
docs/data/backends/pixeldrain.yaml
Normal file
29
docs/data/backends/pixeldrain.yaml
Normal file
@@ -0,0 +1,29 @@
|
||||
backend: pixeldrain
|
||||
name: Pixeldrain
|
||||
tier: Tier 1
|
||||
maintainers: Core
|
||||
features_score: 7
|
||||
integration_tests: Passing
|
||||
data_integrity: Hash
|
||||
performance: High
|
||||
adoption: Widely used
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestPixeldrain:'
|
||||
features:
|
||||
- About
|
||||
- CanHaveEmptyDirectories
|
||||
- ChangeNotify
|
||||
- DirMove
|
||||
- DirSetModTime
|
||||
- Move
|
||||
- PublicLink
|
||||
- Purge
|
||||
- PutStream
|
||||
- ReadMetadata
|
||||
- ReadMimeType
|
||||
- WriteMetadata
|
||||
hashes:
|
||||
- sha256
|
||||
precision: 1000000
|
||||
27
docs/data/backends/premiumizeme.yaml
Normal file
27
docs/data/backends/premiumizeme.yaml
Normal file
@@ -0,0 +1,27 @@
|
||||
backend: premiumizeme
|
||||
name: Premiumizeme
|
||||
tier: Tier 3
|
||||
maintainers: Core
|
||||
features_score: 2
|
||||
integration_tests: Passing
|
||||
data_integrity: Other
|
||||
performance: High
|
||||
adoption: Some use
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestPremiumizeMe:'
|
||||
features:
|
||||
- About
|
||||
- CanHaveEmptyDirectories
|
||||
- CaseInsensitive
|
||||
- DirCacheFlush
|
||||
- DirMove
|
||||
- Move
|
||||
- PublicLink
|
||||
- Purge
|
||||
- PutUnchecked
|
||||
- ReadMimeType
|
||||
- Shutdown
|
||||
hashes: []
|
||||
precision: 3153600000000000000
|
||||
27
docs/data/backends/protondrive.yaml
Normal file
27
docs/data/backends/protondrive.yaml
Normal file
@@ -0,0 +1,27 @@
|
||||
backend: protondrive
|
||||
name: Proton Drive
|
||||
tier: Tier 5
|
||||
maintainers: None
|
||||
features_score: 4
|
||||
integration_tests: Failing
|
||||
data_integrity: Hash
|
||||
performance: High
|
||||
adoption: Often used
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestProtonDrive:'
|
||||
features:
|
||||
- About
|
||||
- CanHaveEmptyDirectories
|
||||
- CleanUp
|
||||
- DirCacheFlush
|
||||
- DirMove
|
||||
- Disconnect
|
||||
- Move
|
||||
- NoMultiThreading
|
||||
- Purge
|
||||
- ReadMimeType
|
||||
hashes:
|
||||
- sha1
|
||||
precision: 1000000000
|
||||
28
docs/data/backends/putio.yaml
Normal file
28
docs/data/backends/putio.yaml
Normal file
@@ -0,0 +1,28 @@
|
||||
backend: putio
|
||||
name: Putio
|
||||
tier: Tier 2
|
||||
maintainers: Core
|
||||
features_score: 5
|
||||
integration_tests: Flaky
|
||||
data_integrity: Hash
|
||||
performance: Low
|
||||
adoption: Often used
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestPutio:'
|
||||
features:
|
||||
- About
|
||||
- CanHaveEmptyDirectories
|
||||
- CleanUp
|
||||
- Copy
|
||||
- DirCacheFlush
|
||||
- DirMove
|
||||
- DuplicateFiles
|
||||
- Move
|
||||
- Purge
|
||||
- PutUnchecked
|
||||
- ReadMimeType
|
||||
hashes:
|
||||
- crc32
|
||||
precision: 1000000000
|
||||
25
docs/data/backends/qingstor.yaml
Normal file
25
docs/data/backends/qingstor.yaml
Normal file
@@ -0,0 +1,25 @@
|
||||
backend: qingstor
|
||||
name: Qingstor
|
||||
tier: Tier 3
|
||||
maintainers: Core
|
||||
features_score: 3
|
||||
integration_tests: Disabled
|
||||
data_integrity: Hash
|
||||
performance: High
|
||||
adoption: Often used
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestQingStor:'
|
||||
features:
|
||||
- BucketBased
|
||||
- BucketBasedRootOK
|
||||
- CleanUp
|
||||
- Copy
|
||||
- ListR
|
||||
- ReadMimeType
|
||||
- SlowModTime
|
||||
- WriteMimeType
|
||||
hashes:
|
||||
- md5
|
||||
precision: 3153600000000000000
|
||||
24
docs/data/backends/quatrix.yaml
Normal file
24
docs/data/backends/quatrix.yaml
Normal file
@@ -0,0 +1,24 @@
|
||||
backend: quatrix
|
||||
name: Quatrix
|
||||
tier: Tier 3
|
||||
maintainers: Core
|
||||
features_score: 3
|
||||
integration_tests: Passing
|
||||
data_integrity: Hash
|
||||
performance: High
|
||||
adoption: Often used
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestQuatrix:'
|
||||
features:
|
||||
- About
|
||||
- CanHaveEmptyDirectories
|
||||
- Copy
|
||||
- DirCacheFlush
|
||||
- DirMove
|
||||
- Move
|
||||
- PartialUploads
|
||||
- Purge
|
||||
hashes: []
|
||||
precision: 1000
|
||||
37
docs/data/backends/s3.yaml
Normal file
37
docs/data/backends/s3.yaml
Normal file
@@ -0,0 +1,37 @@
|
||||
backend: s3
|
||||
name: S3
|
||||
tier: Tier 1
|
||||
maintainers: Core
|
||||
features_score: 7
|
||||
integration_tests: Passing
|
||||
data_integrity: Hash
|
||||
performance: High
|
||||
adoption: Widely used
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestS3:'
|
||||
features:
|
||||
- BucketBased
|
||||
- BucketBasedRootOK
|
||||
- CleanUp
|
||||
- Command
|
||||
- Copy
|
||||
- DoubleSlash
|
||||
- GetTier
|
||||
- ListP
|
||||
- ListR
|
||||
- OpenChunkWriter
|
||||
- PublicLink
|
||||
- Purge
|
||||
- PutStream
|
||||
- ReadMetadata
|
||||
- ReadMimeType
|
||||
- SetTier
|
||||
- SlowModTime
|
||||
- UserMetadata
|
||||
- WriteMetadata
|
||||
- WriteMimeType
|
||||
hashes:
|
||||
- md5
|
||||
precision: 1
|
||||
28
docs/data/backends/seafile.yaml
Normal file
28
docs/data/backends/seafile.yaml
Normal file
@@ -0,0 +1,28 @@
|
||||
backend: seafile
|
||||
name: Seafile
|
||||
tier: Tier 3
|
||||
maintainers: Core
|
||||
features_score: 3
|
||||
integration_tests: Failing
|
||||
data_integrity: Other
|
||||
performance: Medium
|
||||
adoption: Some use
|
||||
docs: Basic
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestSeafile:'
|
||||
features:
|
||||
- About
|
||||
- CanHaveEmptyDirectories
|
||||
- CleanUp
|
||||
- Copy
|
||||
- DirMove
|
||||
- ListR
|
||||
- Move
|
||||
- PublicLink
|
||||
- Purge
|
||||
- PutStream
|
||||
- Shutdown
|
||||
- UserInfo
|
||||
hashes: []
|
||||
precision: 3153600000000000000
|
||||
29
docs/data/backends/sftp.yaml
Normal file
29
docs/data/backends/sftp.yaml
Normal file
@@ -0,0 +1,29 @@
|
||||
backend: sftp
|
||||
name: SFTP
|
||||
tier: Tier 1
|
||||
maintainers: Core
|
||||
features_score: 5
|
||||
integration_tests: Passing
|
||||
data_integrity: Hash
|
||||
performance: High
|
||||
adoption: Widely used
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestSFTPOpenssh:'
|
||||
features:
|
||||
- About
|
||||
- CanHaveEmptyDirectories
|
||||
- Copy
|
||||
- DirModTimeUpdatesOnWrite
|
||||
- DirMove
|
||||
- DirSetModTime
|
||||
- Move
|
||||
- PartialUploads
|
||||
- PutStream
|
||||
- Shutdown
|
||||
- SlowHash
|
||||
hashes:
|
||||
- md5
|
||||
- sha1
|
||||
precision: 1000000000
|
||||
20
docs/data/backends/shade.yaml
Normal file
20
docs/data/backends/shade.yaml
Normal file
@@ -0,0 +1,20 @@
|
||||
backend: shade
|
||||
name: Shade
|
||||
tier: Tier 1
|
||||
maintainers: External
|
||||
features_score: 0
|
||||
integration_tests: Passing
|
||||
data_integrity: Other
|
||||
performance: High
|
||||
adoption: Some use
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestShade:'
|
||||
features:
|
||||
- CanHaveEmptyDirectories
|
||||
- DirMove
|
||||
- Move
|
||||
- OpenChunkWriter
|
||||
hashes: []
|
||||
precision: 3153600000000000000
|
||||
17
docs/data/backends/sharefile.yaml
Normal file
17
docs/data/backends/sharefile.yaml
Normal file
@@ -0,0 +1,17 @@
|
||||
backend: sharefile
|
||||
name: Sharefile
|
||||
tier: Tier 5
|
||||
maintainers: Core
|
||||
features_score: 4
|
||||
integration_tests: Disabled
|
||||
data_integrity: Modtime
|
||||
performance: Medium
|
||||
adoption: Some use
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestSharefile:'
|
||||
features: null
|
||||
hashes:
|
||||
- md5
|
||||
precision: 1000000000
|
||||
18
docs/data/backends/sia.yaml
Normal file
18
docs/data/backends/sia.yaml
Normal file
@@ -0,0 +1,18 @@
|
||||
backend: sia
|
||||
name: Sia
|
||||
tier: Tier 4
|
||||
maintainers: Core
|
||||
features_score: 1
|
||||
integration_tests: Failing
|
||||
data_integrity: Other
|
||||
performance: Medium
|
||||
adoption: Some use
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestSia:'
|
||||
features:
|
||||
- CanHaveEmptyDirectories
|
||||
- PutStream
|
||||
hashes: []
|
||||
precision: 3153600000000000000
|
||||
26
docs/data/backends/smb.yaml
Normal file
26
docs/data/backends/smb.yaml
Normal file
@@ -0,0 +1,26 @@
|
||||
backend: smb
|
||||
name: SMB
|
||||
tier: Tier 2
|
||||
maintainers: External
|
||||
features_score: 5
|
||||
integration_tests: Passing
|
||||
data_integrity: Modtime
|
||||
performance: Medium
|
||||
adoption: Some use
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: TestSMB:rclone
|
||||
features:
|
||||
- About
|
||||
- BucketBased
|
||||
- CanHaveEmptyDirectories
|
||||
- CaseInsensitive
|
||||
- DirMove
|
||||
- Move
|
||||
- OpenWriterAt
|
||||
- PartialUploads
|
||||
- PutStream
|
||||
- Shutdown
|
||||
hashes: []
|
||||
precision: 1000000
|
||||
24
docs/data/backends/storj.yaml
Normal file
24
docs/data/backends/storj.yaml
Normal file
@@ -0,0 +1,24 @@
|
||||
backend: storj
|
||||
name: Storj
|
||||
tier: Tier 1
|
||||
maintainers: Core
|
||||
features_score: 4
|
||||
integration_tests: Passing
|
||||
data_integrity: Modtime
|
||||
performance: High
|
||||
adoption: Widely used
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestStorj:'
|
||||
features:
|
||||
- BucketBased
|
||||
- BucketBasedRootOK
|
||||
- Copy
|
||||
- ListR
|
||||
- Move
|
||||
- PublicLink
|
||||
- Purge
|
||||
- PutStream
|
||||
hashes: []
|
||||
precision: 1
|
||||
26
docs/data/backends/sugarsync.yaml
Normal file
26
docs/data/backends/sugarsync.yaml
Normal file
@@ -0,0 +1,26 @@
|
||||
backend: sugarsync
|
||||
name: Sugarsync
|
||||
tier: Tier 3
|
||||
maintainers: Core
|
||||
features_score: 3
|
||||
integration_tests: Passing
|
||||
data_integrity: Other
|
||||
performance: Medium
|
||||
adoption: Some use
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: TestSugarSync:Test
|
||||
features:
|
||||
- CanHaveEmptyDirectories
|
||||
- CaseInsensitive
|
||||
- Copy
|
||||
- DirCacheFlush
|
||||
- DirMove
|
||||
- Move
|
||||
- PublicLink
|
||||
- Purge
|
||||
- PutStream
|
||||
- PutUnchecked
|
||||
hashes: []
|
||||
precision: 3153600000000000000
|
||||
28
docs/data/backends/swift.yaml
Normal file
28
docs/data/backends/swift.yaml
Normal file
@@ -0,0 +1,28 @@
|
||||
backend: swift
|
||||
name: Swift
|
||||
tier: Tier 1
|
||||
maintainers: Core
|
||||
features_score: 4
|
||||
integration_tests: Passing
|
||||
data_integrity: Hash
|
||||
performance: High
|
||||
adoption: Widely used
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestSwiftAIO:'
|
||||
features:
|
||||
- About
|
||||
- BucketBased
|
||||
- BucketBasedRootOK
|
||||
- Copy
|
||||
- ListP
|
||||
- ListR
|
||||
- Purge
|
||||
- PutStream
|
||||
- ReadMimeType
|
||||
- SlowModTime
|
||||
- WriteMimeType
|
||||
hashes:
|
||||
- md5
|
||||
precision: 1
|
||||
25
docs/data/backends/ulozto.yaml
Normal file
25
docs/data/backends/ulozto.yaml
Normal file
@@ -0,0 +1,25 @@
|
||||
backend: ulozto
|
||||
name: Ulozto
|
||||
tier: Tier 3
|
||||
maintainers: Core
|
||||
features_score: 3
|
||||
integration_tests: Failing
|
||||
data_integrity: Hash
|
||||
performance: Medium
|
||||
adoption: Often used
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestUlozto:'
|
||||
features:
|
||||
- About
|
||||
- CanHaveEmptyDirectories
|
||||
- DirCacheFlush
|
||||
- DirMove
|
||||
- DuplicateFiles
|
||||
- Move
|
||||
- PutUnchecked
|
||||
hashes:
|
||||
- md5
|
||||
- sha256
|
||||
precision: 1000
|
||||
47
docs/data/backends/union.yaml
Normal file
47
docs/data/backends/union.yaml
Normal file
@@ -0,0 +1,47 @@
|
||||
backend: union
|
||||
name: Union
|
||||
tier: Tier 1
|
||||
maintainers: Core
|
||||
features_score: 7
|
||||
integration_tests: Passing
|
||||
data_integrity: Hash
|
||||
performance: High
|
||||
adoption: Often used
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: true
|
||||
remote: 'TestUnion:'
|
||||
features:
|
||||
- About
|
||||
- CanHaveEmptyDirectories
|
||||
- DirModTimeUpdatesOnWrite
|
||||
- DirMove
|
||||
- DirSetModTime
|
||||
- MkdirMetadata
|
||||
- Move
|
||||
- Overlay
|
||||
- PartialUploads
|
||||
- PutStream
|
||||
- ReadDirMetadata
|
||||
- ReadMetadata
|
||||
- SlowHash
|
||||
- UserDirMetadata
|
||||
- UserMetadata
|
||||
- WriteDirMetadata
|
||||
- WriteDirSetModTime
|
||||
- WriteMetadata
|
||||
hashes:
|
||||
- md5
|
||||
- sha1
|
||||
- whirlpool
|
||||
- crc32
|
||||
- sha256
|
||||
- sha512
|
||||
- blake3
|
||||
- xxh3
|
||||
- xxh128
|
||||
- dropbox
|
||||
- hidrive
|
||||
- mailru
|
||||
- quickxor
|
||||
precision: 1
|
||||
24
docs/data/backends/webdav.yaml
Normal file
24
docs/data/backends/webdav.yaml
Normal file
@@ -0,0 +1,24 @@
|
||||
backend: webdav
|
||||
name: WebDAV
|
||||
tier: Tier 1
|
||||
maintainers: Core
|
||||
features_score: 5
|
||||
integration_tests: Passing
|
||||
data_integrity: Hash
|
||||
performance: Low
|
||||
adoption: Widely used
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestWebdavNextcloud:'
|
||||
features:
|
||||
- About
|
||||
- CanHaveEmptyDirectories
|
||||
- Copy
|
||||
- DirMove
|
||||
- ListP
|
||||
- Move
|
||||
- Purge
|
||||
hashes:
|
||||
- sha1
|
||||
precision: 1000000000
|
||||
27
docs/data/backends/yandex.yaml
Normal file
27
docs/data/backends/yandex.yaml
Normal file
@@ -0,0 +1,27 @@
|
||||
backend: yandex
|
||||
name: Yandex
|
||||
tier: Tier 1
|
||||
maintainers: External
|
||||
features_score: 5
|
||||
integration_tests: Passing
|
||||
data_integrity: Hash
|
||||
performance: High
|
||||
adoption: Often used
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestYandex:'
|
||||
features:
|
||||
- About
|
||||
- CanHaveEmptyDirectories
|
||||
- CleanUp
|
||||
- Copy
|
||||
- DirMove
|
||||
- Move
|
||||
- PublicLink
|
||||
- Purge
|
||||
- PutStream
|
||||
- ReadMimeType
|
||||
hashes:
|
||||
- md5
|
||||
precision: 1
|
||||
23
docs/data/backends/zoho.yaml
Normal file
23
docs/data/backends/zoho.yaml
Normal file
@@ -0,0 +1,23 @@
|
||||
backend: zoho
|
||||
name: Zoho
|
||||
tier: Tier 3
|
||||
maintainers: External
|
||||
features_score: 2
|
||||
integration_tests: Failing
|
||||
data_integrity: Other
|
||||
performance: Medium
|
||||
adoption: Often used
|
||||
docs: Full
|
||||
security: High
|
||||
virtual: false
|
||||
remote: 'TestZoho:'
|
||||
features:
|
||||
- About
|
||||
- CanHaveEmptyDirectories
|
||||
- Copy
|
||||
- DirCacheFlush
|
||||
- DirMove
|
||||
- Move
|
||||
- Purge
|
||||
hashes: []
|
||||
precision: 3153600000000000000
|
||||
@@ -44,6 +44,11 @@
|
||||
<span class="badge badge-pill badge-danger float-right" style="margin-top: 30px; font-size: 100%" title="{{ $statusMessage }}">{{ $statusCode }}</span>
|
||||
{{ end }}
|
||||
|
||||
{{ if .Page.File }}
|
||||
{{ $backendName := .Page.File.TranslationBaseName }}
|
||||
{{ partial "tier.html" (dict "name" $backendName "align" true) }}
|
||||
{{ end }}
|
||||
|
||||
{{ block "main" . }}
|
||||
{{ end }}
|
||||
</div>
|
||||
|
||||
6
docs/layouts/partials/bool.html
Normal file
6
docs/layouts/partials/bool.html
Normal file
@@ -0,0 +1,6 @@
|
||||
{{ if . }}
|
||||
<span class="text-success">✔</span>
|
||||
{{ else }}
|
||||
<span class="text-danger">✖</span>
|
||||
{{ end }}
|
||||
|
||||
42
docs/layouts/partials/tier.html
Normal file
42
docs/layouts/partials/tier.html
Normal file
@@ -0,0 +1,42 @@
|
||||
{{/* Context: Accepts .tier (string) OR .name (string) for lookup. Optional: .align (bool) */}}
|
||||
|
||||
{{ $tierColors := dict
|
||||
"Tier 1" "success"
|
||||
"Tier 2" "success"
|
||||
"Tier 3" "warning"
|
||||
"Tier 4" "danger"
|
||||
"Tier 5" "danger"
|
||||
}}
|
||||
|
||||
{{ $tierMessages := dict
|
||||
"Tier 1" "Core: Production-grade, first-class"
|
||||
"Tier 2" "Stable: Well-supported, minor gaps"
|
||||
"Tier 3" "Supported: Works for many uses; known caveats"
|
||||
"Tier 4" "Experimental: Use with care; expect gaps/changes"
|
||||
"Tier 5" "Deprecated: No longer maintained or supported"
|
||||
}}
|
||||
|
||||
{{/* Determine the Tier Name */}}
|
||||
{{ $currentTier := "" }}
|
||||
|
||||
{{ if .tier }}
|
||||
{{/* Direct Tier Usage */}}
|
||||
{{ $currentTier = .tier }}
|
||||
{{ else if .name }}
|
||||
{{/* Backend Lookup Usage */}}
|
||||
{{ $backendName := .name | lower }}
|
||||
{{ $data := index site.Data.backends $backendName }}
|
||||
{{ if $data }}
|
||||
{{ $currentTier = $data.tier }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{/* Render Badge if a Tier was found */}}
|
||||
{{ if $currentTier }}
|
||||
{{ $color := index $tierColors $currentTier | default "secondary" }}
|
||||
{{ $message := index $tierMessages $currentTier | default "" }}
|
||||
|
||||
<a href="/tiers/" class="badge badge-pill badge-{{ $color }} {{ if .align }}float-right{{ end }}" style="{{ if .align }}margin-top: 30px; {{ end }}font-size: 100%" title="{{ $message }}">
|
||||
{{ $currentTier }}
|
||||
</a>
|
||||
{{ end }}
|
||||
120
docs/layouts/shortcodes/features-table.html
Normal file
120
docs/layouts/shortcodes/features-table.html
Normal file
@@ -0,0 +1,120 @@
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Tier</th>
|
||||
<th>Hash</th>
|
||||
<th>ModTime</th>
|
||||
<th>Case Insensitive</th>
|
||||
<th>Duplicate Files</th>
|
||||
<th>MIME Type</th>
|
||||
<th>Metadata</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{ range sort site.Data.backends "name" "asc" }}
|
||||
{{ if .virtual }}{{ continue }} {{ end }}
|
||||
<tr>
|
||||
<td style="font-weight: bold;">
|
||||
<a href="/{{ .backend | urlize }}">{{ .name }}</a>
|
||||
</td>
|
||||
|
||||
{{/* Tier Column */}}
|
||||
<td>
|
||||
{{ partial "tier.html" (dict "name" .backend "align" false) }}
|
||||
</td>
|
||||
|
||||
{{/* Hash Column */}}
|
||||
<td>
|
||||
{{ $local := in .features "IsLocal" }}
|
||||
{{ if $local }}
|
||||
<b>ALL</b>
|
||||
{{ else }}
|
||||
{{ with .hashes }}
|
||||
{{ delimit . ", " }}
|
||||
{{ else }}
|
||||
-
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</td>
|
||||
|
||||
{{/* ModTime */}}
|
||||
<td>
|
||||
{{ $d := or (in .features "MkdirMetadata") (in .features "DirSetModTime") }}
|
||||
{{ $r := true }} {{/* FIXME don't have a way of reading this from the features */}}
|
||||
{{ $w := and (isset . "precision") (le .precision 1000000000) }}
|
||||
{{- if $d -}}
|
||||
D
|
||||
{{- end -}}
|
||||
{{ if and $r $w -}}
|
||||
R/W
|
||||
{{- else if $r -}}
|
||||
R
|
||||
{{- else if $w -}}
|
||||
W
|
||||
{{- else -}}
|
||||
-
|
||||
{{- end -}}
|
||||
</td>
|
||||
|
||||
{{/* Case Insensitive */}}
|
||||
<td>
|
||||
{{ partial "bool.html" (in .features "CaseInsensitive") }}
|
||||
</td>
|
||||
|
||||
{{/* Duplicate Files */}}
|
||||
<td>
|
||||
{{ partial "bool.html" (in .features "DuplicateFiles") }}
|
||||
</td>
|
||||
|
||||
{{/* MIME Type Synthesis */}}
|
||||
<td>
|
||||
{{ $r := in .features "ReadMimeType" }}
|
||||
{{ $w := in .features "WriteMimeType" }}
|
||||
{{ if and $r $w }}
|
||||
R/W
|
||||
{{ else if $r }}
|
||||
R
|
||||
{{ else if $w }}
|
||||
W
|
||||
{{ else }}
|
||||
-
|
||||
{{ end }}
|
||||
</td>
|
||||
|
||||
{{/* Metadata Synthesis */}}
|
||||
<td>
|
||||
{{ $meta := "" }}
|
||||
|
||||
{{/* Check Directory Metadata Support */}}
|
||||
{{ if or (in .features "ReadDirMetadata") (in .features "WriteDirMetadata") }}
|
||||
{{ $meta = "D" }}
|
||||
{{ end }}
|
||||
|
||||
{{/* Check System Metadata Read */}}
|
||||
{{ if in .features "ReadMetadata" }}
|
||||
{{ $meta = print $meta "R" }}
|
||||
{{ end }}
|
||||
|
||||
{{/* Check System Metadata Write */}}
|
||||
{{ if in .features "WriteMetadata" }}
|
||||
{{ $meta = print $meta "W" }}
|
||||
{{ end }}
|
||||
|
||||
{{/* Check User Metadata Support */}}
|
||||
{{ if in .features "UserMetadata" }}
|
||||
{{ $meta = print $meta "U" }}
|
||||
{{ end }}
|
||||
|
||||
{{/* Output result or hyphen if empty */}}
|
||||
{{ if eq $meta "" }}
|
||||
-
|
||||
{{ else }}
|
||||
{{ $meta }}
|
||||
{{ end }}
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
{{ end }}
|
||||
</tbody>
|
||||
</table>
|
||||
40
docs/layouts/shortcodes/optional-features-table.html
Normal file
40
docs/layouts/shortcodes/optional-features-table.html
Normal file
@@ -0,0 +1,40 @@
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th align="left">Name</th>
|
||||
<th align="center">Purge</th>
|
||||
<th align="center">Copy</th>
|
||||
<th align="center">Move</th>
|
||||
<th align="center">DirMove</th>
|
||||
<th align="center">CleanUp</th>
|
||||
<th align="center">ListR</th>
|
||||
<th align="center">StreamUpload</th>
|
||||
<th align="left">MultithreadUpload</th>
|
||||
<th align="center">LinkSharing</th>
|
||||
<th align="center">About</th>
|
||||
<th align="center">EmptyDir</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{ range sort site.Data.backends "name" "asc" }}
|
||||
{{ if .virtual }}{{ continue }} {{ end }}
|
||||
<tr>
|
||||
<td align="left" style="font-weight: bold;">
|
||||
<a href="/{{ .backend | urlize }}">{{ .name }}</a>
|
||||
</td>
|
||||
|
||||
<td align="center">{{ partial "bool.html" (in .features "Purge") }}</td>
|
||||
<td align="center">{{ partial "bool.html" (in .features "Copy") }}</td>
|
||||
<td align="center">{{ partial "bool.html" (in .features "Move") }}</td>
|
||||
<td align="center">{{ partial "bool.html" (in .features "DirMove") }}</td>
|
||||
<td align="center">{{ partial "bool.html" (in .features "CleanUp") }}</td>
|
||||
<td align="center">{{ partial "bool.html" (in .features "ListR") }}</td>
|
||||
<td align="center">{{ partial "bool.html" (in .features "PutStream") }}</td>
|
||||
<td align="center">{{ partial "bool.html" (or (in .features "OpenChunkWriter") (in .features "OpenWriterAt")) }}</td>
|
||||
<td align="center">{{ partial "bool.html" (in .features "PublicLink") }}</td>
|
||||
<td align="center">{{ partial "bool.html" (in .features "About") }}</td>
|
||||
<td align="center">{{ partial "bool.html" (in .features "CanHaveEmptyDirectories") }}</td>
|
||||
</tr>
|
||||
{{ end }}
|
||||
</tbody>
|
||||
</table>
|
||||
1
docs/layouts/shortcodes/tier.html
Normal file
1
docs/layouts/shortcodes/tier.html
Normal file
@@ -0,0 +1 @@
|
||||
{{ partial "tier.html" (dict "tier" (.Get "tier") "name" (.Get "name") "align" (.Get "align")) }}
|
||||
41
docs/layouts/shortcodes/tiers-table.html
Normal file
41
docs/layouts/shortcodes/tiers-table.html
Normal file
@@ -0,0 +1,41 @@
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Backend</th>
|
||||
<th>Tier</th>
|
||||
<th>Maintainers</th>
|
||||
<th>Features</th>
|
||||
<th>Tests</th>
|
||||
<th>Integrity</th>
|
||||
<th>Perf</th>
|
||||
<th>Adoption</th>
|
||||
<th>Docs</th>
|
||||
<th>Security</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{ range $name, $data := site.Data.backends }}
|
||||
<tr>
|
||||
<td style="font-weight: bold;">
|
||||
<a href="/{{ $name | urlize }}">{{ $data.name }}</a>
|
||||
</td>
|
||||
<td>
|
||||
{{ partial "tier.html" (dict "name" $name "align" false) }}
|
||||
</td>
|
||||
<td>{{ $data.maintainers | default "-" }}</td>
|
||||
<td>{{ $data.features_score | string | default "-" }}</td>
|
||||
<td>
|
||||
<span class="{{ if eq $data.integration_tests "Passing" }}text-success{{ else }}text-danger{{ end }}">
|
||||
{{ if eq $data.integration_tests "Passing" }}✔{{ else }}✖{{ end }}
|
||||
</span>
|
||||
{{ $data.integration_tests | default "-" }}
|
||||
</td>
|
||||
<td>{{ $data.data_integrity | default "-" }}</td>
|
||||
<td>{{ $data.performance | default "-" }}</td>
|
||||
<td>{{ $data.adoption | default "-" }}</td>
|
||||
<td>{{ $data.docs | default "-" }}</td>
|
||||
<td>{{ $data.security | default "-" }}</td>
|
||||
</tr>
|
||||
{{ end }}
|
||||
</tbody>
|
||||
</table>
|
||||
@@ -90,14 +90,14 @@ func validateHour(HHMM string) error {
|
||||
return fmt.Errorf("invalid hour in time specification %q: %v", HHMM, err)
|
||||
}
|
||||
if hh < 0 || hh > 23 {
|
||||
return fmt.Errorf("invalid hour (must be between 00 and 23): %q", hh)
|
||||
return fmt.Errorf("invalid hour (must be between 00 and 23): %d", hh)
|
||||
}
|
||||
mm, err := strconv.Atoi(HHMM[3:])
|
||||
if err != nil {
|
||||
return fmt.Errorf("invalid minute in time specification: %q: %v", HHMM, err)
|
||||
}
|
||||
if mm < 0 || mm > 59 {
|
||||
return fmt.Errorf("invalid minute (must be between 00 and 59): %q", hh)
|
||||
return fmt.Errorf("invalid minute (must be between 00 and 59): %d", mm)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
6
go.mod
6
go.mod
@@ -44,8 +44,6 @@ require (
|
||||
github.com/go-git/go-billy/v5 v5.6.2
|
||||
github.com/google/uuid v1.6.0
|
||||
github.com/hanwen/go-fuse/v2 v2.9.0
|
||||
github.com/henrybear327/Proton-API-Bridge v1.0.0
|
||||
github.com/henrybear327/go-proton-api v1.0.0
|
||||
github.com/jcmturner/gokrb5/v8 v8.4.4
|
||||
github.com/jlaffaye/ftp v0.2.1-0.20240918233326-1b970516f5d3
|
||||
github.com/josephspurrier/goversioninfo v1.5.0
|
||||
@@ -69,6 +67,8 @@ require (
|
||||
github.com/prometheus/client_golang v1.23.2
|
||||
github.com/putdotio/go-putio/putio v0.0.0-20200123120452-16d982cac2b8
|
||||
github.com/quasilyte/go-ruleguard/dsl v0.3.23
|
||||
github.com/rclone/Proton-API-Bridge v1.0.1-0.20260127174007-77f974840d11
|
||||
github.com/rclone/go-proton-api v1.0.1-0.20260127173028-eb465cac3b18
|
||||
github.com/rclone/gofakes3 v0.0.4
|
||||
github.com/rfjakob/eme v1.1.2
|
||||
github.com/rivo/uniseg v0.4.7
|
||||
@@ -81,7 +81,7 @@ require (
|
||||
github.com/t3rm1n4l/go-mega v0.0.0-20251031123324-a804aaa87491
|
||||
github.com/unknwon/goconfig v1.0.0
|
||||
github.com/willscott/go-nfs v0.0.3
|
||||
github.com/winfsp/cgofuse v1.6.1-0.20250813110601-7d90b0992471
|
||||
github.com/winfsp/cgofuse v1.6.1-0.20260126094232-f2c4fccdb286
|
||||
github.com/wk8/go-ordered-map/v2 v2.1.8
|
||||
github.com/xanzy/ssh-agent v0.3.3
|
||||
github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78
|
||||
|
||||
10
go.sum
10
go.sum
@@ -420,10 +420,6 @@ github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ
|
||||
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
||||
github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k=
|
||||
github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM=
|
||||
github.com/henrybear327/Proton-API-Bridge v1.0.0 h1:gjKAaWfKu++77WsZTHg6FUyPC5W0LTKWQciUm8PMZb0=
|
||||
github.com/henrybear327/Proton-API-Bridge v1.0.0/go.mod h1:gunH16hf6U74W2b9CGDaWRadiLICsoJ6KRkSt53zLts=
|
||||
github.com/henrybear327/go-proton-api v1.0.0 h1:zYi/IbjLwFAW7ltCeqXneUGJey0TN//Xo851a/BgLXw=
|
||||
github.com/henrybear327/go-proton-api v1.0.0/go.mod h1:w63MZuzufKcIZ93pwRgiOtxMXYafI8H74D77AxytOBc=
|
||||
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
|
||||
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
|
||||
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
|
||||
@@ -590,6 +586,10 @@ github.com/quic-go/quic-go v0.53.0 h1:QHX46sISpG2S03dPeZBgVIZp8dGagIaiu2FiVYvpCZ
|
||||
github.com/quic-go/quic-go v0.53.0/go.mod h1:e68ZEaCdyviluZmy44P6Iey98v/Wfz6HCjQEm+l8zTY=
|
||||
github.com/rasky/go-xdr v0.0.0-20170124162913-1a41d1a06c93 h1:UVArwN/wkKjMVhh2EQGC0tEc1+FqiLlvYXY5mQ2f8Wg=
|
||||
github.com/rasky/go-xdr v0.0.0-20170124162913-1a41d1a06c93/go.mod h1:Nfe4efndBz4TibWycNE+lqyJZiMX4ycx+QKV8Ta0f/o=
|
||||
github.com/rclone/Proton-API-Bridge v1.0.1-0.20260127174007-77f974840d11 h1:4MI2alxM/Ye2gIRBlYf28JGWTipZ4Zz7yAziPKrttjs=
|
||||
github.com/rclone/Proton-API-Bridge v1.0.1-0.20260127174007-77f974840d11/go.mod h1:3HLX7dwZgvB7nt+Yl/xdzVPcargQ1yBmJEUg3n+jMKM=
|
||||
github.com/rclone/go-proton-api v1.0.1-0.20260127173028-eb465cac3b18 h1:Lc+d3ISfQaMJKWZOE7z4ZSY4RVmdzbn1B0IM8xN18qM=
|
||||
github.com/rclone/go-proton-api v1.0.1-0.20260127173028-eb465cac3b18/go.mod h1:LB2kCEaZMzNn3ocdz+qYfxXmuLxxN0ka62KJd2x53Bc=
|
||||
github.com/rclone/gofakes3 v0.0.4 h1:LswpC49VY/UJ1zucoL5ktnOEX6lq3qK7e1aFIAfqCbk=
|
||||
github.com/rclone/gofakes3 v0.0.4/go.mod h1:j/UoS+2/Mr7xAlfKhyVC58YyFQmh9uoQA5YZQXQUqmg=
|
||||
github.com/relvacode/iso8601 v1.7.0 h1:BXy+V60stMP6cpswc+a93Mq3e65PfXCgDFfhvNNGrdo=
|
||||
@@ -683,6 +683,8 @@ github.com/willscott/go-nfs-client v0.0.0-20251022144359-801f10d98886 h1:DtrBtkg
|
||||
github.com/willscott/go-nfs-client v0.0.0-20251022144359-801f10d98886/go.mod h1:Tq++Lr/FgiS3X48q5FETemXiSLGuYMQT2sPjYNPJSwA=
|
||||
github.com/winfsp/cgofuse v1.6.1-0.20250813110601-7d90b0992471 h1:aSOo0k+aLWdhUQiUxzv4cZ7cUp3OLP+Qx7cjs6OUxME=
|
||||
github.com/winfsp/cgofuse v1.6.1-0.20250813110601-7d90b0992471/go.mod h1:uxjoF2jEYT3+x+vC2KJddEGdk/LU8pRowXmyVMHSV5I=
|
||||
github.com/winfsp/cgofuse v1.6.1-0.20260126094232-f2c4fccdb286 h1:tw5GqRXqExB/xghPoPLtVujBe9w9Pg1G78tvXCJNJAA=
|
||||
github.com/winfsp/cgofuse v1.6.1-0.20260126094232-f2c4fccdb286/go.mod h1:uxjoF2jEYT3+x+vC2KJddEGdk/LU8pRowXmyVMHSV5I=
|
||||
github.com/wk8/go-ordered-map/v2 v2.1.8 h1:5h/BUHu93oj4gIdvHHHGsScSTMijfx5PeYkE/fJgbpc=
|
||||
github.com/wk8/go-ordered-map/v2 v2.1.8/go.mod h1:5nJHM5DyteebpVlHnWMV0rPz6Zp7+xBAnxjb1X5vnTw=
|
||||
github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM=
|
||||
|
||||
Reference in New Issue
Block a user