diff --git a/README.md b/README.md index 129073d9e..66abe5edf 100644 --- a/README.md +++ b/README.md @@ -106,6 +106,7 @@ directories to and from different cloud storage providers. - Selectel Object Storage [:page_facing_up:](https://rclone.org/s3/#selectel) - 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) - StackPath [:page_facing_up:](https://rclone.org/s3/#stackpath) - Storj [:page_facing_up:](https://rclone.org/storj/) - SugarSync [:page_facing_up:](https://rclone.org/sugarsync/) diff --git a/backend/s3/s3.go b/backend/s3/s3.go index 9d2b8a1ad..3808b48a2 100644 --- a/backend/s3/s3.go +++ b/backend/s3/s3.go @@ -173,6 +173,9 @@ var providerOption = fs.Option{ }, { Value: "Selectel", Help: "Selectel Object Storage", + }, { + Value: "SpectraLogic", + Help: "Spectra Logic Black Pearl", }, { Value: "StackPath", Help: "StackPath Object Storage", @@ -654,7 +657,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,Intercolo,IONOS,Petabox,Liara,Linode,Magalu,OVHcloud,Qiniu,RackCorp,Scaleway,Selectel,Storj,Synology,TencentCOS,HuaweiOBS,IDrive,Mega,Zata", + Provider: "!AWS,Alibaba,ArvanCloud,ChinaMobile,Cloudflare,FlashBlade,Intercolo,IONOS,Petabox,Liara,Linode,Magalu,OVHcloud,Qiniu,RackCorp,Scaleway,Selectel,SpectraLogic,Storj,Synology,TencentCOS,HuaweiOBS,IDrive,Mega,Zata", Examples: []fs.OptionExample{{ Value: "", Help: "Use this if unsure.\nWill use v4 signatures and an empty region.", @@ -2086,7 +2089,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,HuaweiOBS,ChinaMobile,Cloudflare,FlashBlade,IBMCOS,IDrive,Intercolo,IONOS,Leviia,Liara,Linode,Magalu,Outscale,OVHcloud,Qiniu,RackCorp,Scaleway,Selectel,StackPath,Storj,TencentCOS,Petabox,Mega", + Provider: "!AWS,Alibaba,ArvanCloud,HuaweiOBS,ChinaMobile,Cloudflare,FlashBlade,IBMCOS,IDrive,Intercolo,IONOS,Leviia,Liara,Linode,Magalu,Outscale,OVHcloud,Qiniu,RackCorp,Scaleway,Selectel,SpectraLogic,StackPath,Storj,TencentCOS,Petabox,Mega", }, { Name: "acl", Help: `Canned ACL used when creating buckets and storing or copying objects. @@ -2101,7 +2104,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: "!Storj,Selectel,Synology,Cloudflare,FlashBlade,Mega", + Provider: "!Storj,Selectel,SpectraLogic,Synology,Cloudflare,FlashBlade,Mega", Examples: []fs.OptionExample{{ Value: "default", Help: "Owner gets Full_CONTROL.\nNo one else has access rights (default).", @@ -2159,7 +2162,7 @@ isn't set then "acl" is used instead. If the "acl" and "bucket_acl" are empty strings then no X-Amz-Acl: header is added and the default (private) will be used. `, - Provider: "!Storj,Selectel,Synology,Cloudflare,FlashBlade", + Provider: "!Storj,Selectel,SpectraLogic,Synology,Cloudflare,FlashBlade", Advanced: true, Examples: []fs.OptionExample{{ Value: "private", @@ -3771,6 +3774,8 @@ func setQuirks(opt *Options) { urlEncodeListings = false useMultipartEtag = false // untested useAlreadyExists = false // untested + case "SpectraLogic": + virtualHostStyle = false // path-style required case "StackPath": listObjectsV2 = false // untested virtualHostStyle = false diff --git a/docs/content/_index.md b/docs/content/_index.md index ab3ea026d..99e735816 100644 --- a/docs/content/_index.md +++ b/docs/content/_index.md @@ -189,6 +189,7 @@ WebDAV or S3, that work out of the box.) {{< 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/" >}} +{{< 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="/storj/" >}} {{< provider name="Synology" home="https://c2.synology.com/en-global/object-storage/overview" config="/s3/#synology-c2" >}} diff --git a/docs/content/s3.md b/docs/content/s3.md index 4dd9b558e..5b902854d 100644 --- a/docs/content/s3.md +++ b/docs/content/s3.md @@ -44,6 +44,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="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" >}} {{< provider name="Synology C2 Object Storage" home="https://c2.synology.com/en-global/object-storage/overview" config="/s3/#synology-c2" >}} @@ -6018,6 +6019,105 @@ region = ru-1 endpoint = s3.ru-1.storage.selcloud.ru ``` +### Spectra Logic {#spectralogic} + +[Spectra Logic](https://www.spectralogic.com/blackpearl-nearline-object-gateway) +is an on-prem S3-compatible object storage gateway that exposes local object storage and +policy-tiers data to Spectra tape and public clouds under a single namespace for +backup and archiving. + +The S3 compatible gateway is configured using `rclone config` with a +type of `s3` and with a provider name of `SpectraLogic`. Here is an example +run of the configurator. + +``` +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> spectralogic + +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 ..., SpectraLogic, ... + \ (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 / SpectraLogic BlackPearl + \ (SpectraLogic) +[snip] +provider> SpectraLogic + +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 endpoint. +Endpoint for S3 API. +Required when using an S3 clone. +Enter a value. Press Enter to leave empty. +endpoint> https://bps3.example.com + +Edit advanced config? +y) Yes +n) No (default) +y/n> n + +Configuration complete. +Options: +- type: s3 +- provider: SpectraLogic +- access_key_id: ACCESS_KEY +- secret_access_key: SECRET_ACCESS_KEY +- endpoint: https://bps3.example.com +Keep this "spectratest" 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: + +``` +[spectratest] +type = s3 +provider = SpectraLogic +access_key_id = ACCESS_KEY +secret_access_key = SECRET_ACCESS_KEY +endpoint = https://bps3.example.com +``` + ### Storj Storj is a decentralized cloud storage which can be used through its