mirror of
https://github.com/rclone/rclone.git
synced 2024-11-24 07:06:50 +08:00
s3: add Selectel as a provider
This commit is contained in:
parent
8b4b59412d
commit
53ff3b3b32
|
@ -111,6 +111,7 @@ Rclone *("rsync for cloud storage")* is a command-line program to sync files and
|
||||||
* Scaleway [:page_facing_up:](https://rclone.org/s3/#scaleway)
|
* Scaleway [:page_facing_up:](https://rclone.org/s3/#scaleway)
|
||||||
* Seafile [:page_facing_up:](https://rclone.org/seafile/)
|
* Seafile [:page_facing_up:](https://rclone.org/seafile/)
|
||||||
* SeaweedFS [:page_facing_up:](https://rclone.org/s3/#seaweedfs)
|
* SeaweedFS [:page_facing_up:](https://rclone.org/s3/#seaweedfs)
|
||||||
|
* Selectel Object Storage [:page_facing_up:](https://rclone.org/s3/#selectel)
|
||||||
* SFTP [:page_facing_up:](https://rclone.org/sftp/)
|
* SFTP [:page_facing_up:](https://rclone.org/sftp/)
|
||||||
* SMB / CIFS [:page_facing_up:](https://rclone.org/smb/)
|
* SMB / CIFS [:page_facing_up:](https://rclone.org/smb/)
|
||||||
* StackPath [:page_facing_up:](https://rclone.org/s3/#stackpath)
|
* StackPath [:page_facing_up:](https://rclone.org/s3/#stackpath)
|
||||||
|
|
|
@ -154,6 +154,9 @@ var providerOption = fs.Option{
|
||||||
}, {
|
}, {
|
||||||
Value: "SeaweedFS",
|
Value: "SeaweedFS",
|
||||||
Help: "SeaweedFS S3",
|
Help: "SeaweedFS S3",
|
||||||
|
}, {
|
||||||
|
Value: "Selectel",
|
||||||
|
Help: "Selectel Object Storage",
|
||||||
}, {
|
}, {
|
||||||
Value: "StackPath",
|
Value: "StackPath",
|
||||||
Help: "StackPath Object Storage",
|
Help: "StackPath Object Storage",
|
||||||
|
@ -551,10 +554,19 @@ func init() {
|
||||||
Value: "tw-001",
|
Value: "tw-001",
|
||||||
Help: "Asia (Taiwan)",
|
Help: "Asia (Taiwan)",
|
||||||
}},
|
}},
|
||||||
|
}, {
|
||||||
|
// See endpoints for object storage regions: https://docs.selectel.ru/en/cloud/object-storage/manage/domains/#s3-api-domains
|
||||||
|
Name: "region",
|
||||||
|
Help: "Region where your data stored.\n",
|
||||||
|
Provider: "Selectel",
|
||||||
|
Examples: []fs.OptionExample{{
|
||||||
|
Value: "ru-1",
|
||||||
|
Help: "St. Petersburg",
|
||||||
|
}},
|
||||||
}, {
|
}, {
|
||||||
Name: "region",
|
Name: "region",
|
||||||
Help: "Region to connect to.\n\nLeave blank if you are using an S3 clone and you don't have a region.",
|
Help: "Region to connect to.\n\nLeave blank if you are using an S3 clone and you don't have a region.",
|
||||||
Provider: "!AWS,Alibaba,ArvanCloud,ChinaMobile,Cloudflare,IONOS,Petabox,Liara,Linode,Magalu,Qiniu,RackCorp,Scaleway,Storj,Synology,TencentCOS,HuaweiOBS,IDrive",
|
Provider: "!AWS,Alibaba,ArvanCloud,ChinaMobile,Cloudflare,IONOS,Petabox,Liara,Linode,Magalu,Qiniu,RackCorp,Scaleway,Selectel,Storj,Synology,TencentCOS,HuaweiOBS,IDrive",
|
||||||
Examples: []fs.OptionExample{{
|
Examples: []fs.OptionExample{{
|
||||||
Value: "",
|
Value: "",
|
||||||
Help: "Use this if unsure.\nWill use v4 signatures and an empty region.",
|
Help: "Use this if unsure.\nWill use v4 signatures and an empty region.",
|
||||||
|
@ -1319,10 +1331,19 @@ func init() {
|
||||||
Value: "s3-ap-northeast-1.qiniucs.com",
|
Value: "s3-ap-northeast-1.qiniucs.com",
|
||||||
Help: "Northeast Asia Endpoint 1",
|
Help: "Northeast Asia Endpoint 1",
|
||||||
}},
|
}},
|
||||||
|
}, {
|
||||||
|
// Selectel endpoints: https://docs.selectel.ru/en/cloud/object-storage/manage/domains/#s3-api-domains
|
||||||
|
Name: "endpoint",
|
||||||
|
Help: "Endpoint for Selectel Object Storage.",
|
||||||
|
Provider: "Selectel",
|
||||||
|
Examples: []fs.OptionExample{{
|
||||||
|
Value: "s3.ru-1.storage.selcloud.ru",
|
||||||
|
Help: "Saint Petersburg",
|
||||||
|
}},
|
||||||
}, {
|
}, {
|
||||||
Name: "endpoint",
|
Name: "endpoint",
|
||||||
Help: "Endpoint for S3 API.\n\nRequired when using an S3 clone.",
|
Help: "Endpoint for S3 API.\n\nRequired when using an S3 clone.",
|
||||||
Provider: "!AWS,ArvanCloud,IBMCOS,IDrive,IONOS,TencentCOS,HuaweiOBS,Alibaba,ChinaMobile,GCS,Liara,Linode,MagaluCloud,Scaleway,StackPath,Storj,Synology,RackCorp,Qiniu,Petabox",
|
Provider: "!AWS,ArvanCloud,IBMCOS,IDrive,IONOS,TencentCOS,HuaweiOBS,Alibaba,ChinaMobile,GCS,Liara,Linode,MagaluCloud,Scaleway,Selectel,StackPath,Storj,Synology,RackCorp,Qiniu,Petabox",
|
||||||
Examples: []fs.OptionExample{{
|
Examples: []fs.OptionExample{{
|
||||||
Value: "objects-us-east-1.dream.io",
|
Value: "objects-us-east-1.dream.io",
|
||||||
Help: "Dream Objects endpoint",
|
Help: "Dream Objects endpoint",
|
||||||
|
@ -1845,7 +1866,7 @@ func init() {
|
||||||
}, {
|
}, {
|
||||||
Name: "location_constraint",
|
Name: "location_constraint",
|
||||||
Help: "Location constraint - must be set to match the Region.\n\nLeave blank if not sure. Used when creating buckets only.",
|
Help: "Location constraint - must be set to match the Region.\n\nLeave blank if not sure. Used when creating buckets only.",
|
||||||
Provider: "!AWS,Alibaba,ArvanCloud,HuaweiOBS,ChinaMobile,Cloudflare,IBMCOS,IDrive,IONOS,Leviia,Liara,Linode,Magalu,Outscale,Qiniu,RackCorp,Scaleway,StackPath,Storj,TencentCOS,Petabox",
|
Provider: "!AWS,Alibaba,ArvanCloud,HuaweiOBS,ChinaMobile,Cloudflare,IBMCOS,IDrive,IONOS,Leviia,Liara,Linode,Magalu,Outscale,Qiniu,RackCorp,Scaleway,Selectel,StackPath,Storj,TencentCOS,Petabox",
|
||||||
}, {
|
}, {
|
||||||
Name: "acl",
|
Name: "acl",
|
||||||
Help: `Canned ACL used when creating buckets and storing or copying objects.
|
Help: `Canned ACL used when creating buckets and storing or copying objects.
|
||||||
|
@ -1860,7 +1881,7 @@ doesn't copy the ACL from the source but rather writes a fresh one.
|
||||||
If the acl is an empty string then no X-Amz-Acl: header is added and
|
If the acl is an empty string then no X-Amz-Acl: header is added and
|
||||||
the default (private) will be used.
|
the default (private) will be used.
|
||||||
`,
|
`,
|
||||||
Provider: "!Storj,Synology,Cloudflare",
|
Provider: "!Storj,Selectel,Synology,Cloudflare",
|
||||||
Examples: []fs.OptionExample{{
|
Examples: []fs.OptionExample{{
|
||||||
Value: "default",
|
Value: "default",
|
||||||
Help: "Owner gets Full_CONTROL.\nNo one else has access rights (default).",
|
Help: "Owner gets Full_CONTROL.\nNo one else has access rights (default).",
|
||||||
|
@ -3430,6 +3451,8 @@ func setQuirks(opt *Options) {
|
||||||
}
|
}
|
||||||
urlEncodeListings = true
|
urlEncodeListings = true
|
||||||
useAlreadyExists = true
|
useAlreadyExists = true
|
||||||
|
case "Selectel":
|
||||||
|
urlEncodeListings = false
|
||||||
case "SeaweedFS":
|
case "SeaweedFS":
|
||||||
listObjectsV2 = false // untested
|
listObjectsV2 = false // untested
|
||||||
virtualHostStyle = false
|
virtualHostStyle = false
|
||||||
|
|
|
@ -178,6 +178,7 @@ WebDAV or S3, that work out of the box.)
|
||||||
{{< provider name="Seafile" home="https://www.seafile.com/" config="/seafile/" >}}
|
{{< provider name="Seafile" home="https://www.seafile.com/" config="/seafile/" >}}
|
||||||
{{< provider name="Seagate Lyve Cloud" home="https://www.seagate.com/gb/en/services/cloud/storage/" config="/s3/#lyve" >}}
|
{{< provider name="Seagate Lyve Cloud" home="https://www.seagate.com/gb/en/services/cloud/storage/" config="/s3/#lyve" >}}
|
||||||
{{< provider name="SeaweedFS" home="https://github.com/chrislusf/seaweedfs/" config="/s3/#seaweedfs" >}}
|
{{< provider name="SeaweedFS" home="https://github.com/chrislusf/seaweedfs/" config="/s3/#seaweedfs" >}}
|
||||||
|
{{< provider name="Selectel" home="https://selectel.ru/services/cloud/storage/" config="/s3/#selectel" >}}
|
||||||
{{< provider name="SFTP" home="https://en.wikipedia.org/wiki/SSH_File_Transfer_Protocol" config="/sftp/" >}}
|
{{< provider name="SFTP" home="https://en.wikipedia.org/wiki/SSH_File_Transfer_Protocol" config="/sftp/" >}}
|
||||||
{{< provider name="Sia" home="https://sia.tech/" config="/sia/" >}}
|
{{< provider name="Sia" home="https://sia.tech/" config="/sia/" >}}
|
||||||
{{< provider name="SMB / CIFS" home="https://en.wikipedia.org/wiki/Server_Message_Block" config="/smb/" >}}
|
{{< provider name="SMB / CIFS" home="https://en.wikipedia.org/wiki/Server_Message_Block" config="/smb/" >}}
|
||||||
|
|
|
@ -35,6 +35,7 @@ The S3 backend can be used with a number of different providers:
|
||||||
{{< provider name="Scaleway" home="https://www.scaleway.com/en/object-storage/" config="/s3/#scaleway" >}}
|
{{< provider name="Scaleway" home="https://www.scaleway.com/en/object-storage/" config="/s3/#scaleway" >}}
|
||||||
{{< provider name="Seagate Lyve Cloud" home="https://www.seagate.com/gb/en/services/cloud/storage/" config="/s3/#lyve" >}}
|
{{< provider name="Seagate Lyve Cloud" home="https://www.seagate.com/gb/en/services/cloud/storage/" config="/s3/#lyve" >}}
|
||||||
{{< provider name="SeaweedFS" home="https://github.com/chrislusf/seaweedfs/" config="/s3/#seaweedfs" >}}
|
{{< provider name="SeaweedFS" home="https://github.com/chrislusf/seaweedfs/" config="/s3/#seaweedfs" >}}
|
||||||
|
{{< provider name="Selectel" home="https://selectel.ru/services/cloud/storage/" config="/s3/#selectel" >}}
|
||||||
{{< provider name="StackPath" home="https://www.stackpath.com/products/object-storage/" config="/s3/#stackpath" >}}
|
{{< provider name="StackPath" home="https://www.stackpath.com/products/object-storage/" config="/s3/#stackpath" >}}
|
||||||
{{< provider name="Storj" home="https://storj.io/" config="/s3/#storj" >}}
|
{{< provider name="Storj" home="https://storj.io/" config="/s3/#storj" >}}
|
||||||
{{< provider name="Synology C2 Object Storage" home="https://c2.synology.com/en-global/object-storage/overview" config="/s3/#synology-c2" >}}
|
{{< provider name="Synology C2 Object Storage" home="https://c2.synology.com/en-global/object-storage/overview" config="/s3/#synology-c2" >}}
|
||||||
|
@ -3850,6 +3851,125 @@ So once set up, for example to copy files into a bucket
|
||||||
rclone copy /path/to/files seaweedfs_s3:foo
|
rclone copy /path/to/files seaweedfs_s3:foo
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Selectel
|
||||||
|
|
||||||
|
[Selectel Cloud Storage](https://selectel.ru/services/cloud/storage/)
|
||||||
|
is an S3 compatible storage system which features triple redundancy
|
||||||
|
storage, automatic scaling, high availability and a comprehensive IAM
|
||||||
|
system.
|
||||||
|
|
||||||
|
Selectel have a section on their website for [configuring
|
||||||
|
rclone](https://docs.selectel.ru/en/cloud/object-storage/tools/rclone/)
|
||||||
|
which shows how to make the right API keys.
|
||||||
|
|
||||||
|
From rclone v1.69 Selectel is a supported operator - please choose the
|
||||||
|
`Selectel` provider type.
|
||||||
|
|
||||||
|
Note that you should use "vHosted" access for the buckets (which is
|
||||||
|
the recommended default), not "path style".
|
||||||
|
|
||||||
|
You can use `rclone config` to make a new provider like this
|
||||||
|
|
||||||
|
```
|
||||||
|
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> selectel
|
||||||
|
|
||||||
|
Option Storage.
|
||||||
|
Type of storage to configure.
|
||||||
|
Choose a number from below, or type in your own value.
|
||||||
|
[snip]
|
||||||
|
XX / Amazon S3 Compliant Storage Providers including ..., Selectel, ...
|
||||||
|
\ (s3)
|
||||||
|
[snip]
|
||||||
|
Storage> s3
|
||||||
|
|
||||||
|
Option provider.
|
||||||
|
Choose your S3 provider.
|
||||||
|
Choose a number from below, or type in your own value.
|
||||||
|
Press Enter to leave empty.
|
||||||
|
[snip]
|
||||||
|
XX / Selectel Object Storage
|
||||||
|
\ (Selectel)
|
||||||
|
[snip]
|
||||||
|
provider> Selectel
|
||||||
|
|
||||||
|
Option env_auth.
|
||||||
|
Get AWS credentials from runtime (environment variables or EC2/ECS meta data if no env vars).
|
||||||
|
Only applies if access_key_id and secret_access_key is blank.
|
||||||
|
Choose a number from below, or type in your own boolean value (true or false).
|
||||||
|
Press Enter for the default (false).
|
||||||
|
1 / Enter AWS credentials in the next step.
|
||||||
|
\ (false)
|
||||||
|
2 / Get AWS credentials from the environment (env vars or IAM).
|
||||||
|
\ (true)
|
||||||
|
env_auth> 1
|
||||||
|
|
||||||
|
Option access_key_id.
|
||||||
|
AWS Access Key ID.
|
||||||
|
Leave blank for anonymous access or runtime credentials.
|
||||||
|
Enter a value. Press Enter to leave empty.
|
||||||
|
access_key_id> ACCESS_KEY
|
||||||
|
|
||||||
|
Option secret_access_key.
|
||||||
|
AWS Secret Access Key (password).
|
||||||
|
Leave blank for anonymous access or runtime credentials.
|
||||||
|
Enter a value. Press Enter to leave empty.
|
||||||
|
secret_access_key> SECRET_ACCESS_KEY
|
||||||
|
|
||||||
|
Option region.
|
||||||
|
Region where your data stored.
|
||||||
|
Choose a number from below, or type in your own value.
|
||||||
|
Press Enter to leave empty.
|
||||||
|
1 / St. Petersburg
|
||||||
|
\ (ru-1)
|
||||||
|
region> 1
|
||||||
|
|
||||||
|
Option endpoint.
|
||||||
|
Endpoint for Selectel Object Storage.
|
||||||
|
Choose a number from below, or type in your own value.
|
||||||
|
Press Enter to leave empty.
|
||||||
|
1 / Saint Petersburg
|
||||||
|
\ (s3.ru-1.storage.selcloud.ru)
|
||||||
|
endpoint> 1
|
||||||
|
|
||||||
|
Edit advanced config?
|
||||||
|
y) Yes
|
||||||
|
n) No (default)
|
||||||
|
y/n> n
|
||||||
|
|
||||||
|
Configuration complete.
|
||||||
|
Options:
|
||||||
|
- type: s3
|
||||||
|
- provider: Selectel
|
||||||
|
- access_key_id: ACCESS_KEY
|
||||||
|
- secret_access_key: SECRET_ACCESS_KEY
|
||||||
|
- region: ru-1
|
||||||
|
- endpoint: s3.ru-1.storage.selcloud.ru
|
||||||
|
Keep this "selectel" remote?
|
||||||
|
y) Yes this is OK (default)
|
||||||
|
e) Edit this remote
|
||||||
|
d) Delete this remote
|
||||||
|
y/e/d> y
|
||||||
|
```
|
||||||
|
|
||||||
|
And your config should end up looking like this:
|
||||||
|
|
||||||
|
```
|
||||||
|
[selectel]
|
||||||
|
type = s3
|
||||||
|
provider = Selectel
|
||||||
|
access_key_id = ACCESS_KEY
|
||||||
|
secret_access_key = SECRET_ACCESS_KEY
|
||||||
|
region = ru-1
|
||||||
|
endpoint = s3.ru-1.storage.selcloud.ru
|
||||||
|
```
|
||||||
|
|
||||||
### Wasabi
|
### Wasabi
|
||||||
|
|
||||||
[Wasabi](https://wasabi.com) is a cloud-based object storage service for a
|
[Wasabi](https://wasabi.com) is a cloud-based object storage service for a
|
||||||
|
|
Loading…
Reference in New Issue
Block a user