diff --git a/README.md b/README.md index 221041854..77cea8918 100644 --- a/README.md +++ b/README.md @@ -51,6 +51,7 @@ Rclone *("rsync for cloud storage")* is a command-line program to sync files and * IBM COS S3 [:page_facing_up:](https://rclone.org/s3/#ibm-cos-s3) * IONOS Cloud [:page_facing_up:](https://rclone.org/s3/#ionos) * Koofr [:page_facing_up:](https://rclone.org/koofr/) + * Leviia [:page_facing_up:](https://rclone.org/s3/#leviia) * Liara Object Storage [:page_facing_up:](https://rclone.org/s3/#liara-object-storage) * Mail.ru Cloud [:page_facing_up:](https://rclone.org/mailru/) * Memset Memstore [:page_facing_up:](https://rclone.org/swift/) diff --git a/backend/s3/s3.go b/backend/s3/s3.go index d51702279..6c0cf435c 100644 --- a/backend/s3/s3.go +++ b/backend/s3/s3.go @@ -66,7 +66,7 @@ import ( func init() { fs.Register(&fs.RegInfo{ Name: "s3", - Description: "Amazon S3 Compliant Storage Providers including AWS, Alibaba, ArvanCloud, Ceph, China Mobile, Cloudflare, GCS, DigitalOcean, Dreamhost, Huawei OBS, IBM COS, IDrive e2, IONOS Cloud, Liara, Lyve Cloud, Minio, Netease, Petabox, RackCorp, Scaleway, SeaweedFS, StackPath, Storj, Synology, Tencent COS, Qiniu and Wasabi", + Description: "Amazon S3 Compliant Storage Providers including AWS, Alibaba, ArvanCloud, Ceph, China Mobile, Cloudflare, GCS, DigitalOcean, Dreamhost, Huawei OBS, IBM COS, IDrive e2, IONOS Cloud, Leviia, Liara, Lyve Cloud, Minio, Netease, Petabox, RackCorp, Scaleway, SeaweedFS, StackPath, Storj, Synology, Tencent COS, Qiniu and Wasabi", NewFs: NewFs, CommandHelp: commandHelp, Config: func(ctx context.Context, name string, m configmap.Mapper, config fs.ConfigIn) (*fs.ConfigOut, error) { @@ -127,6 +127,9 @@ func init() { }, { Value: "LyveCloud", Help: "Seagate Lyve Cloud", + }, { + Value: "Leviia", + Help: "Leviia Object Storage", }, { Value: "Liara", Help: "Liara Object Storage", @@ -840,6 +843,15 @@ func init() { Value: "s3.sa-east-1.petabox.io", Help: "South America (São Paulo)", }}, + }, { + // Leviia endpoints: https://www.leviia.com/object-storage/ + Name: "endpoint", + Help: "Endpoint for Leviia Object Storage API.", + Provider: "Leviia", + Examples: []fs.OptionExample{{ + Value: "s3.leviia.com", + Help: "The default endpoint\nLeviia", + }}, }, { // Liara endpoints: https://liara.ir/landing/object-storage Name: "endpoint", @@ -1689,7 +1701,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,IBMCOS,IDrive,IONOS,Liara,Qiniu,RackCorp,Scaleway,StackPath,Storj,TencentCOS,Petabox", + Provider: "!AWS,Alibaba,ArvanCloud,HuaweiOBS,ChinaMobile,Cloudflare,IBMCOS,IDrive,IONOS,Leviia,Liara,Qiniu,RackCorp,Scaleway,StackPath,Storj,TencentCOS,Petabox", }, { Name: "acl", Help: `Canned ACL used when creating buckets and storing or copying objects. @@ -3026,6 +3038,8 @@ func setQuirks(opt *Options) { useMultipartEtag = false // untested case "Wasabi": // No quirks + case "Leviia": + // No quirks case "Qiniu": useMultipartEtag = false urlEncodeListings = false diff --git a/docs/content/s3.md b/docs/content/s3.md index e379f7f34..9d7d0522c 100644 --- a/docs/content/s3.md +++ b/docs/content/s3.md @@ -22,6 +22,7 @@ The S3 backend can be used with a number of different providers: {{< provider name="IBM COS S3" home="http://www.ibm.com/cloud/object-storage" config="/s3/#ibm-cos-s3" >}} {{< provider name="IDrive e2" home="https://www.idrive.com/e2/?refer=rclone" config="/s3/#idrive-e2" >}} {{< provider name="IONOS Cloud" home="https://cloud.ionos.com/storage/object-storage" config="/s3/#ionos" >}} + {{< provider name="Leviia Object Storage" home="https://www.leviia.com/object-storage/" config="/s3/#leviia" >}} {{< provider name="Liara Object Storage" home="https://liara.ir/landing/object-storage" config="/s3/#liara-cloud" >}} {{< provider name="Minio" home="https://www.minio.io/" config="/s3/#minio" >}} {{< provider name="Petabox" home="https://petabox.io/" config="/s3/#petabox" >}} @@ -5158,7 +5159,129 @@ e) Edit this remote d) Delete this remote y/e/d> y ``` +### Leviia Cloud Object Storage {#leviia} +[Leviia Object Storage](https://www.leviia.com/object-storage/), backup and secure your data in a 100% French cloud, independent of GAFAM.. + +To configure access to Leviia, follow the steps below: + +1. Run `rclone config` and select `n` for a new remote. + +``` +rclone config +No remotes found, make a new one? +n) New remote +s) Set configuration password +q) Quit config +n/s/q> n +``` + +2. Give the name of the configuration. For example, name it 'leviia'. + +``` +name> leviia +``` + +3. Select `s3` storage. + +``` +Choose a number from below, or type in your own value + 1 / 1Fichier + \ (fichier) + 2 / Akamai NetStorage + \ (netstorage) + 3 / Alias for an existing remote + \ (alias) + 4 / Amazon Drive + \ (amazon cloud drive) + 5 / Amazon S3 Compliant Storage Providers including AWS, Alibaba, Ceph, China Mobile, Cloudflare, ArvanCloud, DigitalOcean, Dreamhost, Huawei OBS, IBM COS, IDrive e2, Liara, Lyve Cloud, Minio, Netease, RackCorp, Scaleway, SeaweedFS, StackPath, Storj, Synology, Tencent COS, Qiniu and Wasabi + \ (s3) +[snip] +Storage> s3 +``` + +4. Select `Leviia` provider. +``` +Choose a number from below, or type in your own value +1 / Amazon Web Services (AWS) S3 + \ "AWS" +[snip] +15 / Leviia Object Storage + \ (Leviia) +[snip] +provider> Leviia +``` + +5. Enter your SecretId and SecretKey of Leviia. + +``` +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. +Enter a boolean value (true or false). Press Enter for the default ("false"). +Choose a number from below, or type in your own value + 1 / Enter AWS credentials in the next step + \ "false" + 2 / Get AWS credentials from the environment (env vars or IAM) + \ "true" +env_auth> 1 +AWS Access Key ID. +Leave blank for anonymous access or runtime credentials. +Enter a string value. Press Enter for the default (""). +access_key_id> ZnIx.xxxxxxxxxxxxxxx +AWS Secret Access Key (password) +Leave blank for anonymous access or runtime credentials. +Enter a string value. Press Enter for the default (""). +secret_access_key> xxxxxxxxxxx +``` + +6. Select endpoint for Leviia. + +``` + / The default endpoint + 1 | Leviia. + \ (s3.leviia.com) +[snip] +endpoint> 1 + +7. Choose 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. +Enter a string value. Press Enter for the default (""). +Choose a number from below, or type in your own value + / 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) +[snip] +acl> 1 +Edit advanced config? (y/n) +y) Yes +n) No (default) +y/n> n +Remote config +-------------------- +[leviia] +- type: s3 +- provider: Leviia +- access_key_id: ZnIx.xxxxxxx +- secret_access_key: xxxxxxxx +- endpoint: s3.leviia.com +- acl: private +-------------------- +y) Yes this is OK (default) +e) Edit this remote +d) Delete this remote +y/e/d> y +Current remotes: + +Name Type +==== ==== +leviia s3 +``` ### Liara {#liara-cloud} Here is an example of making a [Liara Object Storage](https://liara.ir/landing/object-storage)