diff --git a/README.md b/README.md index 7af251973..685168061 100644 --- a/README.md +++ b/README.md @@ -106,6 +106,7 @@ directories to and from different cloud storage providers. - Seagate Lyve Cloud [:page_facing_up:](https://rclone.org/s3/#lyve) - SeaweedFS [:page_facing_up:](https://rclone.org/s3/#seaweedfs) - Selectel Object Storage [:page_facing_up:](https://rclone.org/s3/#selectel) +- Servercore Object Storage [:page_facing_up:](https://rclone.org/s3/#servercore) - SFTP [:page_facing_up:](https://rclone.org/sftp/) - SMB / CIFS [:page_facing_up:](https://rclone.org/smb/) - Spectra Logic [:page_facing_up:](https://rclone.org/s3/#spectralogic) diff --git a/backend/s3/s3.go b/backend/s3/s3.go index 7d461b126..742d77637 100644 --- a/backend/s3/s3.go +++ b/backend/s3/s3.go @@ -182,6 +182,9 @@ var providerOption = fs.Option{ }, { Value: "Selectel", Help: "Selectel Object Storage", + }, { + Value: "Servercore", + Help: "Servercore Object Storage", }, { Value: "SpectraLogic", Help: "Spectra Logic Black Pearl", @@ -683,6 +686,26 @@ func init() { Value: "ru-1", Help: "St. Petersburg", }}, + }, { + Name: "region", + Help: "Region where your is data stored.\n", + Provider: "Servercore", + Examples: []fs.OptionExample{{ + Value: "ru-1", + Help: "St. Petersburg", + }, { + Value: "gis-1", + Help: "Moscow", + }, { + Value: "ru-7", + Help: "Moscow", + }, { + Value: "uz-2", + Help: "Tashkent, Uzbekistan", + }, { + Value: "kz-1", + Help: "Almaty, Kazakhstan", + }}, }, { Name: "region", Help: "Region where your data stored.\n", @@ -714,7 +737,7 @@ func init() { }, { Name: "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,FlashBlade,FileLu,Hetzner,HuaweiOBS,IDrive,Intercolo,IONOS,Liara,Linode,Magalu,Mega,OVHcloud,Petabox,Qiniu,Rabata,RackCorp,Scaleway,Selectel,SpectraLogic,Storj,Synology,TencentCOS,Zata", + Provider: "!AWS,Alibaba,ArvanCloud,ChinaMobile,Cloudflare,FlashBlade,FileLu,Hetzner,HuaweiOBS,IDrive,Intercolo,IONOS,Liara,Linode,Magalu,Mega,OVHcloud,Petabox,Qiniu,Rabata,RackCorp,Scaleway,Selectel,Servercore,SpectraLogic,Storj,Synology,TencentCOS,Zata", Examples: []fs.OptionExample{{ Value: "", Help: "Use this if unsure.\nWill use v4 signatures and an empty region.", @@ -1517,6 +1540,26 @@ func init() { Value: "s3.ru-1.storage.selcloud.ru", Help: "Saint Petersburg", }}, + }, { + Name: "endpoint", + Help: "Endpoint for Servercore Object Storage.", + Provider: "Servercore", + Examples: []fs.OptionExample{{ + Value: "s3.ru-1.storage.selcloud.ru", + Help: "Saint Petersburg", + }, { + Value: "s3.gis-1.storage.selcloud.ru", + Help: "Moscow", + }, { + Value: "s3.ru-7.storage.selcloud.ru", + Help: "Moscow", + }, { + Value: "s3.uz-2.srvstorage.uz", + Help: "Tashkent, Uzbekistan", + }, { + Value: "s3.kz-1.srvstorage.kz", + Help: "Almaty, Kazakhstan", + }}, }, { Name: "endpoint", Help: "Endpoint for Scaleway Object Storage.", @@ -1647,7 +1690,7 @@ func init() { }, { Name: "endpoint", Help: "Endpoint for S3 API.\n\nRequired when using an S3 clone.", - Provider: "!AWS,Alibaba,ArvanCloud,ChinaMobile,GCS,Hetzner,HuaweiOBS,IBMCOS,IDrive,Intercolo,IONOS,Liara,Linode,LyveCloud,Magalu,OVHcloud,Petabox,Qiniu,Rabata,RackCorp,Scaleway,Selectel,StackPath,Storj,Synology,TencentCOS,Zata", + Provider: "!AWS,Alibaba,ArvanCloud,ChinaMobile,GCS,Hetzner,HuaweiOBS,IBMCOS,IDrive,Intercolo,IONOS,Liara,Linode,LyveCloud,Magalu,OVHcloud,Petabox,Qiniu,Rabata,RackCorp,Scaleway,Selectel,Servercore,StackPath,Storj,Synology,TencentCOS,Zata", Examples: []fs.OptionExample{{ Value: "objects-us-east-1.dream.io", Help: "Dream Objects endpoint", @@ -2196,7 +2239,7 @@ func init() { }, { Name: "location_constraint", 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,ChinaMobile,Cloudflare,FlashBlade,FileLu,HuaweiOBS,IBMCOS,IDrive,Intercolo,IONOS,Leviia,Liara,Linode,Magalu,Mega,Outscale,OVHcloud,Petabox,Qiniu,Rabata,RackCorp,Scaleway,Selectel,SpectraLogic,StackPath,Storj,TencentCOS", + Provider: "!AWS,Alibaba,ArvanCloud,ChinaMobile,Cloudflare,FlashBlade,FileLu,HuaweiOBS,IBMCOS,IDrive,Intercolo,IONOS,Leviia,Liara,Linode,Magalu,Mega,Outscale,OVHcloud,Petabox,Qiniu,Rabata,RackCorp,Scaleway,Selectel,Servercore,SpectraLogic,StackPath,Storj,TencentCOS", }, { Name: "acl", Help: `Canned ACL used when creating buckets and storing or copying objects. @@ -2211,7 +2254,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 the default (private) will be used. `, - Provider: "!Cloudflare,FlashBlade,Mega,Rabata,Selectel,SpectraLogic,Storj,Synology", + Provider: "!Cloudflare,FlashBlade,Mega,Rabata,Selectel,Servercore,SpectraLogic,Storj,Synology", Examples: []fs.OptionExample{{ Value: "default", Help: "Owner gets Full_CONTROL.\nNo one else has access rights (default).", @@ -3884,6 +3927,8 @@ func setQuirks(opt *Options) { useAlreadyExists = true case "Selectel": urlEncodeListings = false + case "Servercore": + urlEncodeListings = false case "SeaweedFS": listObjectsV2 = false // untested virtualHostStyle = false diff --git a/docs/content/_index.md b/docs/content/_index.md index dcc4b424d..5d3f39b99 100644 --- a/docs/content/_index.md +++ b/docs/content/_index.md @@ -192,6 +192,7 @@ WebDAV or S3, that work out of the box.) {{< 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="Selectel" home="https://selectel.ru/services/cloud/storage/" config="/s3/#selectel" >}} +{{< provider name="Servercore Object Storage" home="https://servercore.com/services/object-storage/" config="/s3/#servercore" >}} {{< 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="SMB / CIFS" home="https://en.wikipedia.org/wiki/Server_Message_Block" config="/smb/" >}} diff --git a/docs/content/s3.md b/docs/content/s3.md index a930234eb..1bc9b9af4 100644 --- a/docs/content/s3.md +++ b/docs/content/s3.md @@ -47,6 +47,7 @@ The S3 backend can be used with a number of different providers: {{< 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="Selectel" home="https://selectel.ru/services/cloud/storage/" config="/s3/#selectel" >}} +{{< provider name="Servercore Object Storage" home="https://servercore.com/services/object-storage/" config="/s3/#servercore" >}} {{< provider name="Spectra Logic" home="https://spectralogic.com/blackpearl-nearline-object-gateway" config="/s3/#spectralogic" >}} {{< provider name="StackPath" home="https://www.stackpath.com/products/object-storage/" config="/s3/#stackpath" >}} {{< provider name="Storj" home="https://storj.io/" config="/s3/#storj" >}} @@ -6404,6 +6405,117 @@ region = ru-1 endpoint = s3.ru-1.storage.selcloud.ru ``` +### Servercore {#servercore} +[Servercore Object Storage](https://servercore.io/object-storage/) is an S3 +compatible object storage system that provides scalable and secure storage +solutions for businesses of all sizes. + +rclone config example: + +``` +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> servercore + +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 ..., Servercore, ... + \ (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 / Servercore Object Storage + \ (Servercore) +[snip] +provider> Servercore + +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 is data stored. +Choose a number from below, or type in your own value. +Press Enter to leave empty. + 1 / St. Petersburg + \ (ru-1) + 2 / Moscow + \ (gis-1) + 3 / Moscow + \ (ru-7) + 4 / Tashkent, Uzbekistan + \ (uz-2) + 5 / Almaty, Kazakhstan + \ (kz-1) +region> 1 + +Option endpoint. +Endpoint for Servercore 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) + 2 / Moscow + \ (s3.gis-1.storage.selcloud.ru) + 3 / Moscow + \ (s3.ru-7.storage.selcloud.ru) + 4 / Tashkent, Uzbekistan + \ (s3.uz-2.srvstorage.uz) + 5 / Almaty, Kazakhstan + \ (s3.kz-1.srvstorage.kz) +endpoint> 1 + +Edit advanced config? +y) Yes +n) No (default) +y/n> n + +Configuration complete. +Options: +- type: s3 +- provider: Servercore +- access_key_id: ACCESS_KEY +- secret_access_key: SECRET_ACCESS_KEY +- region: ru-1 +- endpoint: s3.ru-1.storage.selcloud.ru +Keep this "servercore" remote? +y) Yes this is OK (default) +e) Edit this remote +d) Delete this remote +y/e/d> y +``` + ### Spectra Logic {#spectralogic} [Spectra Logic](https://www.spectralogic.com/blackpearl-nearline-object-gateway)