diff --git a/backend/oracleobjectstorage/command.go b/backend/oracleobjectstorage/command.go index 1d5fb63bb..6e0c7e115 100644 --- a/backend/oracleobjectstorage/command.go +++ b/backend/oracleobjectstorage/command.go @@ -31,7 +31,7 @@ var commandHelp = []fs.CommandHelp{{ Usage Examples: - rclone backend rename oss:bucket relative-object-path-under-bucket object-new-name + rclone backend rename oos:bucket relative-object-path-under-bucket object-new-name `, Opts: nil, }, { @@ -39,7 +39,7 @@ Usage Examples: Short: "List the unfinished multipart uploads", Long: `This command lists the unfinished multipart uploads in JSON format. - rclone backend list-multipart-uploads oss:bucket/path/to/object + rclone backend list-multipart-uploads oos:bucket/path/to/object It returns a dictionary of buckets with values as lists of unfinished multipart uploads. @@ -68,8 +68,8 @@ max-age which defaults to 24 hours. Note that you can use -i/--dry-run with this command to see what it would do. - rclone backend cleanup oss:bucket/path/to/object - rclone backend cleanup -o max-age=7w oss:bucket/path/to/object + rclone backend cleanup oos:bucket/path/to/object + rclone backend cleanup -o max-age=7w oos:bucket/path/to/object Durations are parsed as per the rest of rclone, 2h, 7d, 7w etc. `, diff --git a/backend/oracleobjectstorage/options.go b/backend/oracleobjectstorage/options.go index a7d4e99ef..9e7e65fd5 100644 --- a/backend/oracleobjectstorage/options.go +++ b/backend/oracleobjectstorage/options.go @@ -63,6 +63,7 @@ type Options struct { CopyTimeout fs.Duration `config:"copy_timeout"` StorageTier string `config:"storage_tier"` LeavePartsOnError bool `config:"leave_parts_on_error"` + NoCheckBucket bool `config:"no_check_bucket"` } func newOptions() []fs.Option { @@ -222,6 +223,18 @@ It should be set to true for resuming uploads across different sessions. WARNING: Storing parts of an incomplete multipart upload counts towards space usage on object storage and will add additional costs if not cleaned up. +`, + Default: false, + Advanced: true, + }, { + Name: "no_check_bucket", + Help: `If set, don't attempt to check the bucket exists or create it. + +This can be useful when trying to minimise the number of transactions +rclone does if you know the bucket exists already. + +It can also be needed if the user you are using does not have bucket +creation permissions. `, Default: false, Advanced: true, diff --git a/backend/oracleobjectstorage/oracleobjectstorage.go b/backend/oracleobjectstorage/oracleobjectstorage.go index c229df083..d18a3467a 100644 --- a/backend/oracleobjectstorage/oracleobjectstorage.go +++ b/backend/oracleobjectstorage/oracleobjectstorage.go @@ -148,12 +148,12 @@ func (f *Fs) Root() string { // String converts this Fs to a string func (f *Fs) String() string { if f.rootBucket == "" { - return "oss:root" + return "oos:root" } if f.rootDirectory == "" { - return fmt.Sprintf("oss:bucket %s", f.rootBucket) + return fmt.Sprintf("oos:bucket %s", f.rootBucket) } - return fmt.Sprintf("oss:bucket %s, path %s", f.rootBucket, f.rootDirectory) + return fmt.Sprintf("oos:bucket %s, path %s", f.rootBucket, f.rootDirectory) } // Features returns the optional features of this Fs @@ -473,6 +473,9 @@ func (f *Fs) Mkdir(ctx context.Context, dir string) error { // makeBucket creates the bucket if it doesn't exist func (f *Fs) makeBucket(ctx context.Context, bucketName string) error { + if f.opt.NoCheckBucket { + return nil + } return f.cache.Create(bucketName, func() error { details := objectstorage.CreateBucketDetails{ Name: common.String(bucketName), diff --git a/bin/make_manual.py b/bin/make_manual.py index 8ab7f314d..4fa6fe59e 100755 --- a/bin/make_manual.py +++ b/bin/make_manual.py @@ -59,6 +59,7 @@ docs = [ "azureblob.md", "onedrive.md", "opendrive.md", + "oracleobjectstorage.md", "qingstor.md", "sia.md", "swift.md", diff --git a/docs/content/flags.md b/docs/content/flags.md index f9753336e..90fbb2a5f 100644 --- a/docs/content/flags.md +++ b/docs/content/flags.md @@ -487,6 +487,22 @@ and may be set in the config file. --onedrive-server-side-across-configs Allow server-side operations (e.g. copy) to work across different onedrive configs --onedrive-token string OAuth Access Token as a JSON blob --onedrive-token-url string Token server url + --oos-chunk-size SizeSuffix Chunk size to use for uploading (default 5Mi) + --oos-compartment string Object storage compartment OCID + --oos-config-file string Path to OCI config file (default "~/.oci/config") + --oos-config-profile string Profile name inside the oci config file (default "Default") + --oos-copy-cutoff SizeSuffix Cutoff for switching to multipart copy (default 4.656Gi) + --oos-copy-timeout Duration Timeout for copy (default 1m0s) + --oos-disable-checksum Don't store MD5 checksum with object metadata + --oos-encoding MultiEncoder The encoding for the backend (default Slash,InvalidUtf8,Dot) + --oos-endpoint string Endpoint for Object storage API + --oos-leave-parts-on-error If true avoid calling abort upload on a failure, leaving all successfully uploaded parts on S3 for manual recovery + --oos-namespace string Object storage namespace + --oos-no-check-bucket If set, don't attempt to check the bucket exists or create it + --oos-provider string Choose your Auth Provider (default "env_auth") + --oos-region string Object storage Region + --oos-upload-concurrency int Concurrency for multipart uploads (default 10) + --oos-upload-cutoff SizeSuffix Cutoff for switching to chunked upload (default 200Mi) --opendrive-chunk-size SizeSuffix Files will be uploaded in chunks this size (default 10Mi) --opendrive-encoding MultiEncoder The encoding for the backend (default Slash,LtGt,DoubleQuote,Colon,Question,Asterisk,Pipe,BackSlash,LeftSpace,LeftCrLfHtVt,RightSpace,RightCrLfHtVt,InvalidUtf8,Dot) --opendrive-password string Password (obscured) diff --git a/docs/content/oracleobjectstorage.md b/docs/content/oracleobjectstorage.md index 2510f9aee..e67369e15 100644 --- a/docs/content/oracleobjectstorage.md +++ b/docs/content/oracleobjectstorage.md @@ -272,7 +272,7 @@ Properties: #### --oos-config-profile -Path to OCI config file +Profile name inside the oci config file Properties: @@ -432,6 +432,24 @@ Properties: - Type: bool - Default: false +#### --oos-no-check-bucket + +If set, don't attempt to check the bucket exists or create it. + +This can be useful when trying to minimise the number of transactions +rclone does if you know the bucket exists already. + +It can also be needed if the user you are using does not have bucket +creation permissions. + + +Properties: + +- Config: no_check_bucket +- Env Var: RCLONE_OOS_NO_CHECK_BUCKET +- Type: bool +- Default: false + ## Backend commands Here are the commands specific to the oracleobjectstorage backend.