mirror of
https://github.com/rclone/rclone.git
synced 2025-12-06 00:03:32 +00:00
Compare commits
25 Commits
fix-vfs-mo
...
v1.62.1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fa053a88ee | ||
|
|
4603580c24 | ||
|
|
2d696f0842 | ||
|
|
34f5cc743a | ||
|
|
d08c577adf | ||
|
|
77c7077458 | ||
|
|
ffd4ab222c | ||
|
|
676277e255 | ||
|
|
c0a5283416 | ||
|
|
e405ca7733 | ||
|
|
580d72f0f6 | ||
|
|
22daeaa6f3 | ||
|
|
ca9ad7935a | ||
|
|
dd6e229327 | ||
|
|
4edcd16f5f | ||
|
|
534e3acd06 | ||
|
|
cf75ddabd3 | ||
|
|
6edcacf932 | ||
|
|
51506a7ccd | ||
|
|
a50fd2a2a2 | ||
|
|
efac7e18fb | ||
|
|
02dd8eacea | ||
|
|
e2984227bb | ||
|
|
a35ee30d9f | ||
|
|
f689db4422 |
10
.github/dependabot.yml
vendored
Normal file
10
.github/dependabot.yml
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
- package-ecosystem: "gomod"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
14
.github/workflows/winget.yml
vendored
Normal file
14
.github/workflows/winget.yml
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
name: Publish to Winget
|
||||
on:
|
||||
release:
|
||||
types: [released]
|
||||
|
||||
jobs:
|
||||
publish:
|
||||
runs-on: windows-latest # Action can only run on Windows
|
||||
steps:
|
||||
- uses: vedantmgoyal2009/winget-releaser@v2
|
||||
with:
|
||||
identifier: Rclone.Rclone
|
||||
installers-regex: '-windows-\w+\.zip$'
|
||||
token: ${{ secrets.WINGET_TOKEN }}
|
||||
@@ -11,7 +11,7 @@ RUN ./rclone version
|
||||
# Begin final image
|
||||
FROM alpine:latest
|
||||
|
||||
RUN apk --no-cache add ca-certificates fuse tzdata && \
|
||||
RUN apk --no-cache add ca-certificates fuse3 tzdata && \
|
||||
echo "user_allow_other" >> /etc/fuse.conf
|
||||
|
||||
COPY --from=builder /go/src/github.com/rclone/rclone/rclone /usr/local/bin/
|
||||
|
||||
835
MANUAL.html
generated
835
MANUAL.html
generated
File diff suppressed because it is too large
Load Diff
1149
MANUAL.txt
generated
1149
MANUAL.txt
generated
File diff suppressed because it is too large
Load Diff
@@ -10,7 +10,7 @@ This file describes how to make the various kinds of releases
|
||||
## Making a release
|
||||
|
||||
* git checkout master # see below for stable branch
|
||||
* git pull
|
||||
* git pull # IMPORTANT
|
||||
* git status - make sure everything is checked in
|
||||
* Check GitHub actions build for master is Green
|
||||
* make test # see integration test server or run locally
|
||||
@@ -21,6 +21,7 @@ This file describes how to make the various kinds of releases
|
||||
* git status - to check for new man pages - git add them
|
||||
* git commit -a -v -m "Version v1.XX.0"
|
||||
* make retag
|
||||
* git push origin # without --follow-tags so it doesn't push the tag if it fails
|
||||
* git push --follow-tags origin
|
||||
* # Wait for the GitHub builds to complete then...
|
||||
* make fetch_binaries
|
||||
|
||||
@@ -953,7 +953,7 @@ func (o *Object) updateMetadataWithModTime(modTime time.Time) {
|
||||
}
|
||||
|
||||
// Returns whether file is a directory marker or not
|
||||
func isDirectoryMarker(size int64, metadata map[string]string, remote string) bool {
|
||||
func isDirectoryMarker(size int64, metadata map[string]*string, remote string) bool {
|
||||
// Directory markers are 0 length
|
||||
if size == 0 {
|
||||
endsWithSlash := strings.HasSuffix(remote, "/")
|
||||
@@ -964,7 +964,7 @@ func isDirectoryMarker(size int64, metadata map[string]string, remote string) bo
|
||||
// defacto standard for marking blobs as directories.
|
||||
// Note also that the metadata hasn't been normalised to lower case yet
|
||||
for k, v := range metadata {
|
||||
if strings.EqualFold(k, "hdi_isfolder") && v == "true" {
|
||||
if v != nil && strings.EqualFold(k, "hdi_isfolder") && *v == "true" {
|
||||
return true
|
||||
}
|
||||
}
|
||||
@@ -1552,12 +1552,15 @@ func (o *Object) Size() int64 {
|
||||
return o.size
|
||||
}
|
||||
|
||||
func (o *Object) setMetadata(metadata map[string]string) {
|
||||
// Set o.metadata from metadata
|
||||
func (o *Object) setMetadata(metadata map[string]*string) {
|
||||
if len(metadata) > 0 {
|
||||
// Lower case the metadata
|
||||
o.meta = make(map[string]string, len(metadata))
|
||||
for k, v := range metadata {
|
||||
o.meta[strings.ToLower(k)] = v
|
||||
if v != nil {
|
||||
o.meta[strings.ToLower(k)] = *v
|
||||
}
|
||||
}
|
||||
// Set o.modTime from metadata if it exists and
|
||||
// UseServerModTime isn't in use.
|
||||
@@ -1573,20 +1576,16 @@ func (o *Object) setMetadata(metadata map[string]string) {
|
||||
}
|
||||
}
|
||||
|
||||
// Duplicte of setMetadata but taking pointers to strings
|
||||
func (o *Object) setMetadataP(metadata map[string]*string) {
|
||||
if len(metadata) > 0 {
|
||||
// Convert the format of the metadata
|
||||
newMeta := make(map[string]string, len(metadata))
|
||||
for k, v := range metadata {
|
||||
if v != nil {
|
||||
newMeta[k] = *v
|
||||
}
|
||||
}
|
||||
o.setMetadata(newMeta)
|
||||
} else {
|
||||
o.meta = nil
|
||||
// Get metadata from o.meta
|
||||
func (o *Object) getMetadata() (metadata map[string]*string) {
|
||||
if len(o.meta) == 0 {
|
||||
return nil
|
||||
}
|
||||
metadata = make(map[string]*string, len(o.meta))
|
||||
for k, v := range o.meta {
|
||||
metadata[k] = &v
|
||||
}
|
||||
return metadata
|
||||
}
|
||||
|
||||
// decodeMetaDataFromPropertiesResponse sets the metadata from the data passed in
|
||||
@@ -1718,7 +1717,7 @@ func (o *Object) decodeMetaDataFromBlob(info *container.BlobItem) (err error) {
|
||||
} else {
|
||||
o.accessTier = *info.Properties.AccessTier
|
||||
}
|
||||
o.setMetadataP(metadata)
|
||||
o.setMetadata(metadata)
|
||||
|
||||
return nil
|
||||
}
|
||||
@@ -1800,7 +1799,7 @@ func (o *Object) SetModTime(ctx context.Context, modTime time.Time) error {
|
||||
blb := o.getBlobSVC()
|
||||
opt := blob.SetMetadataOptions{}
|
||||
err := o.fs.pacer.Call(func() (bool, error) {
|
||||
_, err := blb.SetMetadata(ctx, o.meta, &opt)
|
||||
_, err := blb.SetMetadata(ctx, o.getMetadata(), &opt)
|
||||
return o.fs.shouldRetry(ctx, err)
|
||||
})
|
||||
if err != nil {
|
||||
@@ -2096,7 +2095,7 @@ func (o *Object) uploadMultipart(ctx context.Context, in io.Reader, size int64,
|
||||
|
||||
tier := blob.AccessTier(o.fs.opt.AccessTier)
|
||||
options := blockblob.CommitBlockListOptions{
|
||||
Metadata: o.meta,
|
||||
Metadata: o.getMetadata(),
|
||||
Tier: &tier,
|
||||
HTTPHeaders: httpHeaders,
|
||||
}
|
||||
@@ -2143,7 +2142,7 @@ func (o *Object) uploadSinglepart(ctx context.Context, in io.Reader, size int64,
|
||||
|
||||
tier := blob.AccessTier(o.fs.opt.AccessTier)
|
||||
options := blockblob.UploadOptions{
|
||||
Metadata: o.meta,
|
||||
Metadata: o.getMetadata(),
|
||||
Tier: &tier,
|
||||
HTTPHeaders: httpHeaders,
|
||||
}
|
||||
|
||||
@@ -26,7 +26,8 @@ echo "Making release ${VERSION} anchor ${ANCHOR} to repo ${REPO}"
|
||||
gh release create "${VERSION}" \
|
||||
--repo ${REPO} \
|
||||
--title "rclone ${VERSION}" \
|
||||
--notes-file "/tmp/${VERSION}-release-notes"
|
||||
--notes-file "/tmp/${VERSION}-release-notes" \
|
||||
--draft=true
|
||||
|
||||
for build in build/*; do
|
||||
case $build in
|
||||
@@ -40,6 +41,10 @@ for build in build/*; do
|
||||
"${build}"
|
||||
done
|
||||
|
||||
gh release edit "${VERSION}" \
|
||||
--repo ${REPO} \
|
||||
--draft=false
|
||||
|
||||
gh release view "${VERSION}" \
|
||||
--repo ${REPO}
|
||||
|
||||
|
||||
@@ -254,6 +254,44 @@ example above.
|
||||
Note that mapping to a directory path, instead of a drive letter,
|
||||
does not suffer from the same limitations.
|
||||
|
||||
### Mounting on macOS
|
||||
|
||||
Mounting on macOS can be done either via [macFUSE](https://osxfuse.github.io/)
|
||||
(also known as osxfuse) or [FUSE-T](https://www.fuse-t.org/). macFUSE is a traditional
|
||||
FUSE driver utilizing a macOS kernel extension (kext). FUSE-T is an alternative FUSE system
|
||||
which "mounts" via an NFSv4 local server.
|
||||
|
||||
#### FUSE-T Limitations, Caveats, and Notes
|
||||
|
||||
There are some limitations, caveats, and notes about how it works. These are current as
|
||||
of FUSE-T version 1.0.14.
|
||||
|
||||
##### ModTime update on read
|
||||
|
||||
As per the [FUSE-T wiki](https://github.com/macos-fuse-t/fuse-t/wiki#caveats):
|
||||
|
||||
> File access and modification times cannot be set separately as it seems to be an
|
||||
> issue with the NFS client which always modifies both. Can be reproduced with
|
||||
> 'touch -m' and 'touch -a' commands
|
||||
|
||||
This means that viewing files with various tools, notably macOS Finder, will cause rlcone
|
||||
to update the modification time of the file. This may make rclone upload a full new copy
|
||||
of the file.
|
||||
|
||||
##### Unicode Normalization
|
||||
|
||||
Rclone includes flags for unicode normalization with macFUSE that should be updated
|
||||
for FUSE-T. See [this forum post](https://forum.rclone.org/t/some-unicode-forms-break-mount-on-macos-with-fuse-t/36403)
|
||||
and [FUSE-T issue #16](https://github.com/macos-fuse-t/fuse-t/issues/16). The following
|
||||
flag should be added to the |rclone mount| command.
|
||||
|
||||
-o modules=iconv,from_code=UTF-8,to_code=UTF-8
|
||||
|
||||
##### Read Only mounts
|
||||
|
||||
When mounting with |--read-only|, attempts to write to files will fail *silently* as
|
||||
opposed to with a clear warning as in macFUSE.
|
||||
|
||||
### Limitations
|
||||
|
||||
Without the use of |--vfs-cache-mode| this can only write files
|
||||
|
||||
@@ -132,7 +132,7 @@ WebDAV or S3, that work out of the box.)
|
||||
{{< provider name="Internet Archive" home="https://archive.org/" config="/internetarchive/" >}}
|
||||
{{< provider name="Jottacloud" home="https://www.jottacloud.com/en/" config="/jottacloud/" >}}
|
||||
{{< 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/" config="/s3/#idrive-e2" >}}
|
||||
{{< 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="Koofr" home="https://koofr.eu/" config="/koofr/" >}}
|
||||
{{< provider name="Liara Object Storage" home="https://liara.ir/landing/object-storage" config="/s3/#liara-object-storage" >}}
|
||||
|
||||
@@ -693,3 +693,5 @@ put them back in again.` >}}
|
||||
* Ninh Pham <dongian.rapclubkhtn@gmail.com>
|
||||
* Ryan Caezar Itang <sitiom@proton.me>
|
||||
* Peter Brunner <peter@psykhe.com>
|
||||
* Leandro Sacchet <leandro.sacchet@animati.com.br>
|
||||
* dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
|
||||
|
||||
@@ -5,6 +5,119 @@ description: "Rclone Changelog"
|
||||
|
||||
# Changelog
|
||||
|
||||
## v1.62.1 - 2023-03-15
|
||||
|
||||
[See commits](https://github.com/rclone/rclone/compare/v1.62.0...v1.62.1)
|
||||
|
||||
* Bug Fixes
|
||||
* docker: Add missing fuse3 dependency (cycneuramus)
|
||||
* build: Update release docs to be more careful with the tag (Nick Craig-Wood)
|
||||
* build: Set Github release to draft while uploading binaries (Nick Craig-Wood)
|
||||
|
||||
## v1.62.0 - 2023-03-14
|
||||
|
||||
[See commits](https://github.com/rclone/rclone/compare/v1.61.0...v1.62.0)
|
||||
|
||||
* New Features
|
||||
* accounting: Make checkers show what they are doing (Nick Craig-Wood)
|
||||
* authorize: Add support for custom templates (Hunter Wittenborn)
|
||||
* build
|
||||
* Update to go1.20 (Nick Craig-Wood, Anagh Kumar Baranwal)
|
||||
* Add winget releaser workflow (Ryan Caezar Itang)
|
||||
* Add dependabot (Ryan Caezar Itang)
|
||||
* doc updates (albertony, Bryan Kaplan, Gerard Bosch, IMTheNachoMan, Justin Winokur, Manoj Ghosh, Nick Craig-Wood, Ole Frost, Peter Brunner, piyushgarg, Ryan Caezar Itang, Simmon Li, ToBeFree)
|
||||
* filter: Emit INFO message when can't work out directory filters (Nick Craig-Wood)
|
||||
* fs
|
||||
* Added multiple ca certificate support. (alankrit)
|
||||
* Add `--max-delete-size` a delete size threshold (Leandro Sacchet)
|
||||
* fspath: Allow the symbols `@` and `+` in remote names (albertony)
|
||||
* lib/terminal: Enable windows console virtual terminal sequences processing (ANSI/VT100 colors) (albertony)
|
||||
* move: If `--check-first` and `--order-by` are set then delete with perfect ordering (Nick Craig-Wood)
|
||||
* serve http: Support `--auth-proxy` (Matthias Baur)
|
||||
* Bug Fixes
|
||||
* accounting
|
||||
* Avoid negative ETA values for very slow speeds (albertony)
|
||||
* Limit length of ETA string (albertony)
|
||||
* Show human readable elapsed time when longer than a day (albertony)
|
||||
* all: Apply codeql fixes (Aaron Gokaslan)
|
||||
* build
|
||||
* Fix condition for manual workflow run (albertony)
|
||||
* Fix building for ARMv5 and ARMv6 (albertony)
|
||||
* selfupdate: Consider ARM version
|
||||
* install.sh: fix ARMv6 download
|
||||
* version: Report ARM version
|
||||
* deletefile: Return error code 4 if file does not exist (Nick Craig-Wood)
|
||||
* docker: Fix volume plugin does not remount volume on docker restart (logopk)
|
||||
* fs: Fix race conditions in `--max-delete` and `--max-delete-size` (Nick Craig-Wood)
|
||||
* lib/oauthutil: Handle fatal errors better (Alex Chen)
|
||||
* mount2: Fix `--allow-non-empty` (Nick Craig-Wood)
|
||||
* operations: Fix concurrency: use `--checkers` unless transferring files (Nick Craig-Wood)
|
||||
* serve ftp: Fix timestamps older than 1 year in listings (Nick Craig-Wood)
|
||||
* sync: Fix concurrency: use `--checkers` unless transferring files (Nick Craig-Wood)
|
||||
* tree
|
||||
* Fix nil pointer exception on stat failure (Nick Craig-Wood)
|
||||
* Fix colored output on windows (albertony)
|
||||
* Fix display of files with illegal Windows file system names (Nick Craig-Wood)
|
||||
* Mount
|
||||
* Fix creating and renaming files on case insensitive backends (Nick Craig-Wood)
|
||||
* Do not treat `\\?\` prefixed paths as network share paths on windows (albertony)
|
||||
* Fix check for empty mount point on Linux (Nick Craig-Wood)
|
||||
* Fix `--allow-non-empty` (Nick Craig-Wood)
|
||||
* Avoid incorrect or premature overlap check on windows (albertony)
|
||||
* Update to fuse3 after bazil.org/fuse update (Nick Craig-Wood)
|
||||
* VFS
|
||||
* Make uploaded files retain modtime with non-modtime backends (Nick Craig-Wood)
|
||||
* Fix incorrect modtime on fs which don't support setting modtime (Nick Craig-Wood)
|
||||
* Fix rename of directory containing files to be uploaded (Nick Craig-Wood)
|
||||
* Local
|
||||
* Fix `%!w(<nil>)` in "failed to read directory" error (Marks Polakovs)
|
||||
* Fix exclusion of dangling symlinks with -L/--copy-links (Nick Craig-Wood)
|
||||
* Crypt
|
||||
* Obey `--ignore-checksum` (Nick Craig-Wood)
|
||||
* Fix for unencrypted directory names on case insensitive remotes (Ole Frost)
|
||||
* Azure Blob
|
||||
* Remove workarounds for SDK bugs after v0.6.1 update (Nick Craig-Wood)
|
||||
* B2
|
||||
* Fix uploading files bigger than 1TiB (Nick Craig-Wood)
|
||||
* Drive
|
||||
* Note that `--drive-acknowledge-abuse` needs SA Manager permission (Nick Craig-Wood)
|
||||
* Make `--drive-stop-on-upload-limit` to respond to storageQuotaExceeded (Ninh Pham)
|
||||
* FTP
|
||||
* Retry 426 errors (Nick Craig-Wood)
|
||||
* Retry errors when initiating downloads (Nick Craig-Wood)
|
||||
* Revert to upstream `github.com/jlaffaye/ftp` now fix is merged (Nick Craig-Wood)
|
||||
* Google Cloud Storage
|
||||
* Add `--gcs-env-auth` to pick up IAM credentials from env/instance (Peter Brunner)
|
||||
* Mega
|
||||
* Add `--mega-use-https` flag (NodudeWasTaken)
|
||||
* Onedrive
|
||||
* Default onedrive personal to QuickXorHash as Microsoft is removing SHA1 (Nick Craig-Wood)
|
||||
* Add `--onedrive-hash-type` to change the hash in use (Nick Craig-Wood)
|
||||
* Improve speed of QuickXorHash (LXY)
|
||||
* Oracle Object Storage
|
||||
* Speed up operations by using S3 pacer and setting minsleep to 10ms (Manoj Ghosh)
|
||||
* Expose the `storage_tier` option in config (Manoj Ghosh)
|
||||
* Bring your own encryption keys (Manoj Ghosh)
|
||||
* S3
|
||||
* Check multipart upload ETag when `--s3-no-head` is in use (Nick Craig-Wood)
|
||||
* Add `--s3-sts-endpoint` to specify STS endpoint (Nick Craig-Wood)
|
||||
* Fix incorrect tier support for StorJ and IDrive when pointing at a file (Ole Frost)
|
||||
* Fix AWS STS failing if `--s3-endpoint` is set (Nick Craig-Wood)
|
||||
* Make purge remove directory markers too (Nick Craig-Wood)
|
||||
* Seafile
|
||||
* Renew library password (Fred)
|
||||
* SFTP
|
||||
* Fix uploads being 65% slower than they should be with crypt (Nick Craig-Wood)
|
||||
* Smb
|
||||
* Allow SPN (service principal name) to be configured (Nick Craig-Wood)
|
||||
* Check smb connection is closed (happyxhw)
|
||||
* Storj
|
||||
* Implement `rclone link` (Kaloyan Raev)
|
||||
* Implement `rclone purge` (Kaloyan Raev)
|
||||
* Update satellite urls and labels (Kaloyan Raev)
|
||||
* WebDAV
|
||||
* Fix interop with davrods server (Nick Craig-Wood)
|
||||
|
||||
## v1.61.1 - 2022-12-23
|
||||
|
||||
[See commits](https://github.com/rclone/rclone/compare/v1.61.0...v1.61.1)
|
||||
|
||||
@@ -20,9 +20,7 @@ rclone config.
|
||||
Use --auth-no-open-browser to prevent rclone to open auth
|
||||
link in default browser automatically.
|
||||
|
||||
Use --template to generate HTML output via a custom Go
|
||||
template. If a blank string is provided as an argument to
|
||||
this flag, the default template is used.
|
||||
Use --template to generate HTML output via a custom Go template. If a blank string is provided as an argument to this flag, the default template is used.
|
||||
|
||||
```
|
||||
rclone authorize [flags]
|
||||
@@ -33,7 +31,7 @@ rclone authorize [flags]
|
||||
```
|
||||
--auth-no-open-browser Do not automatically open auth link in default browser
|
||||
-h, --help help for authorize
|
||||
--template string Use a custom Go template for generating HTML responses
|
||||
--template string The path to a custom Go template for generating HTML responses
|
||||
```
|
||||
|
||||
See the [global flags page](/flags/) for global options not listed here.
|
||||
|
||||
@@ -170,38 +170,59 @@ group "Everyone" will be used to represent others. The user/group can be customi
|
||||
with FUSE options "UserName" and "GroupName",
|
||||
e.g. `-o UserName=user123 -o GroupName="Authenticated Users"`.
|
||||
The permissions on each entry will be set according to [options](#options)
|
||||
`--dir-perms` and `--file-perms`, which takes a value in traditional
|
||||
`--dir-perms` and `--file-perms`, which takes a value in traditional Unix
|
||||
[numeric notation](https://en.wikipedia.org/wiki/File-system_permissions#Numeric_notation).
|
||||
|
||||
The default permissions corresponds to `--file-perms 0666 --dir-perms 0777`,
|
||||
i.e. read and write permissions to everyone. This means you will not be able
|
||||
to start any programs from the mount. To be able to do that you must add
|
||||
execute permissions, e.g. `--file-perms 0777 --dir-perms 0777` to add it
|
||||
to everyone. If the program needs to write files, chances are you will have
|
||||
to enable [VFS File Caching](#vfs-file-caching) as well (see also [limitations](#limitations)).
|
||||
to everyone. If the program needs to write files, chances are you will
|
||||
have to enable [VFS File Caching](#vfs-file-caching) as well (see also
|
||||
[limitations](#limitations)). Note that the default write permission have
|
||||
some restrictions for accounts other than the owner, specifically it lacks
|
||||
the "write extended attributes", as explained next.
|
||||
|
||||
Note that the mapping of permissions is not always trivial, and the result
|
||||
you see in Windows Explorer may not be exactly like you expected.
|
||||
For example, when setting a value that includes write access, this will be
|
||||
mapped to individual permissions "write attributes", "write data" and "append data",
|
||||
but not "write extended attributes". Windows will then show this as basic
|
||||
permission "Special" instead of "Write", because "Write" includes the
|
||||
"write extended attributes" permission.
|
||||
The mapping of permissions is not always trivial, and the result you see in
|
||||
Windows Explorer may not be exactly like you expected. For example, when setting
|
||||
a value that includes write access for the group or others scope, this will be
|
||||
mapped to individual permissions "write attributes", "write data" and
|
||||
"append data", but not "write extended attributes". Windows will then show this
|
||||
as basic permission "Special" instead of "Write", because "Write" also covers
|
||||
the "write extended attributes" permission. When setting digit 0 for group or
|
||||
others, to indicate no permissions, they will still get individual permissions
|
||||
"read attributes", "read extended attributes" and "read permissions". This is
|
||||
done for compatibility reasons, e.g. to allow users without additional
|
||||
permissions to be able to read basic metadata about files like in Unix.
|
||||
|
||||
If you set POSIX permissions for only allowing access to the owner, using
|
||||
`--file-perms 0600 --dir-perms 0700`, the user group and the built-in "Everyone"
|
||||
group will still be given some special permissions, such as "read attributes"
|
||||
and "read permissions", in Windows. This is done for compatibility reasons,
|
||||
e.g. to allow users without additional permissions to be able to read basic
|
||||
metadata about files like in UNIX. One case that may arise is that other programs
|
||||
(incorrectly) interprets this as the file being accessible by everyone. For example
|
||||
an SSH client may warn about "unprotected private key file".
|
||||
|
||||
WinFsp 2021 (version 1.9) introduces a new FUSE option "FileSecurity",
|
||||
WinFsp 2021 (version 1.9) introduced a new FUSE option "FileSecurity",
|
||||
that allows the complete specification of file security descriptors using
|
||||
[SDDL](https://docs.microsoft.com/en-us/windows/win32/secauthz/security-descriptor-string-format).
|
||||
With this you can work around issues such as the mentioned "unprotected private key file"
|
||||
by specifying `-o FileSecurity="D:P(A;;FA;;;OW)"`, for file all access (FA) to the owner (OW).
|
||||
With this you get detailed control of the resulting permissions, compared
|
||||
to use of the POSIX permissions described above, and no additional permissions
|
||||
will be added automatically for compatibility with Unix. Some example use
|
||||
cases will following.
|
||||
|
||||
If you set POSIX permissions for only allowing access to the owner,
|
||||
using `--file-perms 0600 --dir-perms 0700`, the user group and the built-in
|
||||
"Everyone" group will still be given some special permissions, as described
|
||||
above. Some programs may then (incorrectly) interpret this as the file being
|
||||
accessible by everyone, for example an SSH client may warn about "unprotected
|
||||
private key file". You can work around this by specifying
|
||||
`-o FileSecurity="D:P(A;;FA;;;OW)"`, which sets file all access (FA) to the
|
||||
owner (OW), and nothing else.
|
||||
|
||||
When setting write permissions then, except for the owner, this does not
|
||||
include the "write extended attributes" permission, as mentioned above.
|
||||
This may prevent applications from writing to files, giving permission denied
|
||||
error instead. To set working write permissions for the built-in "Everyone"
|
||||
group, similar to what it gets by default but with the addition of the
|
||||
"write extended attributes", you can specify
|
||||
`-o FileSecurity="D:P(A;;FRFW;;;WD)"`, which sets file read (FR) and file
|
||||
write (FW) to everyone (WD). If file execute (FX) is also needed, then change
|
||||
to `-o FileSecurity="D:P(A;;FRFWFX;;;WD)"`, or set file all access (FA) to
|
||||
get full access permissions, including delete, with
|
||||
`-o FileSecurity="D:P(A;;FA;;;WD)"`.
|
||||
|
||||
### Windows caveats
|
||||
|
||||
@@ -230,14 +251,58 @@ processes as the SYSTEM account. Another alternative is to run the mount
|
||||
command from a Windows Scheduled Task, or a Windows Service, configured
|
||||
to run as the SYSTEM account. A third alternative is to use the
|
||||
[WinFsp.Launcher infrastructure](https://github.com/winfsp/winfsp/wiki/WinFsp-Service-Architecture)).
|
||||
Read more in the [install documentation](https://rclone.org/install/).
|
||||
Note that when running rclone as another user, it will not use
|
||||
the configuration file from your profile unless you tell it to
|
||||
with the [`--config`](https://rclone.org/docs/#config-config-file) option.
|
||||
Read more in the [install documentation](https://rclone.org/install/).
|
||||
Note also that it is now the SYSTEM account that will have the owner
|
||||
permissions, and other accounts will have permissions according to the
|
||||
group or others scopes. As mentioned above, these will then not get the
|
||||
"write extended attributes" permission, and this may prevent writing to
|
||||
files. You can work around this with the FileSecurity option, see
|
||||
example above.
|
||||
|
||||
Note that mapping to a directory path, instead of a drive letter,
|
||||
does not suffer from the same limitations.
|
||||
|
||||
## Mounting on macOS
|
||||
|
||||
Mounting on macOS can be done either via [macFUSE](https://osxfuse.github.io/)
|
||||
(also known as osxfuse) or [FUSE-T](https://www.fuse-t.org/). macFUSE is a traditional
|
||||
FUSE driver utilizing a macOS kernel extension (kext). FUSE-T is an alternative FUSE system
|
||||
which "mounts" via an NFSv4 local server.
|
||||
|
||||
### FUSE-T Limitations, Caveats, and Notes
|
||||
|
||||
There are some limitations, caveats, and notes about how it works. These are current as
|
||||
of FUSE-T version 1.0.14.
|
||||
|
||||
#### ModTime update on read
|
||||
|
||||
As per the [FUSE-T wiki](https://github.com/macos-fuse-t/fuse-t/wiki#caveats):
|
||||
|
||||
> File access and modification times cannot be set separately as it seems to be an
|
||||
> issue with the NFS client which always modifies both. Can be reproduced with
|
||||
> 'touch -m' and 'touch -a' commands
|
||||
|
||||
This means that viewing files with various tools, notably macOS Finder, will cause rlcone
|
||||
to update the modification time of the file. This may make rclone upload a full new copy
|
||||
of the file.
|
||||
|
||||
#### Unicode Normalization
|
||||
|
||||
Rclone includes flags for unicode normalization with macFUSE that should be updated
|
||||
for FUSE-T. See [this forum post](https://forum.rclone.org/t/some-unicode-forms-break-mount-on-macos-with-fuse-t/36403)
|
||||
and [FUSE-T issue #16](https://github.com/macos-fuse-t/fuse-t/issues/16). The following
|
||||
flag should be added to the `rclone mount` command.
|
||||
|
||||
-o modules=iconv,from_code=UTF-8,to_code=UTF-8
|
||||
|
||||
#### Read Only mounts
|
||||
|
||||
When mounting with `--read-only`, attempts to write to files will fail *silently* as
|
||||
opposed to with a clear warning as in macFUSE.
|
||||
|
||||
## Limitations
|
||||
|
||||
Without the use of `--vfs-cache-mode` this can only write files
|
||||
|
||||
@@ -516,7 +516,7 @@ password or public-key is changed the cache will need to expire (which takes 5 m
|
||||
before it takes effect.
|
||||
|
||||
This can be used to build general purpose proxies to any kind of
|
||||
backend that rclone supports.
|
||||
backend that rclone supports.
|
||||
|
||||
|
||||
```
|
||||
|
||||
@@ -28,6 +28,30 @@ supported hash on the backend or you can use a named hash such as
|
||||
"MD5" or "SHA-1". Use the [hashsum](/commands/rclone_hashsum/) command
|
||||
to see the full list.
|
||||
|
||||
## Access WebDAV on Windows
|
||||
WebDAV shared folder can be mapped as a drive on Windows, however the default settings prevent it.
|
||||
Windows will fail to connect to the server using insecure Basic authentication.
|
||||
It will not even display any login dialog. Windows requires SSL / HTTPS connection to be used with Basic.
|
||||
If you try to connect via Add Network Location Wizard you will get the following error:
|
||||
"The folder you entered does not appear to be valid. Please choose another".
|
||||
However, you still can connect if you set the following registry key on a client machine:
|
||||
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters\BasicAuthLevel to 2.
|
||||
The BasicAuthLevel can be set to the following values:
|
||||
0 - Basic authentication disabled
|
||||
1 - Basic authentication enabled for SSL connections only
|
||||
2 - Basic authentication enabled for SSL connections and for non-SSL connections
|
||||
If required, increase the FileSizeLimitInBytes to a higher value.
|
||||
Navigate to the Services interface, then restart the WebClient service.
|
||||
|
||||
## Access Office applications on WebDAV
|
||||
Navigate to following registry HKEY_CURRENT_USER\Software\Microsoft\Office\[14.0/15.0/16.0]\Common\Internet
|
||||
Create a new DWORD BasicAuthLevel with value 2.
|
||||
0 - Basic authentication disabled
|
||||
1 - Basic authentication enabled for SSL connections only
|
||||
2 - Basic authentication enabled for SSL and for non-SSL connections
|
||||
|
||||
https://learn.microsoft.com/en-us/office/troubleshoot/powerpoint/office-opens-blank-from-sharepoint
|
||||
|
||||
|
||||
## Server options
|
||||
|
||||
|
||||
@@ -455,7 +455,6 @@ Properties:
|
||||
- "off"
|
||||
- Don't encrypt the file names.
|
||||
- Adds a ".bin" extension only.
|
||||
- May cause problems on [case insensitive](/overview/#case-insensitive) [storage systems](/overview/#features) like OneDrive, Dropbox, Windows, OSX and SMB.
|
||||
|
||||
#### --crypt-directory-name-encryption
|
||||
|
||||
@@ -474,7 +473,6 @@ Properties:
|
||||
- Encrypt directory names.
|
||||
- "false"
|
||||
- Don't encrypt directory names, leave them intact.
|
||||
- May cause problems on [case insensitive](/overview/#case-insensitive) [storage systems](/overview/#features) like OneDrive, Dropbox, Windows, OSX and SMB.
|
||||
|
||||
#### --crypt-password
|
||||
|
||||
|
||||
@@ -789,6 +789,12 @@ interfere with checking.
|
||||
It can also be useful to ensure perfect ordering when using
|
||||
`--order-by`.
|
||||
|
||||
If both `--check-first` and `--order-by` are set when doing `rclone move`
|
||||
then rclone will use the transfer thread to delete source files which
|
||||
don't need transferring. This will enable perfect ordering of the
|
||||
transfers and deletes but will cause the transfer stats to have more
|
||||
items in than expected.
|
||||
|
||||
Using this flag can use more memory as it effectively sets
|
||||
`--max-backlog` to infinite. This means that all the info on the
|
||||
objects to transfer is held in memory before the transfers start.
|
||||
@@ -1334,6 +1340,14 @@ This tells rclone not to delete more than N files. If that limit is
|
||||
exceeded then a fatal error will be generated and rclone will stop the
|
||||
operation in progress.
|
||||
|
||||
### --max-delete-size=SIZE ###
|
||||
|
||||
Rclone will stop deleting files when the total size of deletions has
|
||||
reached the size specified. It defaults to off.
|
||||
|
||||
If that limit is exceeded then a fatal error will be generated and
|
||||
rclone will stop the operation in progress.
|
||||
|
||||
### --max-depth=N ###
|
||||
|
||||
This modifies the recursion depth for all the commands except purge.
|
||||
|
||||
@@ -988,6 +988,10 @@ as malware or spam and cannot be downloaded" with the error code
|
||||
indicate you acknowledge the risks of downloading the file and rclone
|
||||
will download it anyway.
|
||||
|
||||
Note that if you are using service account it will need Manager
|
||||
permission (not Content Manager) to for this flag to work. If the SA
|
||||
does not have the right permission, Google will just ignore the flag.
|
||||
|
||||
Properties:
|
||||
|
||||
- Config: acknowledge_abuse
|
||||
@@ -1362,9 +1366,9 @@ This takes an optional directory to trash which make this easier to
|
||||
use via the API.
|
||||
|
||||
rclone backend untrash drive:directory
|
||||
rclone backend -i untrash drive:directory subdir
|
||||
rclone backend --interactive untrash drive:directory subdir
|
||||
|
||||
Use the -i flag to see what would be restored before restoring it.
|
||||
Use the --interactive/-i or --dry-run flag to see what would be restored before restoring it.
|
||||
|
||||
Result:
|
||||
|
||||
@@ -1398,7 +1402,7 @@ component will be used as the file name.
|
||||
If the destination is a drive backend then server-side copying will be
|
||||
attempted if possible.
|
||||
|
||||
Use the -i flag to see what would be copied before copying.
|
||||
Use the --interactive/-i or --dry-run flag to see what would be copied before copying.
|
||||
|
||||
|
||||
### exportformats
|
||||
|
||||
@@ -20,7 +20,7 @@ These flags are available for every command.
|
||||
--buffer-size SizeSuffix In memory buffer size when reading files for each --transfer (default 16Mi)
|
||||
--bwlimit BwTimetable Bandwidth limit in KiB/s, or use suffix B|K|M|G|T|P or a full timetable
|
||||
--bwlimit-file BwTimetable Bandwidth limit per file in KiB/s, or use suffix B|K|M|G|T|P or a full timetable
|
||||
--ca-cert string CA certificate used to verify servers
|
||||
--ca-cert stringArray CA certificate used to verify servers
|
||||
--cache-dir string Directory rclone will use for caching (default "$HOME/.cache/rclone")
|
||||
--check-first Do all the checks before starting transfers
|
||||
--checkers int Number of checkers to run in parallel (default 8)
|
||||
@@ -82,6 +82,7 @@ These flags are available for every command.
|
||||
--max-age Duration Only transfer files younger than this in s or suffix ms|s|m|h|d|w|M|y (default off)
|
||||
--max-backlog int Maximum number of objects in sync or check backlog (default 10000)
|
||||
--max-delete int When synchronizing, limit the number of deletes (default -1)
|
||||
--max-delete-size SizeSuffix When synchronizing, limit the total size of deletes (default off)
|
||||
--max-depth int If set limits the recursion depth to this (default -1)
|
||||
--max-duration Duration Maximum duration rclone will transfer data for (default 0s)
|
||||
--max-size SizeSuffix Only transfer files smaller than this in KiB or suffix B|K|M|G|T|P (default off)
|
||||
@@ -170,7 +171,7 @@ These flags are available for every command.
|
||||
--use-json-log Use json log format
|
||||
--use-mmap Use mmap allocator (see docs)
|
||||
--use-server-modtime Use server modified time instead of object metadata
|
||||
--user-agent string Set the user-agent to a specified string (default "rclone/v1.61.0")
|
||||
--user-agent string Set the user-agent to a specified string (default "rclone/v1.62.1")
|
||||
-v, --verbose count Print lots more stuff (repeat for more)
|
||||
```
|
||||
|
||||
@@ -387,6 +388,7 @@ and may be set in the config file.
|
||||
--gcs-decompress If set this will decompress gzip encoded objects
|
||||
--gcs-encoding MultiEncoder The encoding for the backend (default Slash,CrLf,InvalidUtf8,Dot)
|
||||
--gcs-endpoint string Endpoint for the service
|
||||
--gcs-env-auth Get GCP IAM credentials from runtime (environment variables or instance meta data if no env vars)
|
||||
--gcs-location string Location for the newly created buckets
|
||||
--gcs-no-check-bucket If set, don't attempt to check the bucket exists or create it
|
||||
--gcs-object-acl string Access Control List for new objects
|
||||
@@ -475,6 +477,7 @@ and may be set in the config file.
|
||||
--mega-encoding MultiEncoder The encoding for the backend (default Slash,InvalidUtf8,Dot)
|
||||
--mega-hard-delete Delete files permanently rather than putting them into the trash
|
||||
--mega-pass string Password (obscured)
|
||||
--mega-use-https Use HTTPS for transfers
|
||||
--mega-user string User name
|
||||
--netstorage-account string Set the NetStorage account name
|
||||
--netstorage-host string Domain+path of NetStorage host to connect to
|
||||
@@ -490,6 +493,7 @@ and may be set in the config file.
|
||||
--onedrive-drive-type string The type of the drive (personal | business | documentLibrary)
|
||||
--onedrive-encoding MultiEncoder The encoding for the backend (default Slash,LtGt,DoubleQuote,Colon,Question,Asterisk,Pipe,BackSlash,Del,Ctl,LeftSpace,LeftTilde,RightSpace,RightPeriod,InvalidUtf8,Dot)
|
||||
--onedrive-expose-onenote-files Set to make OneNote files show up in directory listings
|
||||
--onedrive-hash-type string Specify the hash in use for the backend (default "auto")
|
||||
--onedrive-link-password string Set the password for links created by the link command
|
||||
--onedrive-link-scope string Set the scope of the links created by the link command (default "anonymous")
|
||||
--onedrive-link-type string Set the type of the links created by the link command (default "view")
|
||||
@@ -514,6 +518,12 @@ and may be set in the config file.
|
||||
--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-sse-customer-algorithm string If using SSE-C, the optional header that specifies "AES256" as the encryption algorithm
|
||||
--oos-sse-customer-key string To use SSE-C, the optional header that specifies the base64-encoded 256-bit encryption key to use to
|
||||
--oos-sse-customer-key-file string To use SSE-C, a file containing the base64-encoded string of the AES-256 encryption key associated
|
||||
--oos-sse-customer-key-sha256 string If using SSE-C, The optional header that specifies the base64-encoded SHA256 hash of the encryption
|
||||
--oos-sse-kms-key-id string if using using your own master key in vault, this header specifies the
|
||||
--oos-storage-tier string The storage class to use when storing new objects in storage. https://docs.oracle.com/en-us/iaas/Content/Object/Concepts/understandingstoragetiers.htm (default "Standard")
|
||||
--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)
|
||||
@@ -582,6 +592,7 @@ and may be set in the config file.
|
||||
--s3-sse-customer-key-md5 string If using SSE-C you may provide the secret encryption key MD5 checksum (optional)
|
||||
--s3-sse-kms-key-id string If using KMS ID you must provide the ARN of Key
|
||||
--s3-storage-class string The storage class to use when storing new objects in S3
|
||||
--s3-sts-endpoint string Endpoint for STS
|
||||
--s3-upload-concurrency int Concurrency for multipart uploads (default 4)
|
||||
--s3-upload-cutoff SizeSuffix Cutoff for switching to chunked upload (default 200Mi)
|
||||
--s3-use-accelerate-endpoint If true use the AWS S3 accelerated endpoint
|
||||
@@ -647,6 +658,7 @@ and may be set in the config file.
|
||||
--smb-idle-timeout Duration Max time before closing idle connections (default 1m0s)
|
||||
--smb-pass string SMB password (obscured)
|
||||
--smb-port int SMB port number (default 445)
|
||||
--smb-spn string Service principal name
|
||||
--smb-user string SMB username (default "$USER")
|
||||
--storj-access-grant string Access grant
|
||||
--storj-api-key string API key
|
||||
|
||||
@@ -552,6 +552,24 @@ Properties:
|
||||
- "DURABLE_REDUCED_AVAILABILITY"
|
||||
- Durable reduced availability storage class
|
||||
|
||||
#### --gcs-env-auth
|
||||
|
||||
Get GCP IAM credentials from runtime (environment variables or instance meta data if no env vars).
|
||||
|
||||
Only applies if service_account_file and service_account_credentials is blank.
|
||||
|
||||
Properties:
|
||||
|
||||
- Config: env_auth
|
||||
- Env Var: RCLONE_GCS_ENV_AUTH
|
||||
- Type: bool
|
||||
- Default: false
|
||||
- Examples:
|
||||
- "false"
|
||||
- Enter credentials in the next step.
|
||||
- "true"
|
||||
- Get GCP IAM credentials from the environment (env vars or IAM).
|
||||
|
||||
### Advanced options
|
||||
|
||||
Here are the Advanced options specific to google cloud storage (Google Cloud Storage (this is not Google Drive)).
|
||||
|
||||
@@ -142,6 +142,14 @@ If you are planning to use the [rclone mount](/commands/rclone_mount/)
|
||||
feature then you will need to install the third party utility
|
||||
[WinFsp](https://winfsp.dev/) also.
|
||||
|
||||
### Windows package manager (Winget) {#windows-chocolatey}
|
||||
|
||||
[Winget](https://learn.microsoft.com/en-us/windows/package-manager/) comes pre-installed with the latest versions of Windows. If not, update the [App Installer](https://www.microsoft.com/p/app-installer/9nblggh4nns1) package from the Microsoft store.
|
||||
|
||||
```
|
||||
winget install Rclone.Rclone
|
||||
```
|
||||
|
||||
### Chocolatey package manager {#windows-chocolatey}
|
||||
|
||||
Make sure you have [Choco](https://chocolatey.org/) installed
|
||||
|
||||
@@ -252,6 +252,23 @@ Properties:
|
||||
- Type: bool
|
||||
- Default: false
|
||||
|
||||
#### --mega-use-https
|
||||
|
||||
Use HTTPS for transfers.
|
||||
|
||||
MEGA uses plain text HTTP connections by default.
|
||||
Some ISPs throttle HTTP connections, this causes transfers to become very slow.
|
||||
Enabling this will force MEGA to use HTTPS for all transfers.
|
||||
HTTPS is normally not necesary since all data is already encrypted anyway.
|
||||
Enabling it will increase CPU usage and add network overhead.
|
||||
|
||||
Properties:
|
||||
|
||||
- Config: use_https
|
||||
- Env Var: RCLONE_MEGA_USE_HTTPS
|
||||
- Type: bool
|
||||
- Default: false
|
||||
|
||||
#### --mega-encoding
|
||||
|
||||
The encoding for the backend.
|
||||
|
||||
@@ -526,6 +526,48 @@ Properties:
|
||||
- Type: string
|
||||
- Required: false
|
||||
|
||||
#### --onedrive-hash-type
|
||||
|
||||
Specify the hash in use for the backend.
|
||||
|
||||
This specifies the hash type in use. If set to "auto" it will use the
|
||||
default hash which is is QuickXorHash.
|
||||
|
||||
Before rclone 1.62 an SHA1 hash was used by default for Onedrive
|
||||
Personal. For 1.62 and later the default is to use a QuickXorHash for
|
||||
all onedrive types. If an SHA1 hash is desired then set this option
|
||||
accordingly.
|
||||
|
||||
From July 2023 QuickXorHash will be the only available hash for
|
||||
both OneDrive for Business and OneDriver Personal.
|
||||
|
||||
This can be set to "none" to not use any hashes.
|
||||
|
||||
If the hash requested does not exist on the object, it will be
|
||||
returned as an empty string which is treated as a missing hash by
|
||||
rclone.
|
||||
|
||||
|
||||
Properties:
|
||||
|
||||
- Config: hash_type
|
||||
- Env Var: RCLONE_ONEDRIVE_HASH_TYPE
|
||||
- Type: string
|
||||
- Default: "auto"
|
||||
- Examples:
|
||||
- "auto"
|
||||
- Rclone chooses the best hash
|
||||
- "quickxor"
|
||||
- QuickXor
|
||||
- "sha1"
|
||||
- SHA1
|
||||
- "sha256"
|
||||
- SHA256
|
||||
- "crc32"
|
||||
- CRC32
|
||||
- "none"
|
||||
- None - don't use any hashes
|
||||
|
||||
#### --onedrive-encoding
|
||||
|
||||
The encoding for the backend.
|
||||
|
||||
@@ -1458,6 +1458,8 @@ This takes the following parameters:
|
||||
- remote - a path within that remote e.g. "dir"
|
||||
- each part in body represents a file to be uploaded
|
||||
|
||||
See the [uploadfile](/commands/rclone_uploadfile/) command for more information on the above.
|
||||
|
||||
**Authentication is required for this call.**
|
||||
|
||||
### options/blocks: List all the option blocks {#options-blocks}
|
||||
|
||||
@@ -19,7 +19,7 @@ The S3 backend can be used with a number of different providers:
|
||||
{{< provider name="Dreamhost" home="https://www.dreamhost.com/cloud/storage/" config="/s3/#dreamhost" >}}
|
||||
{{< provider name="Huawei OBS" home="https://www.huaweicloud.com/intl/en-us/product/obs.html" config="/s3/#huawei-obs" >}}
|
||||
{{< 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/" config="/s3/#idrive-e2" >}}
|
||||
{{< 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="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" >}}
|
||||
@@ -1474,7 +1474,7 @@ Properties:
|
||||
|
||||
#### --s3-endpoint
|
||||
|
||||
Endpoint of the Shared Gateway.
|
||||
Endpoint for Storj Gateway.
|
||||
|
||||
Properties:
|
||||
|
||||
@@ -1484,12 +1484,8 @@ Properties:
|
||||
- Type: string
|
||||
- Required: false
|
||||
- Examples:
|
||||
- "gateway.eu1.storjshare.io"
|
||||
- EU1 Shared Gateway
|
||||
- "gateway.us1.storjshare.io"
|
||||
- US1 Shared Gateway
|
||||
- "gateway.ap1.storjshare.io"
|
||||
- Asia-Pacific Shared Gateway
|
||||
- "gateway.storjshare.io"
|
||||
- Global Hosted Gateway
|
||||
|
||||
#### --s3-endpoint
|
||||
|
||||
@@ -2967,6 +2963,20 @@ Properties:
|
||||
- Type: bool
|
||||
- Default: false
|
||||
|
||||
#### --s3-sts-endpoint
|
||||
|
||||
Endpoint for STS.
|
||||
|
||||
Leave blank if using AWS to use the default endpoint for the region.
|
||||
|
||||
Properties:
|
||||
|
||||
- Config: sts_endpoint
|
||||
- Env Var: RCLONE_S3_STS_ENDPOINT
|
||||
- Provider: AWS
|
||||
- Type: string
|
||||
- Required: false
|
||||
|
||||
### Metadata
|
||||
|
||||
User metadata is stored as x-amz-meta- keys. S3 metadata keys are case insensitive and are always returned in lower case.
|
||||
@@ -3017,9 +3027,9 @@ Usage Examples:
|
||||
rclone backend restore s3:bucket/path/to/directory [-o priority=PRIORITY] [-o lifetime=DAYS]
|
||||
rclone backend restore s3:bucket [-o priority=PRIORITY] [-o lifetime=DAYS]
|
||||
|
||||
This flag also obeys the filters. Test first with -i/--interactive or --dry-run flags
|
||||
This flag also obeys the filters. Test first with --interactive/-i or --dry-run flags
|
||||
|
||||
rclone -i backend restore --include "*.txt" s3:bucket/path -o priority=Standard
|
||||
rclone --interactive backend restore --include "*.txt" s3:bucket/path -o priority=Standard
|
||||
|
||||
All the objects shown will be marked for restore, then
|
||||
|
||||
@@ -3096,8 +3106,8 @@ Remove unfinished multipart uploads.
|
||||
This command removes unfinished multipart uploads of age greater than
|
||||
max-age which defaults to 24 hours.
|
||||
|
||||
Note that you can use -i/--dry-run with this command to see what it
|
||||
would do.
|
||||
Note that you can use --interactive/-i or --dry-run with this command to see what
|
||||
it would do.
|
||||
|
||||
rclone backend cleanup s3:bucket/path/to/object
|
||||
rclone backend cleanup -o max-age=7w s3:bucket/path/to/object
|
||||
@@ -3118,8 +3128,8 @@ Remove old versions of files.
|
||||
This command removes any old hidden versions of files
|
||||
on a versions enabled bucket.
|
||||
|
||||
Note that you can use -i/--dry-run with this command to see what it
|
||||
would do.
|
||||
Note that you can use --interactive/-i or --dry-run with this command to see what
|
||||
it would do.
|
||||
|
||||
rclone backend cleanup-hidden s3:bucket/path/to/dir
|
||||
|
||||
|
||||
@@ -171,6 +171,25 @@ Properties:
|
||||
- Type: string
|
||||
- Default: "WORKGROUP"
|
||||
|
||||
#### --smb-spn
|
||||
|
||||
Service principal name.
|
||||
|
||||
Rclone presents this name to the server. Some servers use this as further
|
||||
authentication, and it often needs to be set for clusters. For example:
|
||||
|
||||
cifs/remotehost:1020
|
||||
|
||||
Leave blank if not sure.
|
||||
|
||||
|
||||
Properties:
|
||||
|
||||
- Config: spn
|
||||
- Env Var: RCLONE_SMB_SPN
|
||||
- Type: string
|
||||
- Required: false
|
||||
|
||||
### Advanced options
|
||||
|
||||
Here are the Advanced options specific to smb (SMB / CIFS).
|
||||
|
||||
@@ -39,3 +39,14 @@
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header" style="padding: 5px 15px;">
|
||||
Sponsors
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p class="menu">
|
||||
<a href="https://www.idrive.com/e2/?refer=rclone" target="_blank" rel="noopener" aria-label="Visit rclone's sponsor IDrive e2"><img src="/img/logos/idrive_e2.svg" viewBox="0 0 60 55"></a><br />
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1 +1 @@
|
||||
v1.62.0
|
||||
v1.62.1
|
||||
7
docs/static/img/logos/README.md
vendored
Normal file
7
docs/static/img/logos/README.md
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
# Sponsor graphics
|
||||
|
||||
This directory contains graphics from rclone sponsors used with
|
||||
permission.
|
||||
|
||||
The copyright of the files in this directory belongs to the relevant
|
||||
sponsor and does not fall under the MIT licence of rclone.
|
||||
219
docs/static/img/logos/idrive_e2.svg
vendored
Normal file
219
docs/static/img/logos/idrive_e2.svg
vendored
Normal file
@@ -0,0 +1,219 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
version="1.1"
|
||||
id="svg2"
|
||||
xml:space="preserve"
|
||||
viewBox="0 0 473.33334 180"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"><defs
|
||||
id="defs6"><clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath16"><path
|
||||
d="M 0,135 H 355 V 0 H 0 Z"
|
||||
id="path14" /></clipPath></defs><g
|
||||
id="g8"
|
||||
transform="matrix(1.3333333,0,0,-1.3333333,0,180)"><g
|
||||
id="g10"><g
|
||||
id="g12"
|
||||
clip-path="url(#clipPath16)"><g
|
||||
id="g18"
|
||||
transform="translate(268.92,82.6478)"><path
|
||||
d="m 0,0 h -23.528 c 0.539,3.053 2.155,5.208 4.131,6.645 2.155,1.617 5.029,2.156 7.723,2.156 2.873,0 5.568,-0.719 7.723,-2.156 C -2.155,5.388 -0.718,3.233 0,0 m 0.359,10.597 c -3.592,2.873 -8.261,3.771 -12.213,3.771 -5.927,0 -10.417,-1.975 -13.47,-5.208 -2.874,-3.233 -4.31,-7.544 -4.31,-12.034 0,-3.951 1.077,-8.261 3.951,-11.674 2.873,-3.412 7.364,-5.747 13.829,-5.747 5.209,0 9.34,1.437 12.034,3.592 2.873,2.155 4.49,5.029 5.388,7.902 l 0.359,1.078 H 4.849 -0.18 l -0.179,-0.539 c -0.719,-2.335 -1.796,-3.771 -3.592,-5.029 -1.796,-1.077 -4.311,-1.616 -7.903,-1.616 -3.771,0 -6.645,1.257 -8.621,3.233 -1.796,1.796 -2.873,4.131 -3.053,6.825 H 6.466 v 0.898 c 0,7.004 -2.515,11.854 -6.107,14.548"
|
||||
style="fill:#0b73b8;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path20" /></g><g
|
||||
id="g22"
|
||||
transform="translate(304.4813,67.3815)"><path
|
||||
d="m 0,0 h -0.898 -18.858 c 0.539,0.539 1.077,1.257 2.155,2.155 1.796,1.257 4.49,3.053 8.621,5.209 2.335,1.257 4.31,2.514 5.927,4.31 1.616,1.796 2.514,3.951 2.514,7.005 0,2.514 -0.898,5.388 -2.873,7.363 -1.976,2.156 -5.209,3.413 -9.699,3.413 -4.31,0 -7.543,-1.078 -9.878,-3.233 -2.335,-2.155 -3.413,-5.388 -3.413,-9.339 v -0.36 -0.898 h 5.748 v 1.078 c 0,1.796 0.359,3.592 1.437,5.029 1.077,1.437 2.694,2.514 6.286,2.514 2.514,0 4.13,-0.538 5.208,-1.436 1.078,-0.898 1.616,-2.156 1.616,-4.311 0,-1.976 -0.538,-3.053 -1.796,-4.31 -1.436,-1.258 -3.771,-2.694 -7.184,-4.49 -5.029,-2.515 -7.723,-5.029 -9.519,-7.185 -1.616,-2.334 -2.155,-4.49 -2.334,-6.286 v -0.359 l -0.18,-0.898 H 0 Z"
|
||||
style="fill:#0b73b8;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path24" /></g><g
|
||||
id="g26"
|
||||
transform="translate(226.6159,96.099)"><path
|
||||
d="m 0,0 c -0.13,-0.001 -0.273,-0.001 -0.435,-0.001 h -1.023 v 1.696 h 1.087 0.32 0.672 C 0.844,1.661 1.004,1.565 1.132,1.406 1.261,1.277 1.324,1.086 1.324,0.862 1.324,0.67 1.261,0.479 1.164,0.35 1.1,0.222 0.974,0.126 0.78,0.063 0.659,0.033 0.386,0.002 0,0 m 1.676,-1.505 c -0.191,0.224 -0.447,0.384 -0.736,0.576 0.609,0.096 1.055,0.288 1.344,0.608 0.288,0.352 0.447,0.767 0.447,1.279 0,0.384 -0.095,0.737 -0.288,1.055 C 2.22,2.334 1.964,2.558 1.644,2.685 1.324,2.781 0.78,2.845 0.076,2.845 h -0.127 -2.75 v -6.781 h 1.343 v 2.846 h 0.286 c 0.322,0 0.545,-0.031 0.705,-0.095 0.128,-0.033 0.256,-0.127 0.384,-0.256 C 0.045,-1.6 0.3,-1.921 0.653,-2.464 l 0.991,-1.472 h 1.632 l -0.833,1.343 c -0.32,0.513 -0.575,0.896 -0.767,1.088"
|
||||
style="fill:#0b73b8;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path28" /></g><g
|
||||
id="g30"
|
||||
transform="translate(230.2429,91.8113)"><path
|
||||
d="m 0,0 c -0.959,-0.959 -2.271,-1.503 -3.743,-1.503 -1.439,0 -2.782,0.544 -3.741,1.503 -0.961,0.96 -1.536,2.302 -1.536,3.742 0,1.472 0.575,2.783 1.536,3.742 0.959,0.96 2.302,1.568 3.741,1.568 C -2.271,9.052 -0.959,8.444 0,7.484 0.958,6.525 1.567,5.214 1.567,3.742 1.567,2.302 0.958,0.96 0,0 m 0.958,8.444 c -1.213,1.183 -2.878,1.919 -4.701,1.919 -1.823,0 -3.486,-0.736 -4.668,-1.919 -1.216,-1.215 -1.952,-2.879 -1.952,-4.702 0,-1.822 0.736,-3.454 1.952,-4.67 1.182,-1.182 2.845,-1.918 4.668,-1.918 1.823,0 3.488,0.736 4.67,1.918 1.216,1.184 1.952,2.848 1.952,4.67 0,1.823 -0.736,3.487 -1.921,4.702"
|
||||
style="fill:#0b73b8;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path32" /></g><g
|
||||
id="g34"
|
||||
transform="translate(47.2134,103.9356)"><path
|
||||
d="M 0,0 C -0.899,-0.848 -1.347,-1.878 -1.347,-3.091 V -40.434 H 7.758 V 1.273 H 3.269 C 1.988,1.273 0.897,0.85 0,0"
|
||||
style="fill:#0b73b8;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path36" /></g><g
|
||||
id="g38"
|
||||
transform="translate(84.0306,74.1712)"><path
|
||||
d="m 0,0 c -1.968,-2.103 -5.046,-3.154 -9.233,-3.154 h -7.31 v 26.918 h 8.463 c 3.762,0 6.497,-1.092 8.208,-3.273 C 1.923,18.307 2.82,14.871 2.82,10.184 2.82,5.334 1.88,1.94 0,0 m -8.08,31.038 h -12.695 c -1.281,0 -2.372,-0.424 -3.269,-1.274 -0.898,-0.848 -1.347,-1.878 -1.347,-3.091 v -37.342 h 14.875 c 4.188,0 7.31,0.281 9.361,0.848 2.137,0.565 4.147,1.535 6.028,2.909 2.222,1.617 4.017,3.959 5.386,7.032 1.195,2.991 1.795,6.345 1.795,10.064 0,6.951 -1.667,12.204 -5.002,15.761 -3.333,3.396 -8.378,5.093 -15.132,5.093"
|
||||
style="fill:#0b73b8;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path40" /></g><g
|
||||
id="g42"
|
||||
transform="translate(115.8326,95.7523)"><path
|
||||
d="m 0,0 c -2.307,0 -4.552,-0.285 -6.732,-0.849 -2.18,-0.567 -4.083,-1.455 -5.706,-2.667 -1.712,-1.293 -3.058,-3.012 -4.039,-5.152 -0.984,-2.144 -1.475,-4.791 -1.475,-7.943 V -32.25 h 8.976 v 16.608 c 0,2.427 0.598,4.204 1.796,5.337 1.196,1.131 3.034,1.697 5.514,1.697 H 1.283 L 1.283,0 H 0.642 Z"
|
||||
style="fill:#0b73b8;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path44" /></g><g
|
||||
id="g46"
|
||||
transform="translate(124.4934,95.7523)"><path
|
||||
d="m 0,0 h -4.616 v -32.25 h 8.977 v 28.128 c 0,1.131 -0.429,2.101 -1.282,2.91 C 2.222,-0.406 1.196,0 0,0"
|
||||
style="fill:#0b73b8;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path48" /></g><g
|
||||
id="g50"
|
||||
transform="translate(156.7491,95.7523)"><path
|
||||
d="M 0,0 C -2.051,0 -3.422,-0.97 -4.104,-2.91 L -10.13,-22.673 -16.927,0 h -9.49 l 11.926,-32.25 h 9.104 L 6.668,0 Z"
|
||||
style="fill:#0b73b8;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path52" /></g><g
|
||||
id="g54"
|
||||
transform="translate(123.9243,107.504)"><path
|
||||
d="m 0,0 c -2.723,0 -4.929,-2.086 -4.929,-4.661 0,-2.574 2.206,-4.66 4.929,-4.66 2.723,0 4.93,2.086 4.93,4.66 C 4.93,-2.086 2.723,0 0,0"
|
||||
style="fill:#0b73b8;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path56" /></g><g
|
||||
id="g58"
|
||||
transform="translate(213.0013,113.7477)"><path
|
||||
d="m 0,0 c -2.845,4.959 -7.049,8.181 -12.613,9.666 -5.563,1.486 -10.799,0.78 -15.784,-2.064 -4.958,-2.87 -8.18,-7.099 -9.666,-12.662 -0.226,-0.856 -0.403,-1.712 -0.554,-2.543 2.947,1.51 5.866,2.216 8.71,2.09 1.058,2.567 2.87,4.581 5.388,6.067 3.07,1.762 6.343,2.19 9.793,1.283 3.448,-0.931 6.066,-2.919 7.828,-5.991 1.46,-2.517 1.989,-5.135 1.662,-7.905 2.367,-1.309 4.506,-3.449 6.445,-6.368 0.328,0.83 0.628,1.686 0.907,2.593 C 3.574,-10.271 2.894,-4.985 0,0"
|
||||
style="fill:#0b73b8;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path60" /></g><g
|
||||
id="g62"
|
||||
transform="translate(204.4005,78.9464)"><path
|
||||
d="M 0,0 V -0.485 C 0,-0.89 -0.042,-1.173 -0.126,-1.334 h -22.186 c 0.083,-2.506 0.725,-4.365 1.924,-5.577 1.109,-1.294 2.778,-1.94 5.001,-1.94 1.453,0 2.693,0.282 3.718,0.848 0.257,0.08 0.491,0.222 0.707,0.425 0.212,0.201 0.447,0.425 0.704,0.667 0.085,0.242 0.405,0.565 0.963,0.969 0.555,0.404 1.345,0.606 2.372,0.606 h 6.411 c -0.941,-3.393 -2.737,-5.982 -5.386,-7.759 -2.65,-1.86 -5.985,-2.789 -10.003,-2.789 -4.872,0 -8.677,1.495 -11.414,4.487 -2.734,2.909 -4.102,7.072 -4.102,12.488 0,5.171 1.325,9.215 3.975,12.124 2.735,2.99 6.54,4.486 11.413,4.486 5.13,0 9.106,-1.454 11.926,-4.364 C -1.368,10.345 0,6.184 0,0.848 Z m 8.524,13.756 c -0.15,0.302 -0.301,0.604 -0.478,0.881 -0.175,0.327 -0.352,0.63 -0.552,0.906 -1.259,1.913 -2.846,3.424 -4.733,4.532 -1.158,0.705 -2.417,1.208 -3.802,1.56 l -17.118,4.607 c -1.335,0.352 -2.643,0.529 -3.928,0.529 -2.593,0.025 -5.06,-0.63 -7.476,-2.039 -0.227,-0.126 -0.453,-0.277 -0.654,-0.429 -1.158,-0.729 -2.14,-1.535 -2.996,-2.491 -1.586,-1.687 -2.694,-3.752 -3.322,-6.168 l -4.582,-17.118 c -1.083,-3.978 -0.579,-7.779 1.484,-11.354 2.066,-3.599 5.111,-5.941 9.114,-6.998 l 17.143,-4.607 c 3.977,-1.057 7.754,-0.529 11.328,1.535 3.6,2.064 5.941,5.086 7.024,9.063 L 9.557,3.283 c 0.957,3.676 0.629,7.15 -1.033,10.473"
|
||||
style="fill:#0b73b8;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path64" /></g><g
|
||||
id="g66"
|
||||
transform="translate(188.6292,89.6158)"><path
|
||||
d="M 0,0 C -1.882,0 -3.42,-0.566 -4.617,-1.697 -5.816,-2.831 -6.458,-4.447 -6.54,-6.548 H 6.539 C 6.367,-4.365 5.77,-2.749 4.744,-1.697 3.632,-0.566 2.049,0 0,0"
|
||||
style="fill:#0b73b8;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path68" /></g><g
|
||||
id="g70"
|
||||
transform="translate(22.5654,17.21)"><path
|
||||
d="M 0,0 H -2.707 V 6.939 H -9.7 V 0 h -2.718 V 15.641 H -9.7 v -6.51 h 6.993 v 6.51 H 0 Z"
|
||||
style="fill:#0b73b8;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path72" /></g><g
|
||||
id="g74"
|
||||
transform="translate(27.6465,22.9033)"><path
|
||||
d="m 0,0 c 0,-1.196 0.247,-2.133 0.741,-2.809 0.494,-0.677 1.182,-1.015 2.063,-1.015 0.881,0 1.566,0.344 2.057,1.031 0.49,0.688 0.736,1.693 0.736,3.019 C 5.597,1.4 5.344,2.331 4.839,3.019 4.334,3.706 3.648,4.05 2.782,4.05 1.93,4.05 1.253,3.711 0.752,3.035 0.25,2.357 0,1.347 0,0 m -2.61,0.226 c 0,1.138 0.225,2.165 0.676,3.077 0.452,0.914 1.085,1.615 1.902,2.105 C 0.784,5.899 1.722,6.145 2.782,6.145 4.351,6.145 5.624,5.64 6.601,4.63 7.579,3.62 8.106,2.281 8.186,0.612 L 8.196,0 c 0,-1.146 -0.22,-2.17 -0.66,-3.072 C 7.095,-3.975 6.465,-4.673 5.645,-5.167 4.825,-5.661 3.878,-5.908 2.804,-5.908 c -1.64,0 -2.953,0.546 -3.937,1.638 -0.985,1.092 -1.477,2.547 -1.477,4.367 z"
|
||||
style="fill:#0b73b8;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path76" /></g><g
|
||||
id="g78"
|
||||
transform="translate(41.3213,31.6582)"><path
|
||||
d="M 0,0 V -2.825 H 2.052 V -4.759 H 0 v -6.488 c 0,-0.444 0.087,-0.765 0.263,-0.961 0.175,-0.197 0.489,-0.296 0.94,-0.296 0.301,0 0.605,0.036 0.913,0.108 v -2.02 c -0.595,-0.165 -1.167,-0.247 -1.719,-0.247 -2.005,0 -3.007,1.106 -3.007,3.319 v 6.585 h -1.912 v 1.934 h 1.912 l 0,2.825 z"
|
||||
style="fill:#0b73b8;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path80" /></g><g
|
||||
id="g82"
|
||||
transform="translate(59.2715,21.2383)"><path
|
||||
d="m 0,0 c 0,0.687 -0.242,1.218 -0.725,1.59 -0.483,0.372 -1.356,0.748 -2.616,1.128 -1.261,0.38 -2.263,0.802 -3.008,1.267 -1.425,0.896 -2.137,2.063 -2.137,3.502 0,1.261 0.513,2.299 1.541,3.116 1.028,0.816 2.362,1.224 4.002,1.224 1.088,0 2.058,-0.2 2.911,-0.601 C 0.82,10.824 1.489,10.253 1.977,9.513 2.463,8.771 2.707,7.949 2.707,7.047 H 0 c 0,0.816 -0.256,1.456 -0.768,1.917 -0.512,0.463 -1.245,0.693 -2.197,0.693 -0.888,0 -1.577,-0.189 -2.068,-0.569 -0.49,-0.38 -0.736,-0.909 -0.736,-1.59 0,-0.573 0.265,-1.051 0.795,-1.435 C -4.444,5.681 -3.57,5.309 -2.353,4.946 -1.135,4.585 -0.158,4.173 0.58,3.712 1.317,3.249 1.858,2.72 2.202,2.122 2.546,1.523 2.718,0.823 2.718,0.021 c 0,-1.303 -0.5,-2.339 -1.499,-3.11 -0.999,-0.769 -2.354,-1.154 -4.066,-1.154 -1.132,0 -2.172,0.209 -3.12,0.629 -0.95,0.418 -1.687,0.997 -2.213,1.734 -0.527,0.737 -0.79,1.597 -0.79,2.578 h 2.718 c 0,-0.887 0.294,-1.575 0.881,-2.062 0.587,-0.488 1.429,-0.731 2.524,-0.731 0.946,0 1.656,0.192 2.133,0.574 C -0.238,-1.137 0,-0.63 0,0"
|
||||
style="fill:#0b73b8;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path84" /></g><g
|
||||
id="g86"
|
||||
transform="translate(66.9736,26.2227)"><path
|
||||
d="M 0,0 H 1.59 C 2.392,0.007 3.027,0.215 3.497,0.623 3.965,1.031 4.2,1.622 4.2,2.396 4.2,3.141 4.005,3.719 3.615,4.13 3.224,4.542 2.628,4.748 1.826,4.748 1.124,4.748 0.548,4.546 0.097,4.142 -0.354,3.736 -0.58,3.208 -0.58,2.557 h -2.61 c 0,0.801 0.212,1.532 0.639,2.191 0.426,0.659 1.02,1.173 1.783,1.542 0.763,0.368 1.617,0.553 2.562,0.553 1.561,0 2.788,-0.393 3.679,-1.176 C 6.365,4.882 6.811,3.792 6.811,2.396 6.811,1.693 6.586,1.033 6.139,0.413 5.691,-0.206 5.113,-0.673 4.404,-0.988 c 0.86,-0.294 1.513,-0.756 1.961,-1.386 0.447,-0.63 0.671,-1.382 0.671,-2.256 0,-1.403 -0.482,-2.52 -1.445,-3.351 -0.963,-0.832 -2.229,-1.247 -3.797,-1.247 -1.504,0 -2.736,0.402 -3.695,1.204 -0.96,0.801 -1.44,1.869 -1.44,3.201 h 2.611 c 0,-0.688 0.23,-1.246 0.692,-1.676 0.462,-0.43 1.083,-0.645 1.864,-0.645 0.809,0 1.446,0.215 1.912,0.645 0.466,0.43 0.699,1.053 0.699,1.869 0,0.823 -0.244,1.457 -0.731,1.901 -0.487,0.445 -1.21,0.666 -2.17,0.666 l -1.536,0 z"
|
||||
style="fill:#0b73b8;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path88" /></g><g
|
||||
id="g90"
|
||||
transform="translate(94.291,22.3018)"><path
|
||||
d="m 0,0 c -0.158,-1.669 -0.773,-2.971 -1.848,-3.904 -1.074,-0.936 -2.503,-1.403 -4.286,-1.403 -1.246,0 -2.344,0.295 -3.292,0.887 -0.949,0.59 -1.681,1.43 -2.197,2.519 -0.516,1.089 -0.784,2.352 -0.806,3.792 v 1.461 c 0,1.475 0.262,2.775 0.784,3.899 0.523,1.124 1.273,1.991 2.251,2.6 0.977,0.608 2.107,0.913 3.389,0.913 1.726,0 3.115,-0.467 4.168,-1.403 C -0.784,8.428 -0.172,7.104 0,5.393 H -2.707 C -2.836,6.517 -3.164,7.328 -3.69,7.826 -4.216,8.323 -4.988,8.572 -6.005,8.572 -7.187,8.572 -8.094,8.141 -8.728,7.276 -9.362,6.413 -9.686,5.146 -9.7,3.476 V 2.089 c 0,-1.692 0.302,-2.983 0.908,-3.871 0.604,-0.889 1.491,-1.333 2.658,-1.333 1.067,0 1.869,0.24 2.406,0.719 0.538,0.48 0.877,1.279 1.021,2.396 z"
|
||||
style="fill:#0b73b8;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path92" /></g><g
|
||||
id="g94"
|
||||
transform="translate(98.5879,22.9033)"><path
|
||||
d="m 0,0 c 0,-1.196 0.247,-2.133 0.741,-2.809 0.494,-0.677 1.182,-1.015 2.063,-1.015 0.881,0 1.566,0.344 2.057,1.031 0.49,0.688 0.736,1.693 0.736,3.019 C 5.597,1.4 5.344,2.331 4.839,3.019 4.334,3.706 3.648,4.05 2.782,4.05 1.93,4.05 1.253,3.711 0.752,3.035 0.25,2.357 0,1.347 0,0 m -2.61,0.226 c 0,1.138 0.225,2.165 0.676,3.077 0.452,0.914 1.085,1.615 1.902,2.105 C 0.784,5.899 1.722,6.145 2.782,6.145 4.351,6.145 5.624,5.64 6.601,4.63 7.579,3.62 8.106,2.281 8.186,0.612 L 8.196,0 c 0,-1.146 -0.22,-2.17 -0.66,-3.072 C 7.095,-3.975 6.465,-4.673 5.645,-5.167 4.825,-5.661 3.878,-5.908 2.804,-5.908 c -1.64,0 -2.953,0.546 -3.937,1.638 -0.985,1.092 -1.477,2.547 -1.477,4.367 z"
|
||||
style="fill:#0b73b8;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path96" /></g><g
|
||||
id="g98"
|
||||
transform="translate(111.4463,28.833)"><path
|
||||
d="m 0,0 0.075,-1.214 c 0.817,0.952 1.934,1.429 3.352,1.429 1.553,0 2.617,-0.595 3.19,-1.783 0.845,1.188 2.034,1.783 3.567,1.783 1.281,0 2.235,-0.355 2.862,-1.064 0.627,-0.709 0.947,-1.755 0.962,-3.136 v -7.638 h -2.611 v 7.562 c 0,0.738 -0.161,1.279 -0.483,1.623 -0.322,0.343 -0.856,0.515 -1.601,0.515 -0.594,0 -1.079,-0.159 -1.455,-0.477 -0.376,-0.32 -0.639,-0.737 -0.79,-1.252 l 0.011,-7.971 h -2.61 v 7.648 c -0.036,1.369 -0.735,2.052 -2.095,2.052 -1.046,0 -1.787,-0.426 -2.224,-1.278 v -8.422 H -2.46 L -2.46,0 Z"
|
||||
style="fill:#0b73b8;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path100" /></g><g
|
||||
id="g102"
|
||||
transform="translate(135.7129,23.1289)"><path
|
||||
d="m 0,0 c 0,1.16 -0.231,2.08 -0.693,2.761 -0.462,0.68 -1.122,1.02 -1.982,1.02 -1.067,0 -1.833,-0.44 -2.299,-1.321 v -5.156 c 0.473,-0.903 1.246,-1.354 2.321,-1.354 0.83,0 1.48,0.335 1.949,1.004 C -0.235,-2.376 0,-1.36 0,0 m 2.6,-0.226 c 0,-1.797 -0.409,-3.231 -1.225,-4.302 -0.816,-1.071 -1.912,-1.606 -3.287,-1.606 -1.275,0 -2.296,0.419 -3.062,1.257 v -5.511 h -2.61 V 5.704 h 2.406 L -5.07,4.522 c 0.766,0.931 1.808,1.397 3.126,1.397 1.418,0 2.529,-0.528 3.335,-1.584 C 2.197,3.278 2.6,1.812 2.6,-0.064 Z"
|
||||
style="fill:#0b73b8;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path104" /></g><g
|
||||
id="g106"
|
||||
transform="translate(144.5967,19.0898)"><path
|
||||
d="M 0,0 C 0.516,0 1,0.125 1.456,0.376 1.91,0.627 2.252,0.963 2.481,1.386 V 3.577 H 1.074 C 0.107,3.577 -0.62,3.409 -1.106,3.072 -1.594,2.735 -1.837,2.26 -1.837,1.644 c 0,-0.501 0.167,-0.901 0.5,-1.198 C -1.004,0.148 -0.559,0 0,0 m 2.868,-1.88 c -0.115,0.222 -0.215,0.584 -0.301,1.085 -0.831,-0.866 -1.847,-1.3 -3.05,-1.3 -1.168,0 -2.121,0.333 -2.858,0.999 -0.738,0.666 -1.106,1.49 -1.106,2.471 0,1.239 0.46,2.189 1.38,2.853 0.92,0.662 2.236,0.993 3.948,0.993 h 1.6 V 5.983 C 2.481,6.585 2.313,7.066 1.977,7.429 1.64,7.79 1.128,7.971 0.44,7.971 -0.154,7.971 -0.641,7.822 -1.021,7.524 -1.4,7.228 -1.59,6.85 -1.59,6.392 H -4.2 c 0,0.637 0.211,1.233 0.634,1.789 0.422,0.554 0.997,0.989 1.724,1.304 0.726,0.316 1.537,0.473 2.433,0.473 1.36,0 2.445,-0.342 3.255,-1.025 C 4.655,8.248 5.07,7.287 5.092,6.048 V 0.806 c 0,-1.046 0.146,-1.88 0.44,-2.503 V -1.88 Z"
|
||||
style="fill:#0b73b8;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path108" /></g><g
|
||||
id="g110"
|
||||
transform="translate(155.6934,31.6582)"><path
|
||||
d="M 0,0 V -2.825 H 2.052 V -4.759 H 0 v -6.488 c 0,-0.444 0.087,-0.765 0.263,-0.961 0.175,-0.197 0.489,-0.296 0.94,-0.296 0.301,0 0.605,0.036 0.913,0.108 v -2.02 c -0.595,-0.165 -1.167,-0.247 -1.719,-0.247 -2.005,0 -3.007,1.106 -3.007,3.319 v 6.585 h -1.912 v 1.934 h 1.912 l 0,2.825 z"
|
||||
style="fill:#0b73b8;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path112" /></g><path
|
||||
d="m 162.515,17.21 h -2.61 v 11.623 h 2.61 z m -2.772,14.642 c 0,0.401 0.127,0.734 0.382,0.999 0.253,0.264 0.617,0.397 1.09,0.397 0.472,0 0.838,-0.133 1.096,-0.397 0.257,-0.265 0.386,-0.598 0.386,-0.999 0,-0.394 -0.129,-0.722 -0.386,-0.984 -0.258,-0.261 -0.624,-0.391 -1.096,-0.391 -0.473,0 -0.837,0.13 -1.09,0.391 -0.255,0.262 -0.382,0.59 -0.382,0.984"
|
||||
style="fill:#0b73b8;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path114" /><g
|
||||
id="g116"
|
||||
transform="translate(172.9453,23.1289)"><path
|
||||
d="m 0,0 c 0,1.261 -0.222,2.206 -0.666,2.836 -0.444,0.63 -1.089,0.945 -1.934,0.945 -1.131,0 -1.926,-0.494 -2.384,-1.482 v -4.791 c 0.465,-1.01 1.267,-1.515 2.406,-1.515 0.816,0 1.446,0.305 1.891,0.913 0.443,0.609 0.672,1.53 0.687,2.761 z m 2.61,-0.226 c 0,-1.804 -0.402,-3.24 -1.208,-4.307 -0.806,-1.068 -1.914,-1.601 -3.325,-1.601 -1.361,0 -2.421,0.49 -3.18,1.472 l -0.128,-1.257 h -2.364 v 16.5 h 2.611 V 4.587 c 0.752,0.888 1.765,1.332 3.04,1.332 1.418,0 2.531,-0.526 3.34,-1.579 C 2.206,3.287 2.61,1.815 2.61,-0.075 Z"
|
||||
style="fill:#0b73b8;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path118" /></g><path
|
||||
d="m 180.519,17.21 h -2.61 v 16.5 h 2.61 z"
|
||||
style="fill:#0b73b8;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path120" /><g
|
||||
id="g122"
|
||||
transform="translate(188.167,26.9531)"><path
|
||||
d="m 0,0 c -0.716,0 -1.295,-0.251 -1.734,-0.752 -0.442,-0.501 -0.722,-1.199 -0.844,-2.095 h 4.974 v 0.194 C 2.338,-1.779 2.105,-1.119 1.697,-0.671 1.289,-0.224 0.724,0 0,0 m 0.312,-9.958 c -1.655,0 -2.996,0.521 -4.023,1.562 -1.028,1.043 -1.542,2.43 -1.542,4.164 v 0.322 c 0,1.16 0.224,2.196 0.671,3.11 0.448,0.912 1.076,1.623 1.886,2.132 0.809,0.509 1.712,0.763 2.707,0.763 1.583,0 2.805,-0.505 3.669,-1.515 0.862,-1.01 1.294,-2.438 1.294,-4.286 v -1.053 h -7.595 c 0.079,-0.96 0.399,-1.719 0.961,-2.277 0.562,-0.559 1.269,-0.838 2.122,-0.838 1.196,0 2.17,0.483 2.922,1.45 L 4.791,-7.767 C 4.325,-8.461 3.704,-9 2.928,-9.384 2.15,-9.767 1.278,-9.958 0.312,-9.958"
|
||||
style="fill:#0b73b8;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path124" /></g><g
|
||||
id="g126"
|
||||
transform="translate(210.6611,25.4385)"><path
|
||||
d="m 0,0 c 0,1.733 -0.327,3.062 -0.983,3.985 -0.655,0.924 -1.584,1.386 -2.788,1.386 -1.174,0 -2.092,-0.46 -2.755,-1.381 -0.662,-0.92 -1,-2.221 -1.015,-3.904 v -0.902 c 0,-1.719 0.335,-3.047 1.005,-3.986 0.669,-0.938 1.599,-1.407 2.787,-1.407 1.203,0 2.129,0.458 2.777,1.375 C -0.324,-3.917 0,-2.578 0,-0.816 Z m 2.718,-0.816 c 0,-1.533 -0.265,-2.877 -0.795,-4.034 -0.53,-1.157 -1.287,-2.045 -2.272,-2.664 -0.985,-0.62 -2.118,-0.929 -3.4,-0.929 -1.268,0 -2.397,0.309 -3.389,0.929 -0.992,0.619 -1.758,1.502 -2.299,2.648 -0.541,1.145 -0.815,2.467 -0.822,3.964 v 0.881 c 0,1.525 0.271,2.872 0.811,4.039 0.541,1.167 1.303,2.06 2.289,2.679 0.984,0.62 2.114,0.93 3.388,0.93 1.275,0 2.405,-0.307 3.389,-0.918 C 0.604,6.096 1.364,5.215 1.901,4.066 2.438,2.916 2.711,1.579 2.718,0.054 Z"
|
||||
style="fill:#0b73b8;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path128" /></g><g
|
||||
id="g130"
|
||||
transform="translate(223.4229,23.1289)"><path
|
||||
d="m 0,0 c 0,1.261 -0.222,2.206 -0.666,2.836 -0.444,0.63 -1.089,0.945 -1.934,0.945 -1.131,0 -1.926,-0.494 -2.384,-1.482 v -4.791 c 0.465,-1.01 1.267,-1.515 2.406,-1.515 0.816,0 1.446,0.305 1.891,0.913 0.444,0.609 0.672,1.53 0.687,2.761 z m 2.61,-0.226 c 0,-1.804 -0.402,-3.24 -1.209,-4.307 -0.804,-1.068 -1.913,-1.601 -3.324,-1.601 -1.36,0 -2.421,0.49 -3.18,1.472 l -0.128,-1.257 h -2.364 v 16.5 h 2.611 V 4.587 c 0.752,0.888 1.765,1.332 3.04,1.332 1.418,0 2.531,-0.526 3.34,-1.579 C 2.206,3.287 2.61,1.815 2.61,-0.075 Z"
|
||||
style="fill:#0b73b8;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path132" /></g><g
|
||||
id="g134"
|
||||
transform="translate(228.1064,31.8516)"><path
|
||||
d="M 0,0 C 0,0.401 0.127,0.734 0.381,0.999 0.636,1.264 0.999,1.396 1.472,1.396 1.944,1.396 2.31,1.264 2.567,0.999 2.825,0.734 2.954,0.401 2.954,0 2.954,-0.394 2.825,-0.722 2.567,-0.983 2.31,-1.244 1.944,-1.375 1.472,-1.375 0.999,-1.375 0.636,-1.244 0.381,-0.983 0.127,-0.722 0,-0.394 0,0 m 2.836,-3.019 v -12.654 c 0,-1.188 -0.295,-2.097 -0.887,-2.723 -0.59,-0.626 -1.455,-0.94 -2.594,-0.94 -0.479,0 -0.941,0.061 -1.385,0.183 v 2.062 c 0.272,-0.064 0.58,-0.096 0.924,-0.096 0.866,0 1.31,0.472 1.332,1.417 v 12.751 z"
|
||||
style="fill:#0b73b8;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path136" /></g><g
|
||||
id="g138"
|
||||
transform="translate(238.5371,26.9531)"><path
|
||||
d="m 0,0 c -0.716,0 -1.295,-0.251 -1.734,-0.752 -0.442,-0.501 -0.722,-1.199 -0.844,-2.095 h 4.974 v 0.194 C 2.338,-1.779 2.105,-1.119 1.697,-0.671 1.289,-0.224 0.724,0 0,0 m 0.312,-9.958 c -1.655,0 -2.996,0.521 -4.023,1.562 -1.028,1.043 -1.542,2.43 -1.542,4.164 v 0.322 c 0,1.16 0.224,2.196 0.671,3.11 0.448,0.912 1.076,1.623 1.886,2.132 0.809,0.509 1.712,0.763 2.707,0.763 1.583,0 2.805,-0.505 3.669,-1.515 0.862,-1.01 1.294,-2.438 1.294,-4.286 v -1.053 h -7.595 c 0.079,-0.96 0.399,-1.719 0.961,-2.277 0.562,-0.559 1.269,-0.838 2.122,-0.838 1.196,0 2.17,0.483 2.922,1.45 L 4.791,-7.767 C 4.325,-8.461 3.704,-9 2.928,-9.384 2.15,-9.767 1.278,-9.958 0.312,-9.958"
|
||||
style="fill:#0b73b8;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path140" /></g><g
|
||||
id="g142"
|
||||
transform="translate(250.3105,19.0791)"><path
|
||||
d="m 0,0 c 0.651,0 1.192,0.189 1.622,0.569 0.43,0.38 0.659,0.849 0.688,1.408 H 4.77 C 4.741,1.253 4.516,0.578 4.093,-0.049 3.67,-0.675 3.098,-1.171 2.374,-1.536 1.65,-1.901 0.87,-2.084 0.032,-2.084 c -1.626,0 -2.915,0.526 -3.867,1.579 -0.952,1.053 -1.429,2.507 -1.429,4.361 v 0.269 c 0,1.769 0.473,3.186 1.418,4.248 C -2.9,9.438 -1.611,9.969 0.021,9.969 1.403,9.969 2.53,9.566 3.399,8.76 4.271,7.955 4.727,6.896 4.77,5.586 H 2.31 C 2.281,6.252 2.054,6.8 1.628,7.229 1.201,7.659 0.659,7.874 0,7.874 -0.845,7.874 -1.497,7.568 -1.955,6.955 -2.413,6.344 -2.646,5.414 -2.653,4.168 V 3.749 c 0,-1.261 0.227,-2.2 0.681,-2.819 C -1.517,0.31 -0.859,0 0,0"
|
||||
style="fill:#0b73b8;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path144" /></g><g
|
||||
id="g146"
|
||||
transform="translate(260.3223,31.6582)"><path
|
||||
d="M 0,0 V -2.825 H 2.052 V -4.759 H 0 v -6.488 c 0,-0.444 0.088,-0.765 0.263,-0.961 0.175,-0.197 0.489,-0.296 0.94,-0.296 0.301,0 0.606,0.036 0.913,0.108 v -2.02 c -0.595,-0.165 -1.167,-0.247 -1.719,-0.247 -2.004,0 -3.007,1.106 -3.007,3.319 v 6.585 h -1.912 v 1.934 h 1.912 l 0,2.825 z"
|
||||
style="fill:#0b73b8;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path148" /></g><g
|
||||
id="g150"
|
||||
transform="translate(278.2725,21.2383)"><path
|
||||
d="m 0,0 c 0,0.687 -0.241,1.218 -0.726,1.59 -0.482,0.372 -1.354,0.748 -2.615,1.128 -1.261,0.38 -2.263,0.802 -3.008,1.267 -1.424,0.896 -2.137,2.063 -2.137,3.502 0,1.261 0.513,2.299 1.542,3.116 1.027,0.816 2.361,1.224 4.001,1.224 1.089,0 2.058,-0.2 2.911,-0.601 C 0.82,10.824 1.489,10.253 1.977,9.513 2.464,8.771 2.707,7.949 2.707,7.047 H 0 c 0,0.816 -0.256,1.456 -0.769,1.917 -0.511,0.463 -1.244,0.693 -2.196,0.693 -0.888,0 -1.577,-0.189 -2.067,-0.569 -0.491,-0.38 -0.737,-0.909 -0.737,-1.59 0,-0.573 0.265,-1.051 0.795,-1.435 C -4.443,5.681 -3.57,5.309 -2.353,4.946 -1.135,4.585 -0.157,4.173 0.58,3.712 1.317,3.249 1.858,2.72 2.202,2.122 2.546,1.523 2.718,0.823 2.718,0.021 c 0,-1.303 -0.5,-2.339 -1.498,-3.11 -1,-0.769 -2.355,-1.154 -4.067,-1.154 -1.132,0 -2.172,0.209 -3.121,0.629 -0.948,0.418 -1.685,0.997 -2.213,1.734 -0.525,0.737 -0.789,1.597 -0.789,2.578 h 2.718 c 0,-0.887 0.294,-1.575 0.881,-2.062 0.587,-0.488 1.429,-0.731 2.524,-0.731 0.946,0 1.657,0.192 2.133,0.574 C -0.238,-1.137 0,-0.63 0,0"
|
||||
style="fill:#0b73b8;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path152" /></g><g
|
||||
id="g154"
|
||||
transform="translate(286.3936,31.6582)"><path
|
||||
d="M 0,0 V -2.825 H 2.052 V -4.759 H 0 v -6.488 c 0,-0.444 0.088,-0.765 0.263,-0.961 0.175,-0.197 0.489,-0.296 0.94,-0.296 0.301,0 0.606,0.036 0.913,0.108 v -2.02 c -0.595,-0.165 -1.167,-0.247 -1.719,-0.247 -2.004,0 -3.007,1.106 -3.007,3.319 v 6.585 h -1.912 v 1.934 h 1.912 l 0,2.825 z"
|
||||
style="fill:#0b73b8;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path156" /></g><g
|
||||
id="g158"
|
||||
transform="translate(292.5596,22.9033)"><path
|
||||
d="m 0,0 c 0,-1.196 0.247,-2.133 0.741,-2.809 0.494,-0.677 1.182,-1.015 2.063,-1.015 0.881,0 1.566,0.344 2.057,1.031 C 5.352,-2.105 5.597,-1.1 5.597,0.226 5.597,1.4 5.344,2.331 4.84,3.019 4.334,3.706 3.648,4.05 2.782,4.05 1.93,4.05 1.253,3.711 0.752,3.035 0.251,2.357 0,1.347 0,0 m -2.61,0.226 c 0,1.138 0.225,2.165 0.676,3.077 0.452,0.914 1.085,1.615 1.902,2.105 0.816,0.491 1.755,0.737 2.814,0.737 1.569,0 2.841,-0.505 3.82,-1.515 C 7.578,3.62 8.106,2.281 8.186,0.612 L 8.196,0 c 0,-1.146 -0.219,-2.17 -0.661,-3.072 -0.439,-0.903 -1.07,-1.601 -1.89,-2.095 -0.82,-0.494 -1.767,-0.741 -2.841,-0.741 -1.64,0 -2.952,0.546 -3.937,1.638 -0.985,1.092 -1.477,2.547 -1.477,4.367 z"
|
||||
style="fill:#0b73b8;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path160" /></g><g
|
||||
id="g162"
|
||||
transform="translate(309.0488,26.4482)"><path
|
||||
d="m 0,0 c -0.344,0.058 -0.698,0.086 -1.063,0.086 -1.197,0 -2.002,-0.458 -2.417,-1.375 V -9.238 H -6.091 V 2.385 h 2.492 l 0.065,-1.3 c 0.63,1.01 1.504,1.515 2.621,1.515 0.372,0 0.681,-0.05 0.924,-0.151 z"
|
||||
style="fill:#0b73b8;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path164" /></g><g
|
||||
id="g166"
|
||||
transform="translate(314.7744,19.0898)"><path
|
||||
d="M 0,0 C 0.516,0 1.001,0.125 1.455,0.376 1.91,0.627 2.252,0.963 2.481,1.386 V 3.577 H 1.074 C 0.107,3.577 -0.619,3.409 -1.106,3.072 -1.594,2.735 -1.837,2.26 -1.837,1.644 -1.837,1.143 -1.67,0.743 -1.338,0.446 -1.004,0.148 -0.559,0 0,0 m 2.868,-1.88 c -0.114,0.222 -0.215,0.584 -0.301,1.085 -0.831,-0.866 -1.847,-1.3 -3.05,-1.3 -1.167,0 -2.121,0.333 -2.858,0.999 -0.737,0.666 -1.106,1.49 -1.106,2.471 0,1.239 0.46,2.189 1.381,2.853 0.92,0.662 2.235,0.993 3.947,0.993 h 1.6 V 5.983 C 2.481,6.585 2.313,7.066 1.977,7.429 1.64,7.79 1.128,7.971 0.44,7.971 -0.154,7.971 -0.641,7.822 -1.021,7.524 -1.4,7.228 -1.59,6.85 -1.59,6.392 H -4.2 c 0,0.637 0.211,1.233 0.634,1.789 0.422,0.554 0.997,0.989 1.724,1.304 0.727,0.316 1.537,0.473 2.433,0.473 1.36,0 2.445,-0.342 3.255,-1.025 C 4.655,8.248 5.07,7.287 5.092,6.048 V 0.806 c 0,-1.046 0.146,-1.88 0.44,-2.503 V -1.88 Z"
|
||||
style="fill:#0b73b8;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path168" /></g><g
|
||||
id="g170"
|
||||
transform="translate(324.7432,22.8818)"><path
|
||||
d="M 0,0 C 0,-1.167 0.238,-2.086 0.715,-2.756 1.19,-3.425 1.852,-3.76 2.696,-3.76 c 1.053,0 1.833,0.451 2.342,1.354 V 2.707 C 4.544,3.588 3.771,4.028 2.718,4.028 1.858,4.028 1.19,3.688 0.715,3.008 0.238,2.327 0,1.325 0,0 m -2.6,0.226 c 0,1.804 0.424,3.246 1.274,4.323 0.847,1.078 1.974,1.617 3.378,1.617 1.325,0 2.367,-0.462 3.126,-1.386 L 5.296,5.951 H 7.648 V -5.317 c 0,-1.526 -0.474,-2.729 -1.423,-3.61 -0.949,-0.881 -2.229,-1.321 -3.84,-1.321 -0.853,0 -1.685,0.178 -2.498,0.531 -0.813,0.356 -1.43,0.819 -1.853,1.392 l 1.236,1.568 c 0.801,-0.952 1.79,-1.429 2.964,-1.429 0.867,0 1.551,0.235 2.052,0.704 0.501,0.469 0.752,1.159 0.752,2.068 V -4.63 C 4.286,-5.468 3.283,-5.887 2.03,-5.887 c -1.36,0 -2.472,0.541 -3.335,1.622 -0.863,1.081 -1.295,2.578 -1.295,4.491"
|
||||
style="fill:#0b73b8;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path172" /></g><g
|
||||
id="g174"
|
||||
transform="translate(339.8789,26.9531)"><path
|
||||
d="m 0,0 c -0.716,0 -1.295,-0.251 -1.734,-0.752 -0.442,-0.501 -0.722,-1.199 -0.844,-2.095 h 4.974 v 0.194 C 2.338,-1.779 2.105,-1.119 1.697,-0.671 1.289,-0.224 0.724,0 0,0 m 0.312,-9.958 c -1.655,0 -2.996,0.521 -4.023,1.562 -1.028,1.043 -1.542,2.43 -1.542,4.164 v 0.322 c 0,1.16 0.224,2.196 0.671,3.11 0.448,0.912 1.076,1.623 1.886,2.132 0.809,0.509 1.712,0.763 2.707,0.763 1.583,0 2.805,-0.505 3.669,-1.515 0.862,-1.01 1.294,-2.438 1.294,-4.286 v -1.053 h -7.595 c 0.079,-0.96 0.399,-1.719 0.961,-2.277 0.562,-0.559 1.269,-0.838 2.122,-0.838 1.196,0 2.17,0.483 2.922,1.45 L 4.791,-7.767 C 4.325,-8.461 3.704,-9 2.928,-9.384 2.15,-9.767 1.278,-9.958 0.312,-9.958"
|
||||
style="fill:#0b73b8;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path176" /></g></g></g></g></svg>
|
||||
|
After Width: | Height: | Size: 30 KiB |
@@ -3,6 +3,7 @@ package accounting
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"sort"
|
||||
"strings"
|
||||
@@ -48,6 +49,7 @@ type StatsInfo struct {
|
||||
renameQueue int
|
||||
renameQueueSize int64
|
||||
deletes int64
|
||||
deletesSize int64
|
||||
deletedDirs int64
|
||||
inProgress *inProgress
|
||||
startedTransfers []*Transfer // currently active transfers
|
||||
@@ -590,11 +592,37 @@ func (s *StatsInfo) HadRetryError() bool {
|
||||
return s.retryError
|
||||
}
|
||||
|
||||
// Deletes updates the stats for deletes
|
||||
func (s *StatsInfo) Deletes(deletes int64) int64 {
|
||||
var (
|
||||
errMaxDelete = fserrors.FatalError(errors.New("--max-delete threshold reached"))
|
||||
errMaxDeleteSize = fserrors.FatalError(errors.New("--max-delete-size threshold reached"))
|
||||
)
|
||||
|
||||
// DeleteFile updates the stats for deleting a file
|
||||
//
|
||||
// It may return fatal errors if the threshold for --max-delete or
|
||||
// --max-delete-size have been reached.
|
||||
func (s *StatsInfo) DeleteFile(ctx context.Context, size int64) error {
|
||||
ci := fs.GetConfig(ctx)
|
||||
s.mu.Lock()
|
||||
defer s.mu.Unlock()
|
||||
if size < 0 {
|
||||
size = 0
|
||||
}
|
||||
if ci.MaxDelete >= 0 && s.deletes+1 > ci.MaxDelete {
|
||||
return errMaxDelete
|
||||
}
|
||||
if ci.MaxDeleteSize >= 0 && s.deletesSize+size > int64(ci.MaxDeleteSize) {
|
||||
return errMaxDeleteSize
|
||||
}
|
||||
s.deletes++
|
||||
s.deletesSize += size
|
||||
return nil
|
||||
}
|
||||
|
||||
// GetDeletes returns the number of deletes
|
||||
func (s *StatsInfo) GetDeletes() int64 {
|
||||
s.mu.Lock()
|
||||
defer s.mu.Unlock()
|
||||
s.deletes += deletes
|
||||
return s.deletes
|
||||
}
|
||||
|
||||
@@ -627,6 +655,7 @@ func (s *StatsInfo) ResetCounters() {
|
||||
s.checks = 0
|
||||
s.transfers = 0
|
||||
s.deletes = 0
|
||||
s.deletesSize = 0
|
||||
s.deletedDirs = 0
|
||||
s.renames = 0
|
||||
s.startedTransfers = nil
|
||||
|
||||
@@ -121,8 +121,10 @@ func TestStatsGroupOperations(t *testing.T) {
|
||||
})
|
||||
|
||||
testGroupStatsInfo := NewStatsGroup(ctx, "test-group")
|
||||
testGroupStatsInfo.Deletes(1)
|
||||
GlobalStats().Deletes(41)
|
||||
require.NoError(t, testGroupStatsInfo.DeleteFile(ctx, 0))
|
||||
for i := 0; i < 41; i++ {
|
||||
require.NoError(t, GlobalStats().DeleteFile(ctx, 0))
|
||||
}
|
||||
|
||||
t.Run("core/group-list", func(t *testing.T) {
|
||||
call := rc.Calls.Get("core/group-list")
|
||||
|
||||
@@ -71,6 +71,7 @@ type ConfigInfo struct {
|
||||
InsecureSkipVerify bool // Skip server certificate verification
|
||||
DeleteMode DeleteMode
|
||||
MaxDelete int64
|
||||
MaxDeleteSize SizeSuffix
|
||||
TrackRenames bool // Track file renames.
|
||||
TrackRenamesStrategy string // Comma separated list of strategies used to track renames
|
||||
LowLevelRetries int
|
||||
@@ -162,6 +163,7 @@ func NewConfig() *ConfigInfo {
|
||||
c.ExpectContinueTimeout = 1 * time.Second
|
||||
c.DeleteMode = DeleteModeDefault
|
||||
c.MaxDelete = -1
|
||||
c.MaxDeleteSize = SizeSuffix(-1)
|
||||
c.LowLevelRetries = 10
|
||||
c.MaxDepth = -1
|
||||
c.DataRateUnit = "bytes"
|
||||
|
||||
@@ -71,6 +71,7 @@ func AddFlags(ci *fs.ConfigInfo, flagSet *pflag.FlagSet) {
|
||||
flags.BoolVarP(flagSet, &deleteDuring, "delete-during", "", false, "When synchronizing, delete files during transfer")
|
||||
flags.BoolVarP(flagSet, &deleteAfter, "delete-after", "", false, "When synchronizing, delete files on destination after transferring (default)")
|
||||
flags.Int64VarP(flagSet, &ci.MaxDelete, "max-delete", "", -1, "When synchronizing, limit the number of deletes")
|
||||
flags.FVarP(flagSet, &ci.MaxDeleteSize, "max-delete-size", "", "When synchronizing, limit the total size of deletes")
|
||||
flags.BoolVarP(flagSet, &ci.TrackRenames, "track-renames", "", ci.TrackRenames, "When synchronizing, track file renames and do a server-side move if possible")
|
||||
flags.StringVarP(flagSet, &ci.TrackRenamesStrategy, "track-renames-strategy", "", ci.TrackRenamesStrategy, "Strategies to use when synchronizing using track-renames hash|modtime|leaf")
|
||||
flags.IntVarP(flagSet, &ci.LowLevelRetries, "low-level-retries", "", ci.LowLevelRetries, "Number of low level retries to do")
|
||||
|
||||
@@ -632,14 +632,13 @@ func SuffixName(ctx context.Context, remote string) string {
|
||||
// If backupDir is set then it moves the file to there instead of
|
||||
// deleting
|
||||
func DeleteFileWithBackupDir(ctx context.Context, dst fs.Object, backupDir fs.Fs) (err error) {
|
||||
ci := fs.GetConfig(ctx)
|
||||
tr := accounting.Stats(ctx).NewCheckingTransfer(dst, "deleting")
|
||||
defer func() {
|
||||
tr.Done(ctx, err)
|
||||
}()
|
||||
numDeletes := accounting.Stats(ctx).Deletes(1)
|
||||
if ci.MaxDelete != -1 && numDeletes > ci.MaxDelete {
|
||||
return fserrors.FatalError(errors.New("--max-delete threshold reached"))
|
||||
err = accounting.Stats(ctx).DeleteFile(ctx, dst.Size())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
action, actioned := "delete", "Deleted"
|
||||
if backupDir != nil {
|
||||
|
||||
@@ -419,6 +419,75 @@ func TestDelete(t *testing.T) {
|
||||
r.CheckRemoteItems(t, file3)
|
||||
}
|
||||
|
||||
func isChunker(f fs.Fs) bool {
|
||||
return strings.HasPrefix(f.Name(), "TestChunker")
|
||||
}
|
||||
|
||||
func skipIfChunker(t *testing.T, f fs.Fs) {
|
||||
if isChunker(f) {
|
||||
t.Skip("Skipping test on chunker backend")
|
||||
}
|
||||
}
|
||||
|
||||
func TestMaxDelete(t *testing.T) {
|
||||
ctx := context.Background()
|
||||
ctx, ci := fs.AddConfig(ctx)
|
||||
r := fstest.NewRun(t)
|
||||
accounting.GlobalStats().ResetCounters()
|
||||
ci.MaxDelete = 2
|
||||
defer r.Finalise()
|
||||
skipIfChunker(t, r.Fremote) // chunker does copy/delete on s3
|
||||
file1 := r.WriteObject(ctx, "small", "1234567890", t2) // 10 bytes
|
||||
file2 := r.WriteObject(ctx, "medium", "------------------------------------------------------------", t1) // 60 bytes
|
||||
file3 := r.WriteObject(ctx, "large", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", t1) // 100 bytes
|
||||
r.CheckRemoteItems(t, file1, file2, file3)
|
||||
err := operations.Delete(ctx, r.Fremote)
|
||||
|
||||
require.Error(t, err)
|
||||
objects, _, _, err := operations.Count(ctx, r.Fremote)
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, int64(1), objects)
|
||||
}
|
||||
|
||||
// TestMaxDeleteSizeLargeFile one of the files is larger than allowed
|
||||
func TestMaxDeleteSizeLargeFile(t *testing.T) {
|
||||
ctx := context.Background()
|
||||
ctx, ci := fs.AddConfig(ctx)
|
||||
r := fstest.NewRun(t)
|
||||
accounting.GlobalStats().ResetCounters()
|
||||
ci.MaxDeleteSize = 70
|
||||
defer r.Finalise()
|
||||
skipIfChunker(t, r.Fremote) // chunker does copy/delete on s3
|
||||
file1 := r.WriteObject(ctx, "small", "1234567890", t2) // 10 bytes
|
||||
file2 := r.WriteObject(ctx, "medium", "------------------------------------------------------------", t1) // 60 bytes
|
||||
file3 := r.WriteObject(ctx, "large", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", t1) // 100 bytes
|
||||
r.CheckRemoteItems(t, file1, file2, file3)
|
||||
|
||||
err := operations.Delete(ctx, r.Fremote)
|
||||
require.Error(t, err)
|
||||
r.CheckRemoteItems(t, file3)
|
||||
}
|
||||
|
||||
func TestMaxDeleteSize(t *testing.T) {
|
||||
ctx := context.Background()
|
||||
ctx, ci := fs.AddConfig(ctx)
|
||||
r := fstest.NewRun(t)
|
||||
accounting.GlobalStats().ResetCounters()
|
||||
ci.MaxDeleteSize = 160
|
||||
defer r.Finalise()
|
||||
skipIfChunker(t, r.Fremote) // chunker does copy/delete on s3
|
||||
file1 := r.WriteObject(ctx, "small", "1234567890", t2) // 10 bytes
|
||||
file2 := r.WriteObject(ctx, "medium", "------------------------------------------------------------", t1) // 60 bytes
|
||||
file3 := r.WriteObject(ctx, "large", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", t1) // 100 bytes
|
||||
r.CheckRemoteItems(t, file1, file2, file3)
|
||||
|
||||
err := operations.Delete(ctx, r.Fremote)
|
||||
require.Error(t, err)
|
||||
objects, _, _, err := operations.Count(ctx, r.Fremote)
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, int64(1), objects) // 10 or 100 bytes
|
||||
}
|
||||
|
||||
func TestRetry(t *testing.T) {
|
||||
ctx := context.Background()
|
||||
|
||||
@@ -1769,7 +1838,7 @@ func TestCopyFileMaxTransfer(t *testing.T) {
|
||||
r.CheckLocalItems(t, file1, file2, file3, file4)
|
||||
r.CheckRemoteItems(t, file1)
|
||||
|
||||
if strings.HasPrefix(r.Fremote.Name(), "TestChunker") {
|
||||
if isChunker(r.Fremote) {
|
||||
t.Log("skipping remainder of test for chunker as it involves multiple transfers")
|
||||
return
|
||||
}
|
||||
|
||||
@@ -587,7 +587,9 @@ func TestMetrics(t *testing.T) {
|
||||
|
||||
// Test changing a couple options
|
||||
stats.Bytes(500)
|
||||
stats.Deletes(30)
|
||||
for i := 0; i < 30; i++ {
|
||||
require.NoError(t, stats.DeleteFile(context.Background(), 0))
|
||||
}
|
||||
stats.Errors(2)
|
||||
stats.Bytes(324)
|
||||
|
||||
@@ -619,7 +621,7 @@ func makeMetricsTestCases(stats *accounting.StatsInfo) (tests []testRun) {
|
||||
URL: "/metrics",
|
||||
Method: "GET",
|
||||
Status: http.StatusOK,
|
||||
Contains: regexp.MustCompile(fmt.Sprintf("rclone_files_deleted_total %d", stats.Deletes(0))),
|
||||
Contains: regexp.MustCompile(fmt.Sprintf("rclone_files_deleted_total %d", stats.GetDeletes())),
|
||||
}, {
|
||||
Name: "Files Transferred Metric",
|
||||
URL: "/metrics",
|
||||
|
||||
@@ -85,6 +85,8 @@ func (p *pipe) Pop() interface{} {
|
||||
// It returns ok = false if the context was cancelled
|
||||
//
|
||||
// It will panic if you call it after Close()
|
||||
//
|
||||
// Note that pairs where src==dst aren't counted for stats
|
||||
func (p *pipe) Put(ctx context.Context, pair fs.ObjectPair) (ok bool) {
|
||||
if ctx.Err() != nil {
|
||||
return false
|
||||
@@ -97,7 +99,7 @@ func (p *pipe) Put(ctx context.Context, pair fs.ObjectPair) (ok bool) {
|
||||
deheap.Push(p, pair)
|
||||
}
|
||||
size := pair.Src.Size()
|
||||
if size > 0 {
|
||||
if size > 0 && pair.Src != pair.Dst {
|
||||
p.totalSize += size
|
||||
}
|
||||
p.stats(len(p.queue), p.totalSize)
|
||||
@@ -141,7 +143,7 @@ func (p *pipe) GetMax(ctx context.Context, fraction int) (pair fs.ObjectPair, ok
|
||||
pair = deheap.PopMax(p).(fs.ObjectPair)
|
||||
}
|
||||
size := pair.Src.Size()
|
||||
if size > 0 {
|
||||
if size > 0 && pair.Src != pair.Dst {
|
||||
p.totalSize -= size
|
||||
}
|
||||
if p.totalSize < 0 {
|
||||
|
||||
@@ -42,12 +42,18 @@ func TestPipe(t *testing.T) {
|
||||
obj1 := mockobject.New("potato").WithContent([]byte("hello"), mockobject.SeekModeNone)
|
||||
|
||||
pair1 := fs.ObjectPair{Src: obj1, Dst: nil}
|
||||
pairD := fs.ObjectPair{Src: obj1, Dst: obj1} // this object should not count to the stats
|
||||
|
||||
// Put an object
|
||||
ok := p.Put(ctx, pair1)
|
||||
assert.Equal(t, true, ok)
|
||||
checkStats(1, 5)
|
||||
|
||||
// Put an object to be deleted
|
||||
ok = p.Put(ctx, pairD)
|
||||
assert.Equal(t, true, ok)
|
||||
checkStats(2, 5)
|
||||
|
||||
// Close the pipe showing reading on closed pipe is OK
|
||||
p.Close()
|
||||
|
||||
@@ -55,6 +61,12 @@ func TestPipe(t *testing.T) {
|
||||
pair2, ok := p.Get(ctx)
|
||||
assert.Equal(t, pair1, pair2)
|
||||
assert.Equal(t, true, ok)
|
||||
checkStats(1, 0)
|
||||
|
||||
// Read from pipe
|
||||
pair2, ok = p.Get(ctx)
|
||||
assert.Equal(t, pairD, pair2)
|
||||
assert.Equal(t, true, ok)
|
||||
checkStats(0, 0)
|
||||
|
||||
// Check read on closed pipe
|
||||
|
||||
@@ -377,6 +377,14 @@ func (s *syncCopyMove) pairChecker(in *pipe, out *pipe, fraction int, wg *sync.W
|
||||
fs.Logf(src, "Not removing source file as it is the same file as the destination")
|
||||
} else if s.ci.IgnoreExisting {
|
||||
fs.Debugf(src, "Not removing source file as destination file exists and --ignore-existing is set")
|
||||
} else if s.checkFirst && s.ci.OrderBy != "" {
|
||||
// If we want perfect ordering then use the transfers to delete the file
|
||||
//
|
||||
// We send src == dst, to say we want the src deleted
|
||||
ok = out.Put(s.ctx, fs.ObjectPair{Src: src, Dst: src})
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
} else {
|
||||
s.processError(operations.DeleteFile(s.ctx, src))
|
||||
}
|
||||
@@ -417,10 +425,16 @@ func (s *syncCopyMove) pairCopyOrMove(ctx context.Context, in *pipe, fdst fs.Fs,
|
||||
return
|
||||
}
|
||||
src := pair.Src
|
||||
dst := pair.Dst
|
||||
if s.DoMove {
|
||||
_, err = operations.Move(ctx, fdst, pair.Dst, src.Remote(), src)
|
||||
if src != dst {
|
||||
_, err = operations.Move(ctx, fdst, dst, src.Remote(), src)
|
||||
} else {
|
||||
// src == dst signals delete the src
|
||||
err = operations.DeleteFile(ctx, src)
|
||||
}
|
||||
} else {
|
||||
_, err = operations.Copy(ctx, fdst, pair.Dst, src.Remote(), src)
|
||||
_, err = operations.Copy(ctx, fdst, dst, src.Remote(), src)
|
||||
}
|
||||
s.processError(err)
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package fs
|
||||
|
||||
// VersionTag of rclone
|
||||
var VersionTag = "v1.62.0"
|
||||
var VersionTag = "v1.62.1"
|
||||
|
||||
70
go.mod
70
go.mod
@@ -4,11 +4,11 @@ go 1.18
|
||||
|
||||
require (
|
||||
bazil.org/fuse v0.0.0-20221209211307-2abb8038c751
|
||||
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.3.0
|
||||
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.0
|
||||
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.6.1
|
||||
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.4.0
|
||||
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.2
|
||||
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.0.0
|
||||
github.com/Azure/go-ntlmssp v0.0.0-20221128193559-754e69321358
|
||||
github.com/Max-Sum/base32768 v0.0.0-20191205131208-7937843c71d5
|
||||
github.com/Max-Sum/base32768 v0.0.0-20230304063302-18e6ce5945fd
|
||||
github.com/Unknwon/goconfig v1.0.0
|
||||
github.com/a8m/tree v0.0.0-20230208161321-36ae24ddad15
|
||||
github.com/aalpar/deheap v0.0.0-20210914013432-0cc84d79dec3
|
||||
@@ -17,72 +17,72 @@ require (
|
||||
github.com/anacrolix/log v0.13.1
|
||||
github.com/artyom/mtab v1.0.0
|
||||
github.com/atotto/clipboard v0.1.4
|
||||
github.com/aws/aws-sdk-go v1.44.178
|
||||
github.com/aws/aws-sdk-go v1.44.218
|
||||
github.com/buengese/sgzip v0.1.1
|
||||
github.com/colinmarc/hdfs/v2 v2.3.0
|
||||
github.com/coreos/go-semver v0.3.0
|
||||
github.com/coreos/go-semver v0.3.1
|
||||
github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf
|
||||
github.com/dop251/scsu v0.0.0-20220106150536-84ac88021d00
|
||||
github.com/dropbox/dropbox-sdk-go-unofficial/v6 v6.0.5
|
||||
github.com/gabriel-vasile/mimetype v1.4.1
|
||||
github.com/gdamore/tcell/v2 v2.5.4
|
||||
github.com/gabriel-vasile/mimetype v1.4.2
|
||||
github.com/gdamore/tcell/v2 v2.6.0
|
||||
github.com/go-chi/chi/v5 v5.0.8
|
||||
github.com/google/uuid v1.3.0
|
||||
github.com/hanwen/go-fuse/v2 v2.2.0
|
||||
github.com/hirochachacha/go-smb2 v1.1.0
|
||||
github.com/iguanesolutions/go-systemd/v5 v5.1.0
|
||||
github.com/jcmturner/gokrb5/v8 v8.4.3
|
||||
github.com/iguanesolutions/go-systemd/v5 v5.1.1
|
||||
github.com/jcmturner/gokrb5/v8 v8.4.4
|
||||
github.com/jlaffaye/ftp v0.1.1-0.20230214004652-d84bf4be2b6e
|
||||
github.com/jzelinskie/whirlpool v0.0.0-20201016144138-0675e54bb004
|
||||
github.com/klauspost/compress v1.15.14
|
||||
github.com/koofr/go-httpclient v0.0.0-20221124135700-2eb26cff5dd8
|
||||
github.com/klauspost/compress v1.16.0
|
||||
github.com/koofr/go-httpclient v0.0.0-20230225102643-5d51a2e9dea6
|
||||
github.com/koofr/go-koofrclient v0.0.0-20221207135200-cbd7fc9ad6a6
|
||||
github.com/mattn/go-colorable v0.1.13
|
||||
github.com/mattn/go-runewidth v0.0.14
|
||||
github.com/mitchellh/go-homedir v1.1.0
|
||||
github.com/ncw/go-acd v0.0.0-20201019170801-fe55f33415b1
|
||||
github.com/ncw/swift/v2 v2.0.1
|
||||
github.com/oracle/oci-go-sdk/v65 v65.30.0
|
||||
github.com/oracle/oci-go-sdk/v65 v65.32.0
|
||||
github.com/patrickmn/go-cache v2.1.0+incompatible
|
||||
github.com/pkg/sftp v1.13.6-0.20230213180117-971c283182b6
|
||||
github.com/pmezard/go-difflib v1.0.0
|
||||
github.com/prometheus/client_golang v1.14.0
|
||||
github.com/putdotio/go-putio/putio v0.0.0-20200123120452-16d982cac2b8
|
||||
github.com/rfjakob/eme v1.1.2
|
||||
github.com/rivo/uniseg v0.4.3
|
||||
github.com/shirou/gopsutil/v3 v3.22.12
|
||||
github.com/rivo/uniseg v0.4.4
|
||||
github.com/shirou/gopsutil/v3 v3.23.2
|
||||
github.com/sirupsen/logrus v1.9.0
|
||||
github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966
|
||||
github.com/spf13/cobra v1.6.1
|
||||
github.com/spf13/pflag v1.0.5
|
||||
github.com/stretchr/testify v1.8.1
|
||||
github.com/stretchr/testify v1.8.2
|
||||
github.com/t3rm1n4l/go-mega v0.0.0-20230228171823-a01a2cda13ca
|
||||
github.com/winfsp/cgofuse v1.5.1-0.20221118130120-84c0898ad2e0
|
||||
github.com/xanzy/ssh-agent v0.3.3
|
||||
github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a
|
||||
github.com/yunify/qingstor-sdk-go/v3 v3.2.0
|
||||
go.etcd.io/bbolt v1.3.6
|
||||
go.etcd.io/bbolt v1.3.7
|
||||
goftp.io/server v0.4.2-0.20210615155358-d07a820aac35
|
||||
golang.org/x/crypto v0.5.0
|
||||
golang.org/x/net v0.7.0
|
||||
golang.org/x/oauth2 v0.4.0
|
||||
golang.org/x/crypto v0.7.0
|
||||
golang.org/x/net v0.8.0
|
||||
golang.org/x/oauth2 v0.6.0
|
||||
golang.org/x/sync v0.1.0
|
||||
golang.org/x/sys v0.5.0
|
||||
golang.org/x/text v0.7.0
|
||||
golang.org/x/sys v0.6.0
|
||||
golang.org/x/text v0.8.0
|
||||
golang.org/x/time v0.3.0
|
||||
google.golang.org/api v0.106.0
|
||||
google.golang.org/api v0.112.0
|
||||
gopkg.in/yaml.v2 v2.4.0
|
||||
storj.io/uplink v1.10.0
|
||||
)
|
||||
|
||||
require (
|
||||
cloud.google.com/go/compute v1.14.0 // indirect
|
||||
cloud.google.com/go/compute v1.18.0 // indirect
|
||||
cloud.google.com/go/compute/metadata v0.2.3 // indirect
|
||||
github.com/Azure/azure-sdk-for-go/sdk/internal v1.1.1 // indirect
|
||||
github.com/AzureAD/microsoft-authentication-library-for-go v0.7.0 // indirect
|
||||
github.com/Azure/azure-sdk-for-go/sdk/internal v1.2.0 // indirect
|
||||
github.com/AzureAD/microsoft-authentication-library-for-go v0.9.0 // indirect
|
||||
github.com/beorn7/perks v1.0.1 // indirect
|
||||
github.com/calebcase/tmpfile v1.0.3 // indirect
|
||||
github.com/cespare/xxhash/v2 v2.1.2 // indirect
|
||||
github.com/cespare/xxhash/v2 v2.2.0 // indirect
|
||||
github.com/cloudflare/circl v1.1.0 // indirect
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect
|
||||
github.com/davecgh/go-spew v1.1.1 // indirect
|
||||
@@ -92,7 +92,7 @@ require (
|
||||
github.com/gofrs/flock v0.8.1 // indirect
|
||||
github.com/gogo/protobuf v1.3.2 // indirect
|
||||
github.com/golang/protobuf v1.5.2 // indirect
|
||||
github.com/googleapis/enterprise-certificate-proxy v0.2.1 // indirect
|
||||
github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect
|
||||
github.com/googleapis/gax-go/v2 v2.7.0 // indirect
|
||||
github.com/hashicorp/errwrap v1.0.0 // indirect
|
||||
github.com/hashicorp/go-multierror v1.1.1 // indirect
|
||||
@@ -113,7 +113,7 @@ require (
|
||||
github.com/mattn/go-isatty v0.0.16 // indirect
|
||||
github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect
|
||||
github.com/pengsrc/go-shared v0.2.1-0.20190131101655-1999055a4a14 // indirect
|
||||
github.com/pkg/browser v0.0.0-20210115035449-ce105d075bb4 // indirect
|
||||
github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect
|
||||
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect
|
||||
github.com/prometheus/client_model v0.3.0 // indirect
|
||||
github.com/prometheus/common v0.37.0 // indirect
|
||||
@@ -129,8 +129,8 @@ require (
|
||||
github.com/zeebo/errs v1.3.0 // indirect
|
||||
go.opencensus.io v0.24.0 // indirect
|
||||
google.golang.org/appengine v1.6.7 // indirect
|
||||
google.golang.org/genproto v0.0.0-20221227171554-f9683d7f8bef // indirect
|
||||
google.golang.org/grpc v1.51.0 // indirect
|
||||
google.golang.org/genproto v0.0.0-20230303212802-e74f57abe488 // indirect
|
||||
google.golang.org/grpc v1.53.0 // indirect
|
||||
google.golang.org/protobuf v1.28.1 // indirect
|
||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
|
||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||
@@ -140,11 +140,11 @@ require (
|
||||
|
||||
require (
|
||||
github.com/Microsoft/go-winio v0.5.2 // indirect
|
||||
github.com/ProtonMail/go-crypto v0.0.0-20230109192245-7efeeb08f296
|
||||
github.com/golang-jwt/jwt/v4 v4.4.2 // indirect
|
||||
github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8
|
||||
github.com/golang-jwt/jwt/v4 v4.5.0 // indirect
|
||||
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
|
||||
github.com/google/go-querystring v1.1.0 // indirect
|
||||
github.com/pkg/xattr v0.4.9
|
||||
golang.org/x/mobile v0.0.0-20221110043201-43a038452099
|
||||
golang.org/x/term v0.5.0
|
||||
golang.org/x/mobile v0.0.0-20230301163155-e0f57694e12c
|
||||
golang.org/x/term v0.6.0
|
||||
)
|
||||
|
||||
153
go.sum
153
go.sum
@@ -15,20 +15,20 @@ cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKV
|
||||
cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs=
|
||||
cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc=
|
||||
cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY=
|
||||
cloud.google.com/go v0.105.0 h1:DNtEKRBAAzeS4KyIory52wWHuClNaXJ5x1F7xa4q+5Y=
|
||||
cloud.google.com/go v0.110.0 h1:Zc8gqp3+a9/Eyph2KDmcGaPtbKRIoqq4YTlL4NMD0Ys=
|
||||
cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
|
||||
cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
|
||||
cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=
|
||||
cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=
|
||||
cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=
|
||||
cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=
|
||||
cloud.google.com/go/compute v1.14.0 h1:hfm2+FfxVmnRlh6LpB7cg1ZNU+5edAHmW679JePztk0=
|
||||
cloud.google.com/go/compute v1.14.0/go.mod h1:YfLtxrj9sU4Yxv+sXzZkyPjEyPBZfXHUvjxega5vAdo=
|
||||
cloud.google.com/go/compute v1.18.0 h1:FEigFqoDbys2cvFkZ9Fjq4gnHBP55anJ0yQyau2f9oY=
|
||||
cloud.google.com/go/compute v1.18.0/go.mod h1:1X7yHxec2Ga+Ss6jPyjxRxpu2uu7PLgsOVXvgU0yacs=
|
||||
cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY=
|
||||
cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA=
|
||||
cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
|
||||
cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=
|
||||
cloud.google.com/go/longrunning v0.3.0 h1:NjljC+FYPV3uh5/OwWT6pVU+doBqMg2x/rZlE+CamDs=
|
||||
cloud.google.com/go/longrunning v0.4.1 h1:v+yFJOfKC3yZdY6ZUI933pIYdhyhV8S3NpWrXWmg7jM=
|
||||
cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
|
||||
cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=
|
||||
cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=
|
||||
@@ -39,26 +39,26 @@ cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohl
|
||||
cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
|
||||
cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
|
||||
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
|
||||
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.3.0 h1:VuHAcMq8pU1IWNT/m5yRaGqbK0BiQKHT8X4DTp9CHdI=
|
||||
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.3.0/go.mod h1:tZoQYdDZNOiIjdSn0dVWVfl0NEPGOJqVLzSrcFk4Is0=
|
||||
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.0 h1:t/W5MYAuQy81cvM8VUNfRLzhtKpXhVUAN7Cd7KVbTyc=
|
||||
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.0/go.mod h1:NBanQUfSWiWn3QEpWDTCU0IjBECKOYvl2R8xdRtMtiM=
|
||||
github.com/Azure/azure-sdk-for-go/sdk/internal v1.1.1 h1:Oj853U9kG+RLTCQXpjvOnrv0WaZHxgmZz1TlLywgOPY=
|
||||
github.com/Azure/azure-sdk-for-go/sdk/internal v1.1.1/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w=
|
||||
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.6.1 h1:YvQv9Mz6T8oR5ypQOL6erY0Z5t71ak1uHV4QFokCOZk=
|
||||
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.6.1/go.mod h1:c6WvOhtmjNUWbLfOG1qxM/q0SPvQNSVJvolm+C52dIU=
|
||||
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.4.0 h1:rTnT/Jrcm+figWlYz4Ixzt0SJVR2cMC8lvZcimipiEY=
|
||||
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.4.0/go.mod h1:ON4tFdPTwRcgWEaVDrN3584Ef+b7GgSJaXxe5fW9t4M=
|
||||
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.2 h1:uqM+VoHjVH6zdlkLF2b6O0ZANcHoj3rO0PoQ3jglUJA=
|
||||
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.2/go.mod h1:twTKAa1E6hLmSDjLhaCkbTMQKc7p/rNLU40rLxGEOCI=
|
||||
github.com/Azure/azure-sdk-for-go/sdk/internal v1.2.0 h1:leh5DwKv6Ihwi+h60uHtn6UWAxBbZ0q8DwQVMzf61zw=
|
||||
github.com/Azure/azure-sdk-for-go/sdk/internal v1.2.0/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w=
|
||||
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.0.0 h1:u/LLAOFgsMv7HmNL4Qufg58y+qElGOt5qv0z1mURkRY=
|
||||
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.0.0/go.mod h1:2e8rMJtl2+2j+HXbTBwnyGpm5Nou7KhvSfxOq8JpTag=
|
||||
github.com/Azure/go-ntlmssp v0.0.0-20221128193559-754e69321358 h1:mFRzDkZVAjdal+s7s0MwaRv9igoPqLRdzOLzw/8Xvq8=
|
||||
github.com/Azure/go-ntlmssp v0.0.0-20221128193559-754e69321358/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU=
|
||||
github.com/AzureAD/microsoft-authentication-library-for-go v0.7.0 h1:VgSJlZH5u0k2qxSpqyghcFQKmvYckj46uymKK5XzkBM=
|
||||
github.com/AzureAD/microsoft-authentication-library-for-go v0.7.0/go.mod h1:BDJ5qMFKx9DugEg3+uQSDCdbYPr5s9vBTrL9P8TpqOU=
|
||||
github.com/AzureAD/microsoft-authentication-library-for-go v0.9.0 h1:UE9n9rkJF62ArLb1F3DEjRt8O3jLwMWdSoypKV4f3MU=
|
||||
github.com/AzureAD/microsoft-authentication-library-for-go v0.9.0/go.mod h1:kgDmCTgBzIEPFElEF+FK0SdjAor06dRq2Go927dnQ6o=
|
||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
|
||||
github.com/Max-Sum/base32768 v0.0.0-20191205131208-7937843c71d5 h1:w/vNc+SQRYKGWBHeDrzvvNttHwZEbSAP0kmTdORl4OI=
|
||||
github.com/Max-Sum/base32768 v0.0.0-20191205131208-7937843c71d5/go.mod h1:C8yoIfvESpM3GD07OCHU7fqI7lhwyZ2Td1rbNbTAhnc=
|
||||
github.com/Max-Sum/base32768 v0.0.0-20230304063302-18e6ce5945fd h1:nzE1YQBdx1bq9IlZinHa+HVffy+NmVRoKr+wHN8fpLE=
|
||||
github.com/Max-Sum/base32768 v0.0.0-20230304063302-18e6ce5945fd/go.mod h1:C8yoIfvESpM3GD07OCHU7fqI7lhwyZ2Td1rbNbTAhnc=
|
||||
github.com/Microsoft/go-winio v0.5.2 h1:a9IhgEQBCUEk6QCdml9CiJGhAws+YwffDHEMp1VMrpA=
|
||||
github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY=
|
||||
github.com/ProtonMail/go-crypto v0.0.0-20230109192245-7efeeb08f296 h1:865LKksDklBvemmkvQ2TO6yArI12PChQJn9R/2S8ov0=
|
||||
github.com/ProtonMail/go-crypto v0.0.0-20230109192245-7efeeb08f296/go.mod h1:UBYPn8k0D56RtnR8RFQMjmh4KrZzWJ5o7Z9SYjossQ8=
|
||||
github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8 h1:wPbRQzjjwFc0ih8puEVAOFGELsn1zoIIYdxvML7mDxA=
|
||||
github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8/go.mod h1:I0gYDMZ6Z5GRU7l58bNFSkPTFN6Yl12dsUlAZ8xy98g=
|
||||
github.com/RoaringBitmap/roaring v0.4.7/go.mod h1:8khRDP4HmeXns4xIj9oGrKSz7XTQiJx2zgh7AcNke4w=
|
||||
github.com/Unknwon/goconfig v1.0.0 h1:9IAu/BYbSLQi8puFjUQApZTxIHqSwrj5d8vpP8vTq4A=
|
||||
github.com/Unknwon/goconfig v1.0.0/go.mod h1:wngxua9XCNjvHjDiTiV26DaKDT+0c63QR6H5hjVUUxw=
|
||||
@@ -86,8 +86,8 @@ github.com/artyom/mtab v1.0.0 h1:r7OSVo5Jeqi8+LotZ0rT2kzfPIBp9KCpEJP8RQqGmSE=
|
||||
github.com/artyom/mtab v1.0.0/go.mod h1:EHpkp5OmPfS1yZX+/DFTztlJ9di5UzdDLX1/XzWPXw8=
|
||||
github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4=
|
||||
github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI=
|
||||
github.com/aws/aws-sdk-go v1.44.178 h1:4igreoWPEA7xVLnOeSXLhDXTsTSPKQONZcQ3llWAJw0=
|
||||
github.com/aws/aws-sdk-go v1.44.178/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI=
|
||||
github.com/aws/aws-sdk-go v1.44.218 h1:p707+xOCazWhkSpZOeyhtTcg7Z+asxxvueGgYPSitn4=
|
||||
github.com/aws/aws-sdk-go v1.44.218/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI=
|
||||
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
|
||||
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
|
||||
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
|
||||
@@ -100,8 +100,9 @@ github.com/calebcase/tmpfile v1.0.3 h1:BZrOWZ79gJqQ3XbAQlihYZf/YCV0H4KPIdM5K5oMp
|
||||
github.com/calebcase/tmpfile v1.0.3/go.mod h1:UAUc01aHeC+pudPagY/lWvt2qS9ZO5Zzof6/tIUzqeI=
|
||||
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
||||
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
||||
github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE=
|
||||
github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
||||
github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44=
|
||||
github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
||||
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
|
||||
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
|
||||
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
|
||||
@@ -111,8 +112,8 @@ github.com/cloudflare/circl v1.1.0/go.mod h1:prBCrKB9DV4poKZY1l9zBXg2QJY7mvgRvtM
|
||||
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
|
||||
github.com/colinmarc/hdfs/v2 v2.3.0 h1:tMxOjXn6+7iPUlxAyup9Ha2hnmLe3Sv5DM2qqbSQ2VY=
|
||||
github.com/colinmarc/hdfs/v2 v2.3.0/go.mod h1:nsyY1uyQOomU34KVQk9Qb/lDJobN1MQ/9WS6IqcVZno=
|
||||
github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM=
|
||||
github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
|
||||
github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4=
|
||||
github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec=
|
||||
github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf h1:iW4rZ826su+pqaw19uhpSCzhj44qo35pNgKFGqzDKkU=
|
||||
github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w=
|
||||
@@ -133,13 +134,13 @@ github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymF
|
||||
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
|
||||
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
||||
github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI=
|
||||
github.com/gabriel-vasile/mimetype v1.4.1 h1:TRWk7se+TOjCYgRth7+1/OYLNiRNIotknkFtf/dnN7Q=
|
||||
github.com/gabriel-vasile/mimetype v1.4.1/go.mod h1:05Vi0w3Y9c/lNvJOdmIwvrrAhX3rYhfQQCaf9VJcv7M=
|
||||
github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY=
|
||||
github.com/gabriel-vasile/mimetype v1.4.2 h1:w5qFW6JKBz9Y393Y4q372O9A7cUSequkh1Q7OhCmWKU=
|
||||
github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA=
|
||||
github.com/gdamore/encoding v1.0.0 h1:+7OoQ1Bc6eTm5niUzBa0Ctsh6JbMW6Ra+YNuAtDBdko=
|
||||
github.com/gdamore/encoding v1.0.0/go.mod h1:alR0ol34c49FCSBLjhosxzcPHQbf2trDkoo5dl+VrEg=
|
||||
github.com/gdamore/tcell/v2 v2.5.4 h1:TGU4tSjD3sCL788vFNeJnTdzpNKIw1H5dgLnJRQVv/k=
|
||||
github.com/gdamore/tcell/v2 v2.5.4/go.mod h1:dZgRy5v4iMobMEcWNYBtREnDZAT9DYmfqIkrgEMxLyw=
|
||||
github.com/gdamore/tcell/v2 v2.6.0 h1:OKbluoP9VYmJwZwq/iLb4BxwKcwGthaa1YNBJIyCySg=
|
||||
github.com/gdamore/tcell/v2 v2.6.0/go.mod h1:be9omFATkdr0D9qewWW3d+MEvl5dha+Etb5y65J2H8Y=
|
||||
github.com/geoffgarside/ber v1.1.0 h1:qTmFG4jJbwiSzSXoNJeHcOprVzZ8Ulde2Rrrifu5U9w=
|
||||
github.com/geoffgarside/ber v1.1.0/go.mod h1:jVPKeCbj6MvQZhwLYsGwaGI52oUorHoHKNecGT85ZCc=
|
||||
github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE=
|
||||
@@ -166,8 +167,8 @@ github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14j
|
||||
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
|
||||
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
|
||||
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
|
||||
github.com/golang-jwt/jwt/v4 v4.4.2 h1:rcc4lwaZgFMCZ5jxF9ABolDcIHdBytAFgqFPbSJQAYs=
|
||||
github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
|
||||
github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg=
|
||||
github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
|
||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
||||
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||
@@ -233,8 +234,8 @@ github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm4
|
||||
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
|
||||
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/googleapis/enterprise-certificate-proxy v0.2.1 h1:RY7tHKZcRlk788d5WSo/e83gOyyy742E8GSs771ySpg=
|
||||
github.com/googleapis/enterprise-certificate-proxy v0.2.1/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k=
|
||||
github.com/googleapis/enterprise-certificate-proxy v0.2.3 h1:yk9/cqRKtT9wXZSsRH9aurXEpJX+U6FLtpYTdC3R06k=
|
||||
github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k=
|
||||
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
|
||||
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
|
||||
github.com/googleapis/gax-go/v2 v2.7.0 h1:IcsPKeInNvYi7eqSaDjiZqDDKu5rsmunY0Y1YupQSSQ=
|
||||
@@ -261,8 +262,8 @@ github.com/hirochachacha/go-smb2 v1.1.0 h1:b6hs9qKIql9eVXAiN0M2wSFY5xnhbHAQoCwRK
|
||||
github.com/hirochachacha/go-smb2 v1.1.0/go.mod h1:8F1A4d5EZzrGu5R7PU163UcMRDJQl4FtcxjBfsY8TZE=
|
||||
github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbcucJdbSo=
|
||||
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
|
||||
github.com/iguanesolutions/go-systemd/v5 v5.1.0 h1:UWprhbpxjLM0vvwu4MxaBR+/KzSxgvnKpM9Q3MBhTAc=
|
||||
github.com/iguanesolutions/go-systemd/v5 v5.1.0/go.mod h1:XprNDEZ9zdPzEg1WrmpV1BnGorgP0WP40AGurMxeQOY=
|
||||
github.com/iguanesolutions/go-systemd/v5 v5.1.1 h1:Hs0Z16knPGCBFnKECrICPh+RQ89Sgy0xyzcalrHMKdw=
|
||||
github.com/iguanesolutions/go-systemd/v5 v5.1.1/go.mod h1:Quv57scs6S7T0rC6qyLfW20KU/P4p9hrbLPF+ILYrXY=
|
||||
github.com/inconshreveable/mousetrap v1.0.1 h1:U3uMjPSQEBMNp1lFxmllqCPM6P5u/Xq7Pgzkat/bFNc=
|
||||
github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
|
||||
github.com/jcmturner/aescts/v2 v2.0.0 h1:9YKLH6ey7H4eDBXW8khjYslgyqG2xZikXP0EQFKrle8=
|
||||
@@ -273,8 +274,8 @@ github.com/jcmturner/gofork v1.7.6 h1:QH0l3hzAU1tfT3rZCnW5zXl+orbkNMMRGJfdJjHVET
|
||||
github.com/jcmturner/gofork v1.7.6/go.mod h1:1622LH6i/EZqLloHfE7IeZ0uEJwMSUyQ/nDd82IeqRo=
|
||||
github.com/jcmturner/goidentity/v6 v6.0.1 h1:VKnZd2oEIMorCTsFBnJWbExfNN7yZr3EhJAxwOkZg6o=
|
||||
github.com/jcmturner/goidentity/v6 v6.0.1/go.mod h1:X1YW3bgtvwAXju7V3LCIMpY0Gbxyjn/mY9zx4tFonSg=
|
||||
github.com/jcmturner/gokrb5/v8 v8.4.3 h1:iTonLeSJOn7MVUtyMT+arAn5AKAPrkilzhGw8wE/Tq8=
|
||||
github.com/jcmturner/gokrb5/v8 v8.4.3/go.mod h1:dqRwJGXznQrzw6cWmyo6kH+E7jksEQG/CyVWsJEsJO0=
|
||||
github.com/jcmturner/gokrb5/v8 v8.4.4 h1:x1Sv4HaTpepFkXbt2IkL29DXRf8sOfZXo8eRKh687T8=
|
||||
github.com/jcmturner/gokrb5/v8 v8.4.4/go.mod h1:1btQEpgT6k+unzCwX1KdWMEwPPkkgBtP+F6aCACiMrs=
|
||||
github.com/jcmturner/rpc/v2 v2.0.3 h1:7FXXj8Ti1IaVFpSAziCZWNzbNuZmnvw/i6CqLNdWfZY=
|
||||
github.com/jcmturner/rpc/v2 v2.0.3/go.mod h1:VUJYCIDm3PVOEHw8sgt091/20OJjskO/YJki3ELg/Hc=
|
||||
github.com/jlaffaye/ftp v0.0.0-20190624084859-c1312a7102bf/go.mod h1:lli8NYPQOFy3O++YmYbqVgOcQ1JPCwdOy+5zSjKJ9qY=
|
||||
@@ -302,14 +303,14 @@ github.com/jzelinskie/whirlpool v0.0.0-20201016144138-0675e54bb004 h1:G+9t9cEtnC
|
||||
github.com/jzelinskie/whirlpool v0.0.0-20201016144138-0675e54bb004/go.mod h1:KmHnJWQrgEvbuy0vcvj00gtMqbvNn1L+3YUZLK/B92c=
|
||||
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
|
||||
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
||||
github.com/klauspost/compress v1.15.14 h1:i7WCKDToww0wA+9qrUZ1xOjp218vfFo3nTU6UHp+gOc=
|
||||
github.com/klauspost/compress v1.15.14/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM=
|
||||
github.com/klauspost/compress v1.16.0 h1:iULayQNOReoYUe+1qtKOqw9CwJv3aNQu8ivo7lw1HU4=
|
||||
github.com/klauspost/compress v1.16.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
|
||||
github.com/klauspost/cpuid/v2 v2.0.12 h1:p9dKCg8i4gmOxtv35DvrYoWqYzQrvEVdjQ762Y0OqZE=
|
||||
github.com/klauspost/cpuid/v2 v2.0.12/go.mod h1:g2LTdtYhdyuGPqyWyv7qRAmj1WBqxuObKfj5c0PQa7c=
|
||||
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
||||
github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
||||
github.com/koofr/go-httpclient v0.0.0-20221124135700-2eb26cff5dd8 h1:xcux4bzP9xUWcgCWhbiJrGW2qQUwyK8Lj9hWRCxk6hU=
|
||||
github.com/koofr/go-httpclient v0.0.0-20221124135700-2eb26cff5dd8/go.mod h1:lyCsww1Zr6kDOtAPNmV8/va7lHqyeP5ImNL2cS83iYg=
|
||||
github.com/koofr/go-httpclient v0.0.0-20230225102643-5d51a2e9dea6 h1:uF5FHZ/L5gvZTyBNhhcm55rRorL66DOs4KIeeVXZ8eI=
|
||||
github.com/koofr/go-httpclient v0.0.0-20230225102643-5d51a2e9dea6/go.mod h1:6HAT62hK6QH+ljNtZayJCKpbZy5hJIB12+1Ze1bFS7M=
|
||||
github.com/koofr/go-koofrclient v0.0.0-20221207135200-cbd7fc9ad6a6 h1:FHVoZMOVRA+6/y4yRlbiR3WvsrOcKBd/f64H7YiWR2U=
|
||||
github.com/koofr/go-koofrclient v0.0.0-20221207135200-cbd7fc9ad6a6/go.mod h1:MRAz4Gsxd+OzrZ0owwrUHc0zLESL+1Y5syqK/sJxK2A=
|
||||
github.com/kr/fs v0.1.0 h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8=
|
||||
@@ -358,16 +359,16 @@ github.com/ncw/swift/v2 v2.0.1/go.mod h1:z0A9RVdYPjNjXVo2pDOPxZ4eu3oarO1P91fTItc
|
||||
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646/go.mod h1:jpp1/29i3P1S/RLdc7JQKbRpFeM1dOBd8T9ki5s+AY8=
|
||||
github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
|
||||
github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
|
||||
github.com/onsi/gomega v1.24.1 h1:KORJXNNTzJXzu4ScJWssJfJMnJ+2QJqhoQSRwNlze9E=
|
||||
github.com/oracle/oci-go-sdk/v65 v65.30.0 h1:cP1IXZpJ0dxfDjFBulQm5YjA2pUjE83dyDinIp86rv0=
|
||||
github.com/oracle/oci-go-sdk/v65 v65.30.0/go.mod h1:oyMrMa1vOzzKTmPN+kqrTR9y9kPA2tU1igN3NUSNTIE=
|
||||
github.com/onsi/gomega v1.27.1 h1:rfztXRbg6nv/5f+Raen9RcGoSecHIFgBBLQK3Wdj754=
|
||||
github.com/oracle/oci-go-sdk/v65 v65.32.0 h1:6ASjGPE+k42xHgeAavNGbWtTZ4Z4KhlEhvJ4SVFMZrI=
|
||||
github.com/oracle/oci-go-sdk/v65 v65.32.0/go.mod h1:oyMrMa1vOzzKTmPN+kqrTR9y9kPA2tU1igN3NUSNTIE=
|
||||
github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc=
|
||||
github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ=
|
||||
github.com/pengsrc/go-shared v0.2.1-0.20190131101655-1999055a4a14 h1:XeOYlK9W1uCmhjJSsY78Mcuh7MVkNjTzmHx1yBzizSU=
|
||||
github.com/pengsrc/go-shared v0.2.1-0.20190131101655-1999055a4a14/go.mod h1:jVblp62SafmidSkvWrXyxAme3gaTfEtWwRPGz5cpvHg=
|
||||
github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU=
|
||||
github.com/pkg/browser v0.0.0-20210115035449-ce105d075bb4 h1:Qj1ukM4GlMWXNdMBuXcXfz/Kw9s1qm0CLY32QxuSImI=
|
||||
github.com/pkg/browser v0.0.0-20210115035449-ce105d075bb4/go.mod h1:N6UoU20jOqggOuDwUaBQpluzLNDqif3kq9z2wpdYEfQ=
|
||||
github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU=
|
||||
github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI=
|
||||
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
|
||||
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
@@ -411,8 +412,9 @@ github.com/putdotio/go-putio/putio v0.0.0-20200123120452-16d982cac2b8/go.mod h1:
|
||||
github.com/rfjakob/eme v1.1.2 h1:SxziR8msSOElPayZNFfQw4Tjx/Sbaeeh3eRvrHVMUs4=
|
||||
github.com/rfjakob/eme v1.1.2/go.mod h1:cVvpasglm/G3ngEfcfT/Wt0GwhkuO32pf/poW6Nyk1k=
|
||||
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
|
||||
github.com/rivo/uniseg v0.4.3 h1:utMvzDsuh3suAEnhH0RdHmoPbU648o6CvXxTx4SBMOw=
|
||||
github.com/rivo/uniseg v0.4.3/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
|
||||
github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis=
|
||||
github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
|
||||
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
||||
github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
|
||||
github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8=
|
||||
@@ -420,8 +422,8 @@ github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6po
|
||||
github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
|
||||
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
||||
github.com/ryszard/goskiplist v0.0.0-20150312221310-2dfbae5fcf46/go.mod h1:uAQ5PCi+MFsC7HjREoAz1BU+Mq60+05gifQSsHSDG/8=
|
||||
github.com/shirou/gopsutil/v3 v3.22.12 h1:oG0ns6poeUSxf78JtOsfygNWuEHYYz8hnnNg7P04TJs=
|
||||
github.com/shirou/gopsutil/v3 v3.22.12/go.mod h1:Xd7P1kwZcp5VW52+9XsirIKd/BROzbb2wdX3Kqlz9uI=
|
||||
github.com/shirou/gopsutil/v3 v3.23.2 h1:PAWSuiAszn7IhPMBtXsbSCafej7PqUOvY6YywlQUExU=
|
||||
github.com/shirou/gopsutil/v3 v3.23.2/go.mod h1:gv0aQw33GLo3pG8SiWKiQrbDzbRY1K80RyZJ7V4Th1M=
|
||||
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
|
||||
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
|
||||
github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
|
||||
@@ -457,10 +459,9 @@ github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
|
||||
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
||||
github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
|
||||
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
||||
github.com/t3rm1n4l/go-mega v0.0.0-20220725095014-c4e0c2b5debf h1:Y43S3e9P1NPs/QF4R5/SdlXj2d31540hP4Gk8VKNvDg=
|
||||
github.com/t3rm1n4l/go-mega v0.0.0-20220725095014-c4e0c2b5debf/go.mod h1:c+cGNU1qi9bO7ZF4IRMYk+KaZTNiQ/gQrSbyMmGFq1Q=
|
||||
github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8=
|
||||
github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
||||
github.com/t3rm1n4l/go-mega v0.0.0-20230228171823-a01a2cda13ca h1:I9rVnNXdIkij4UvMT7OmKhH9sOIvS8iXkxfPdnn9wQA=
|
||||
github.com/t3rm1n4l/go-mega v0.0.0-20230228171823-a01a2cda13ca/go.mod h1:suDIky6yrK07NnaBadCB4sS0CqFOvUK91lH7CR+JlDA=
|
||||
github.com/tinylib/msgp v1.0.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE=
|
||||
@@ -496,8 +497,8 @@ github.com/zeebo/errs v1.3.0 h1:hmiaKqgYZzcVgRL1Vkc1Mn2914BbzB0IBxs+ebeutGs=
|
||||
github.com/zeebo/errs v1.3.0/go.mod h1:sgbWHsvVuTPHcqJJGQ1WhI5KbWlHYz+2+2C/LSEtCw4=
|
||||
github.com/zeebo/pcg v1.0.1 h1:lyqfGeWiv4ahac6ttHs+I5hwtH/+1mrhlCtVNQM2kHo=
|
||||
github.com/zeebo/pcg v1.0.1/go.mod h1:09F0S9iiKrwn9rlI5yjLkmrug154/YRW6KnnXVDM/l4=
|
||||
go.etcd.io/bbolt v1.3.6 h1:/ecaJf0sk1l4l6V4awd65v2C3ILy7MSj+s/x1ADCIMU=
|
||||
go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4=
|
||||
go.etcd.io/bbolt v1.3.7 h1:j+zJOnnEjF/kyHlDDgGnVL/AIqIJPq8UoB2GSNfkUfQ=
|
||||
go.etcd.io/bbolt v1.3.7/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw=
|
||||
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
|
||||
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
|
||||
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
||||
@@ -508,7 +509,6 @@ go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
|
||||
goftp.io/server v0.4.2-0.20210615155358-d07a820aac35 h1:D4DhKKOtievTsshtbA6W0XL/gBjERF5/vu6Vhmb4sBw=
|
||||
goftp.io/server v0.4.2-0.20210615155358-d07a820aac35/go.mod h1:hFZeR656ErRt3ojMKt7H10vQ5nuWV1e0YeUTeorlR6k=
|
||||
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20190131182504-b8fe1690c613/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20190513172903-22d7a77e9e5f/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
@@ -520,10 +520,10 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh
|
||||
golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
||||
golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
||||
golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw=
|
||||
golang.org/x/crypto v0.5.0 h1:U/0M97KRkSFvyD/3FSmdP5W5swImpNgle/EHFhOsQPE=
|
||||
golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU=
|
||||
golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58=
|
||||
golang.org/x/crypto v0.7.0 h1:AvwMYaRytfdeVt3u6mLaxYtErKYjxA2OXjJ1HHq6t3A=
|
||||
golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
|
||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
|
||||
@@ -548,8 +548,8 @@ golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPI
|
||||
golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
|
||||
golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=
|
||||
golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
|
||||
golang.org/x/mobile v0.0.0-20221110043201-43a038452099 h1:aIu0lKmfdgtn2uTj7JI2oN4TUrQvgB+wzTPO23bCKt8=
|
||||
golang.org/x/mobile v0.0.0-20221110043201-43a038452099/go.mod h1:aAjjkJNdrh3PMckS4B10TGS2nag27cbKR1y2BpUxsiY=
|
||||
golang.org/x/mobile v0.0.0-20230301163155-e0f57694e12c h1:Gk61ECugwEHL6IiyyNLXNzmu8XslmRP2dS0xjIYhbb4=
|
||||
golang.org/x/mobile v0.0.0-20230301163155-e0f57694e12c/go.mod h1:aAjjkJNdrh3PMckS4B10TGS2nag27cbKR1y2BpUxsiY=
|
||||
golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
|
||||
golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
|
||||
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
|
||||
@@ -595,12 +595,12 @@ golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qx
|
||||
golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
|
||||
golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
|
||||
golang.org/x/net v0.0.0-20220524220425-1d687d428aca/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
|
||||
golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||
golang.org/x/net v0.0.0-20220725212005-46097bf591d3/go.mod h1:AaygXjzTFtRAg2ttMY5RMuhpJ3cNnI0XpyFJD1iQRSM=
|
||||
golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco=
|
||||
golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g=
|
||||
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
|
||||
golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
|
||||
golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ=
|
||||
golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
|
||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||
@@ -609,8 +609,8 @@ golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4Iltr
|
||||
golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
||||
golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
||||
golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc=
|
||||
golang.org/x/oauth2 v0.4.0 h1:NF0gk8LVPg1Ml7SSbGyySuoxdsXitj7TvgvuRxIMc/M=
|
||||
golang.org/x/oauth2 v0.4.0/go.mod h1:RznEsdpjGAINPTOF0UH/t+xJ75L18YO3Ho6Pyn+uRec=
|
||||
golang.org/x/oauth2 v0.6.0 h1:Lh8GPgSKBfWSwFvtuWOfeI3aAAnbXTSutYxJiOJFgIw=
|
||||
golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw=
|
||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
@@ -659,7 +659,6 @@ golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7w
|
||||
golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
@@ -669,6 +668,7 @@ golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7w
|
||||
golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
@@ -680,14 +680,15 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc
|
||||
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU=
|
||||
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ=
|
||||
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
golang.org/x/term v0.5.0 h1:n2a8QNdAb0sZNpU9R1ALUXBbY+w51fCQDN+7EdxNBsY=
|
||||
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
|
||||
golang.org/x/term v0.6.0 h1:clScbb1cHjoCkyRbWwBEUZ5H/tIFu5TAXIqaZD0Gcjw=
|
||||
golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
|
||||
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
@@ -696,9 +697,9 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||
golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||
golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo=
|
||||
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||
golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68=
|
||||
golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
|
||||
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
@@ -768,8 +769,8 @@ google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0M
|
||||
google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
|
||||
google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM=
|
||||
google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc=
|
||||
google.golang.org/api v0.106.0 h1:ffmW0faWCwKkpbbtvlY/K/8fUl+JKvNS5CVzRoyfCv8=
|
||||
google.golang.org/api v0.106.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY=
|
||||
google.golang.org/api v0.112.0 h1:iDmzvZ4C086R3+en4nSyIf07HlQKMOX1Xx2dmia/+KQ=
|
||||
google.golang.org/api v0.112.0/go.mod h1:737UfWHNsOq4F3REUTmb+GN9pugkgNLCayLTfoIKpPc=
|
||||
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
|
||||
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
||||
google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
||||
@@ -807,8 +808,8 @@ google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7Fc
|
||||
google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
||||
google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
||||
google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
||||
google.golang.org/genproto v0.0.0-20221227171554-f9683d7f8bef h1:uQ2vjV/sHTsWSqdKeLqmwitzgvjMl7o4IdtHwUDXSJY=
|
||||
google.golang.org/genproto v0.0.0-20221227171554-f9683d7f8bef/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM=
|
||||
google.golang.org/genproto v0.0.0-20230303212802-e74f57abe488 h1:QQF+HdiI4iocoxUjjpLgvTYDHKm99C/VtTBFnfiCJos=
|
||||
google.golang.org/genproto v0.0.0-20230303212802-e74f57abe488/go.mod h1:TvhZT5f700eVlTNwND1xoEZQeWTB2RY/65kplwl/bFA=
|
||||
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
||||
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
|
||||
google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
|
||||
@@ -822,8 +823,8 @@ google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3Iji
|
||||
google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
|
||||
google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
|
||||
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
|
||||
google.golang.org/grpc v1.51.0 h1:E1eGv1FTqoLIdnBCZufiSHgKjlqG6fKFf6pPWtMTh8U=
|
||||
google.golang.org/grpc v1.51.0/go.mod h1:wgNDFcnuBGmxLKI/qn4T+m5BtEBYXJPvibbUPsAIPww=
|
||||
google.golang.org/grpc v1.53.0 h1:LAv2ds7cmFV/XTS3XG1NneeENYrXGmorPxsBbptIjNc=
|
||||
google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw=
|
||||
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
|
||||
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
|
||||
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
|
||||
|
||||
20
vfs/file.go
20
vfs/file.go
@@ -47,6 +47,7 @@ type File struct {
|
||||
o fs.Object // NB o may be nil if file is being written
|
||||
leaf string // leaf name of the object
|
||||
writers []Handle // writers for this file
|
||||
virtualModTime *time.Time // modtime for backends with Precision == fs.ModTimeNotSupported
|
||||
pendingModTime time.Time // will be applied once o becomes available, i.e. after file was written
|
||||
pendingRenameFun func(ctx context.Context) error // will be run/renamed after all writers close
|
||||
sys atomic.Value // user defined info to be attached here
|
||||
@@ -314,9 +315,20 @@ func (f *File) _roundModTime(modTime time.Time) time.Time {
|
||||
// if NoModTime is set then it returns the mod time of the directory
|
||||
func (f *File) ModTime() (modTime time.Time) {
|
||||
f.mu.RLock()
|
||||
d, o, pendingModTime := f.d, f.o, f.pendingModTime
|
||||
d, o, pendingModTime, virtualModTime := f.d, f.o, f.pendingModTime, f.virtualModTime
|
||||
f.mu.RUnlock()
|
||||
|
||||
// Set the virtual modtime up for backends which don't support setting modtime
|
||||
//
|
||||
// Note that we only cache modtime values that we have returned to the OS
|
||||
// if we haven't returned a value to the OS then we can change it
|
||||
defer func() {
|
||||
if f.d.f.Precision() == fs.ModTimeNotSupported && (virtualModTime == nil || !virtualModTime.Equal(modTime)) {
|
||||
f.virtualModTime = &modTime
|
||||
fs.Debugf(f._path(), "Set virtual modtime to %v", f.virtualModTime)
|
||||
}
|
||||
}()
|
||||
|
||||
if d.vfs.Opt.NoModTime {
|
||||
return d.ModTime()
|
||||
}
|
||||
@@ -334,6 +346,10 @@ func (f *File) ModTime() (modTime time.Time) {
|
||||
if !pendingModTime.IsZero() {
|
||||
return f._roundModTime(pendingModTime)
|
||||
}
|
||||
if virtualModTime != nil && !virtualModTime.IsZero() {
|
||||
fs.Debugf(f._path(), "Returning virtual modtime %v", f.virtualModTime)
|
||||
return f._roundModTime(*virtualModTime)
|
||||
}
|
||||
if o == nil {
|
||||
return time.Now()
|
||||
}
|
||||
@@ -477,6 +493,8 @@ func (f *File) setObject(o fs.Object) {
|
||||
func (f *File) setObjectNoUpdate(o fs.Object) {
|
||||
f.mu.Lock()
|
||||
f.o = o
|
||||
f.virtualModTime = nil
|
||||
fs.Debugf(f._path(), "Reset virtual modtime")
|
||||
f.mu.Unlock()
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user