diff --git a/README.md b/README.md index 869587216..22e11cff2 100644 --- a/README.md +++ b/README.md @@ -111,6 +111,7 @@ Rclone *("rsync for cloud storage")* is a command-line program to sync files and * WebDAV [:page_facing_up:](https://rclone.org/webdav/) * Yandex Disk [:page_facing_up:](https://rclone.org/yandex/) * Zoho WorkDrive [:page_facing_up:](https://rclone.org/zoho/) + * Zata.ai [:page_facing_up:](https://rclone.org/s3/#Zata) * The local filesystem [:page_facing_up:](https://rclone.org/local/) Please see [the full list of all storage providers and their features](https://rclone.org/overview/) diff --git a/backend/s3/s3.go b/backend/s3/s3.go index 2b4c7d62d..aa3ee0d38 100644 --- a/backend/s3/s3.go +++ b/backend/s3/s3.go @@ -185,6 +185,9 @@ var providerOption = fs.Option{ }, { Value: "Qiniu", Help: "Qiniu Object Storage (Kodo)", + }, { + Value: "Zata", + Help: "Zata (S3 compatible Gateway)", }, { Value: "Other", Help: "Any other S3 compatible provider", @@ -490,6 +493,14 @@ func init() { Value: "ap-northeast-1", Help: "Northeast Asia Region 1.\nNeeds location constraint ap-northeast-1.", }}, + }, { + Name: "region", + Help: "Region where you can connect with.\n", + Provider: "Zata", + Examples: []fs.OptionExample{{ + Value: "us-east-1", + Help: "Indore, Madhya Pradesh, India", + }}, }, { Name: "region", Help: "Region where your bucket will be created and your data stored.\n", @@ -576,7 +587,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,IONOS,Petabox,Liara,Linode,Magalu,Qiniu,RackCorp,Scaleway,Selectel,Storj,Synology,TencentCOS,HuaweiOBS,IDrive,Mega", + Provider: "!AWS,Alibaba,ArvanCloud,ChinaMobile,Cloudflare,FlashBlade,IONOS,Petabox,Liara,Linode,Magalu,Qiniu,RackCorp,Scaleway,Selectel,Storj,Synology,TencentCOS,HuaweiOBS,IDrive,Mega,Zata", Examples: []fs.OptionExample{{ Value: "", Help: "Use this if unsure.\nWill use v4 signatures and an empty region.", @@ -1380,6 +1391,14 @@ func init() { Value: "s3-ap-northeast-1.qiniucs.com", Help: "Northeast Asia Endpoint 1", }}, + }, { + Name: "endpoint", + Help: "Endpoint for Zata Object Storage.", + Provider: "Zata", + Examples: []fs.OptionExample{{ + Value: "idr01.zata.ai", + Help: "South Asia Endpoint", + }}, }, { // Selectel endpoints: https://docs.selectel.ru/en/cloud/object-storage/manage/domains/#s3-api-domains Name: "endpoint", @@ -1392,7 +1411,7 @@ func init() { }, { Name: "endpoint", 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,LyveCloud,Magalu,Scaleway,Selectel,StackPath,Storj,Synology,RackCorp,Qiniu,Petabox", + Provider: "!AWS,ArvanCloud,IBMCOS,IDrive,IONOS,TencentCOS,HuaweiOBS,Alibaba,ChinaMobile,GCS,Liara,Linode,LyveCloud,Magalu,Scaleway,Selectel,StackPath,Storj,Synology,RackCorp,Qiniu,Petabox,Zata", Examples: []fs.OptionExample{{ Value: "objects-us-east-1.dream.io", Help: "Dream Objects endpoint", @@ -3631,6 +3650,11 @@ func setQuirks(opt *Options) { urlEncodeListings = false virtualHostStyle = false useAlreadyExists = false // untested + case "Zata": + useMultipartEtag = false + mightGzip = false + useUnsignedPayload = false + useAlreadyExists = false case "Exaba": virtualHostStyle = false case "GCS": diff --git a/docs/content/_index.md b/docs/content/_index.md index 14274120e..6466a8650 100644 --- a/docs/content/_index.md +++ b/docs/content/_index.md @@ -197,6 +197,7 @@ WebDAV or S3, that work out of the box.) {{< provider name="WebDAV" home="https://en.wikipedia.org/wiki/WebDAV" config="/webdav/" >}} {{< provider name="Yandex Disk" home="https://disk.yandex.com/" config="/yandex/" >}} {{< provider name="Zoho WorkDrive" home="https://www.zoho.com/workdrive/" config="/zoho/" >}} +{{< provider name="Zata" home="https://zata.ai/" config="/s3/#Zata" end="true" >}} {{< provider name="The local filesystem" home="/local/" config="/local/" end="true">}} {{< /provider_list >}} diff --git a/docs/content/s3.md b/docs/content/s3.md index 0225e9da7..24f8cb1de 100644 --- a/docs/content/s3.md +++ b/docs/content/s3.md @@ -43,6 +43,7 @@ The S3 backend can be used with a number of different providers: {{< provider name="Synology C2 Object Storage" home="https://c2.synology.com/en-global/object-storage/overview" config="/s3/#synology-c2" >}} {{< provider name="Tencent Cloud Object Storage (COS)" home="https://intl.cloud.tencent.com/product/cos" config="/s3/#tencent-cos" >}} {{< provider name="Wasabi" home="https://wasabi.com/" config="/s3/#wasabi" end="true" >}} +{{< provider name="Zata" home="https://zata.ai/" config="/s3/#Zata" end="true" >}} {{< /provider_list >}} Paths are specified as `remote:bucket` (or `remote:` for the `lsd` @@ -6040,3 +6041,155 @@ d) Delete this remote y/e/d> y ``` +### Zata Object Storage {#Zata} + +[Zata Object Storage](https://zata.ai/) provides a secure, S3-compatible cloud storage solution designed for scalability and performance, ideal for a variety of data storage needs. + +First run: + +``` +rclone config +``` + +``` +This will guide you through an interactive setup process: + +e) Edit existing remote +n) New remote +d) Delete remote +r) Rename remote +c) Copy remote +s) Set configuration password +q) Quit config +e/n/d/r/c/s/q> n + +Enter name for new remote. +name> my zata storage + +Option Storage. +Type of storage to configure. +Choose a number from below, or type in your own value. + +XX / Amazon S3 Compliant Storage Providers including AWS, ... + \ (s3) + +Storage> s3 + +Option provider. +Choose your S3 provider. +Choose a number from below, or type in your own value. +Press Enter to leave empty. + +XX / Zata (S3 compatible Gateway) + \ (Zata) + +provider> Zata + +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> + +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> "your 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> "your secret key" + +Option region. +Region where you can connect with. +Choose a number from below, or type in your own value. +Press Enter to leave empty. + 1 / Indore, Madhya Pradesh, India + \ (us-east-1) +region> 1 + +Option endpoint. +Endpoint for Zata Object Storage. +Choose a number from below, or type in your own value. +Press Enter to leave empty. + 1 / South Asia Endpoint + \ (idr01.zata.ai) +endpoint> 1 + +Option location_constraint. +Location constraint - must be set to match the Region. +Leave blank if not sure. Used when creating buckets only. +Enter a value. Press Enter to leave empty. +location_constraint> + +Option acl. +Canned ACL used when creating buckets and storing or copying objects. +This ACL is used for creating objects and if bucket_acl isn't set, for creating buckets too. +For more info visit https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl +Note that this ACL is applied when server-side copying objects as S3 +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. +Choose a number from below, or type in your own value. +Press Enter to leave empty. + / Owner gets FULL_CONTROL. + 1 | No one else has access rights (default). + \ (private) + / Owner gets FULL_CONTROL. + 2 | The AllUsers group gets READ access. + \ (public-read) + / Owner gets FULL_CONTROL. + 3 | The AllUsers group gets READ and WRITE access. + | Granting this on a bucket is generally not recommended. + \ (public-read-write) + / Owner gets FULL_CONTROL. + 4 | The AuthenticatedUsers group gets READ access. + \ (authenticated-read) + / Object owner gets FULL_CONTROL. + 5 | Bucket owner gets READ access. + | If you specify this canned ACL when creating a bucket, Amazon S3 ignores it. + \ (bucket-owner-read) + / Both the object owner and the bucket owner get FULL_CONTROL over the object. + 6 | If you specify this canned ACL when creating a bucket, Amazon S3 ignores it. + \ (bucket-owner-full-control) +acl> + +Edit advanced config? +y) Yes +n) No (default) +y/n> + +Configuration complete. +Options: +- type: s3 +- provider: Zata +- access_key_id: xxx +- secret_access_key: xxx +- region: us-east-1 +- endpoint: idr01.zata.ai +Keep this "my zata storage" remote? +y) Yes this is OK (default) +e) Edit this remote +d) Delete this remote +y/e/d> + +``` +This will leave the config file looking like this. +``` +[my zata storage] +type = s3 +provider = Zata +access_key_id = xxx +secret_access_key = xxx +region = us-east-1 +endpoint = idr01.zata.ai + +``` \ No newline at end of file