Add a new backend for dosya.dev, a cloud file storage, sharing, and synchronization platform with workspace-based multi-tenancy. Features: - Server-side copy, move, rename (files and directories) - Purge (recursive directory delete) - Recursive listing (ListR) for --fast-list - Multipart upload for large files (>10MB) - Public link sharing via rclone link - About (workspace storage quota) - MIME type detection - Empty directory support - Workspace-based multi-tenancy (one remote per workspace) - Download via presigned R2 URLs with Range header support Co-authored-by: firatkaya <firat@netiket.com.tr>
7.7 KiB
title, description, versionIntroduced
| title | description | versionIntroduced |
|---|---|---|
| dosya.dev | Rclone docs for dosya.dev | v1.76 |
dosya.dev
dosya.dev is a cloud file storage, sharing, and synchronization platform with workspace-based multi-tenancy, file versioning, and team collaboration features.
Configuration
Here is an example of how to make a remote called remote. First run:
rclone config
This will guide you through an interactive setup process:
No remotes found, make a new one?
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n
Enter name for new remote.
name> remote
Option Storage.
Type of storage to configure.
Choose a number from below, or type in your own value.
XX / dosya.dev
\ (dosya)
Storage> dosya
Option api_key.
Your API Key, get it from https://dosya.dev/profile under "API keys".
Enter a value.
api_key> dos_YOURAPIKEY
Option workspace_id.
Your workspace ID.
Leave this blank to use the one workspace the API key can reach, which
is what a key restricted to a single workspace does. If the key can
reach several, rclone will refuse and list their IDs for you to choose
from.
Enter a value. Press Enter to leave empty.
workspace_id>
Edit advanced config?
y) Yes
n) No (default)
y/n> n
Configuration complete.
Options:
- type: dosya
- api_key: dos_YOURAPIKEY
Keep this "remote" remote?
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> y
Once configured you can then use rclone like this (replace remote
with the name you gave your remote):
List directories and files in the top level of your dosya workspace
rclone lsf remote:
To copy a local directory to a dosya directory called backup
rclone copy /home/source remote:backup
The dosya backend uploads large files in parts and stores them as single files that remain accessible through the web app and other clients. If you previously used a WebDAV remote with a chunker overlay for large uploads, you can use this backend without the overlay.
Getting your API key
A key can be restricted to a single workspace when you create it, which
is the simplest thing to do for rclone: workspace_id can then be left
out of the config entirely.
Workspaces
Leave workspace_id blank and rclone asks which workspaces the key can
reach. A key restricted to one workspace, and an account that has only
one, both resolve without any configuration. If the key can reach
several, rclone refuses and lists their IDs so you can set the one you
want:
this API key can reach 2 workspaces, so workspace_id must be set to one of:
ws_AAAAAAAA (Work)
ws_BBBBBBBB (Personal)
To access several workspaces at once, create a separate remote for each:
rclone config create work dosya api_key=dos_XXX workspace_id=ws_WORK
rclone config create personal dosya api_key=dos_XXX workspace_id=ws_PERSONAL
Then use them independently:
rclone ls work:
rclone copy work:docs/ personal:backup/
Modification times and hashes
dosya.dev supports modification times with a resolution of 1 second. The modification time is sent with the upload, so a copied or synced file keeps its original timestamp. Modification times cannot be changed after upload without re-uploading the file.
dosya.dev supports SHA-256 checksums. The server computes the hash of a
single-shot (small file) upload from the bytes it receives, so rclone check
and hash-based sync work without downloading. Large files uploaded in multiple
parts have no server-side hash (the parts are never re-read to hash the whole
object), the same limitation the S3 backend has for multipart objects; those
objects report an empty hash.
Restricted filename characters
In addition to the default restricted characters set the following characters are also replaced:
| Character | Value | Replacement |
|---|---|---|
| " | 0x22 | " |
| ' | 0x27 | ' |
| < | 0x3C | < |
| > | 0x3E | > |
| \ | 0x5C | \ |
Invalid UTF-8 bytes will also be replaced, as they can't be used in JSON strings.
Public Links
dosya.dev supports rclone link to create public share links to
files. You can use the --expire flag to specify how long the link
should be valid.
rclone link remote:path/to/file.txt
rclone link --expire 7d remote:path/to/file.txt
Standard options
Here are the Standard options specific to dosya (dosya.dev).
--dosya-api-key
Your API Key, get it from https://dosya.dev/profile under "API keys".
Properties:
- Config: api_key
- Env Var: RCLONE_DOSYA_API_KEY
- Type: string
- Required: true
--dosya-workspace-id
Your workspace ID.
Leave this blank to use the one workspace the API key can reach, which is what a key restricted to a single workspace does. If the key can reach several, rclone will refuse and list their IDs for you to choose from.
Properties:
- Config: workspace_id
- Env Var: RCLONE_DOSYA_WORKSPACE_ID
- Type: string
- Required: false
Advanced options
Here are the Advanced options specific to dosya (dosya.dev).
--dosya-api-url
API base URL.
Properties:
- Config: api_url
- Env Var: RCLONE_DOSYA_API_URL
- Type: string
- Default: "https://api.dosya.dev"
--dosya-upload-concurrency
Concurrency for multipart uploads.
This is the number of parts of the same file that are uploaded concurrently. The first part is always uploaded on its own, because the server creates the upload when it receives it.
Each part in flight is held in memory, so memory use grows with this value times the part size the server chooses.
If you are uploading large files over high-speed links and these uploads do not fully utilize your bandwidth, then increasing this may help to speed up the transfers.
Properties:
- Config: upload_concurrency
- Env Var: RCLONE_DOSYA_UPLOAD_CONCURRENCY
- Type: int
- Default: 4
--dosya-encoding
The encoding for the backend.
See the encoding section in the overview for more info.
Properties:
- Config: encoding
- Env Var: RCLONE_DOSYA_ENCODING
- Type: Encoding
- Default: Slash,LtGt,DoubleQuote,SingleQuote,BackSlash,Del,Ctl,LeftSpace,RightSpace,InvalidUtf8,Dot
--dosya-description
Description of the remote.
Properties:
- Config: description
- Env Var: RCLONE_DOSYA_DESCRIPTION
- Type: string
- Required: false
Limitations
dosya.dev only supports filenames up to 255 characters in length.
Empty files (0 bytes) cannot be uploaded to dosya.dev.
Upload requires knowing the file size in advance, so streaming uploads of unknown-size files are not supported.
Each workspace limits the number of uploads a user can have in flight
at once (5 by default, configurable in the workspace settings). When
--transfers is set higher than that limit, rclone waits for a free
upload slot rather than failing the transfer, retrying every 5 seconds
for up to 10 minutes.
Deleting files and directories
rclone deletes files and directories permanently, in a single request
(DELETE ?permanent=1), bypassing the workspace trash. Removing a
directory also asks the server whether it is empty (?if_empty=1)
rather than listing it first.