forked from TrueCloudLab/rclone
Compare commits
18 commits
tcl/master
...
v1.63-stab
Author | SHA1 | Date | |
---|---|---|---|
|
bd1fbcae12 | ||
|
7aa097c8ad | ||
|
10171be395 | ||
|
80ff676f78 | ||
|
9410ccb27a | ||
|
3cd07af85b | ||
|
cec75c873f | ||
|
07d85297c0 | ||
|
9aa714e659 | ||
|
320c95048d | ||
|
19dba3bf28 | ||
|
842df59419 | ||
|
73d1b72bd7 | ||
|
a3cfe5f7fe | ||
|
9d3b8d9a9f | ||
|
73e66a3798 | ||
|
f150e27abe | ||
|
a72e082e6b |
27 changed files with 731 additions and 381 deletions
426
MANUAL.html
generated
426
MANUAL.html
generated
File diff suppressed because it is too large
Load diff
104
MANUAL.md
generated
104
MANUAL.md
generated
|
@ -1,6 +1,6 @@
|
|||
% rclone(1) User Manual
|
||||
% Nick Craig-Wood
|
||||
% Jun 30, 2023
|
||||
% Jul 17, 2023
|
||||
|
||||
# Rclone syncs your files to cloud storage
|
||||
|
||||
|
@ -18,7 +18,7 @@
|
|||
|
||||
Rclone is a command-line program to manage files on cloud storage. It
|
||||
is a feature-rich alternative to cloud vendors' web storage
|
||||
interfaces. [Over 40 cloud storage products](#providers) support
|
||||
interfaces. [Over 70 cloud storage products](#providers) support
|
||||
rclone including S3 object stores, business & consumer file storage
|
||||
services, as well as standard transfer protocols.
|
||||
|
||||
|
@ -2723,6 +2723,40 @@ See the [global flags page](https://rclone.org/flags/) for global options not li
|
|||
|
||||
* [rclone config](https://rclone.org/commands/rclone_config/) - Enter an interactive configuration session.
|
||||
|
||||
# rclone config redacted
|
||||
|
||||
Print redacted (decrypted) config file, or the redacted config for a single remote.
|
||||
|
||||
# Synopsis
|
||||
|
||||
This prints a redacted copy of the config file, either the
|
||||
whole config file or for a given remote.
|
||||
|
||||
The config file will be redacted by replacing all passwords and other
|
||||
sensitive info with XXX.
|
||||
|
||||
This makes the config file suitable for posting online for support.
|
||||
|
||||
It should be double checked before posting as the redaction may not be perfect.
|
||||
|
||||
|
||||
|
||||
```
|
||||
rclone config redacted [<remote>] [flags]
|
||||
```
|
||||
|
||||
# Options
|
||||
|
||||
```
|
||||
-h, --help help for redacted
|
||||
```
|
||||
|
||||
See the [global flags page](https://rclone.org/flags/) for global options not listed here.
|
||||
|
||||
# SEE ALSO
|
||||
|
||||
* [rclone config](https://rclone.org/commands/rclone_config/) - Enter an interactive configuration session.
|
||||
|
||||
# rclone config show
|
||||
|
||||
Print (decrypted) config file, or the config for a single remote.
|
||||
|
@ -11852,7 +11886,7 @@ all files on `remote:` excluding those in root directory `dir` and sub
|
|||
directories.
|
||||
|
||||
E.g. on Microsoft Windows `rclone ls remote: --exclude "*\[{JP,KR,HK}\]*"`
|
||||
lists the files in `remote:` with `[JP]` or `[KR]` or `[HK]` in
|
||||
lists the files in `remote:` without `[JP]` or `[KR]` or `[HK]` in
|
||||
their name. Quotes prevent the shell from interpreting the `\`
|
||||
characters.`\` characters escape the `[` and `]` so an rclone filter
|
||||
treats them literally rather than as a character-range. The `{` and `}`
|
||||
|
@ -15194,7 +15228,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.63.0")
|
||||
--user-agent string Set the user-agent to a specified string (default "rclone/v1.63.1")
|
||||
-v, --verbose count Print lots more stuff (repeat for more)
|
||||
```
|
||||
|
||||
|
@ -27890,7 +27924,7 @@ to be the same account as the Dropbox you want to access)
|
|||
|
||||
6. Switch to the `Permissions` tab. Enable at least the following permissions: `account_info.read`, `files.metadata.write`, `files.content.write`, `files.content.read`, `sharing.write`. The `files.metadata.read` and `sharing.read` checkboxes will be marked too. Click `Submit`
|
||||
|
||||
7. Switch to the `Settings` tab. Fill `OAuth2 - Redirect URIs` as `http://localhost:53682/`
|
||||
7. Switch to the `Settings` tab. Fill `OAuth2 - Redirect URIs` as `http://localhost:53682/` and click on `Add`
|
||||
|
||||
8. Find the `App key` and `App secret` values on the `Settings` tab. Use these values in rclone config to add a new remote or edit an existing remote. The `App key` setting corresponds to `client_id` in rclone config, the `App secret` corresponds to `client_secret`
|
||||
|
||||
|
@ -30874,7 +30908,7 @@ be the same account as the Google Drive you want to access)
|
|||
"Google Drive API".
|
||||
|
||||
4. Click "Credentials" in the left-side panel (not "Create
|
||||
credentials", which opens the wizard), then "Create credentials"
|
||||
credentials", which opens the wizard).
|
||||
|
||||
5. If you already configured an "Oauth Consent Screen", then skip
|
||||
to the next step; if not, click on "CONFIGURE CONSENT SCREEN" button
|
||||
|
@ -33696,8 +33730,6 @@ y/e/d> y
|
|||
|
||||
[Mail.ru Cloud](https://cloud.mail.ru/) is a cloud storage provided by a Russian internet company [Mail.Ru Group](https://mail.ru). The official desktop client is [Disk-O:](https://disk-o.cloud/en), available on Windows and Mac OS.
|
||||
|
||||
Currently it is recommended to disable 2FA on Mail.ru accounts intended for rclone until it gets eventually implemented.
|
||||
|
||||
## Features highlights
|
||||
|
||||
- Paths may be as deep as required, e.g. `remote:directory/subdirectory`
|
||||
|
@ -43570,6 +43602,27 @@ Options:
|
|||
|
||||
# Changelog
|
||||
|
||||
## v1.63.1 - 2023-07-17
|
||||
|
||||
[See commits](https://github.com/rclone/rclone/compare/v1.63.0...v1.63.1)
|
||||
|
||||
* Bug Fixes
|
||||
* build: Fix macos builds for versions < 12 (Anagh Kumar Baranwal)
|
||||
* dirtree: Fix performance with large directories of directories and `--fast-list` (Nick Craig-Wood)
|
||||
* operations
|
||||
* Fix deadlock when using `lsd`/`ls` with `--progress` (Nick Craig-Wood)
|
||||
* Fix `.rclonelink` files not being converted back to symlinks (Nick Craig-Wood)
|
||||
* doc fixes (Dean Attali, Mahad, Nick Craig-Wood, Sawada Tsunayoshi, Vladislav Vorobev)
|
||||
* Local
|
||||
* Fix partial directory read for corrupted filesystem (Nick Craig-Wood)
|
||||
* Box
|
||||
* Fix reconnect failing with HTTP 400 Bad Request (albertony)
|
||||
* Smb
|
||||
* Fix "Statfs failed: bucket or container name is needed" when mounting (Nick Craig-Wood)
|
||||
* WebDAV
|
||||
* Nextcloud: fix must use /dav/files/USER endpoint not /webdav error (Paul)
|
||||
* Nextcloud chunking: add more guidance for the user to check the config (darix)
|
||||
|
||||
## v1.63.0 - 2023-06-30
|
||||
|
||||
[See commits](https://github.com/rclone/rclone/compare/v1.62.0...v1.63.0)
|
||||
|
@ -49233,32 +49286,43 @@ put them back in again.` >}}
|
|||
* zzq <i@zhangzqs.cn>
|
||||
* mac-15 <usman.ilamdin@phpstudios.com>
|
||||
|
||||
# Contact the rclone project #
|
||||
# Contact the rclone project
|
||||
|
||||
## Forum ##
|
||||
## Forum
|
||||
|
||||
Forum for questions and general discussion:
|
||||
|
||||
* https://forum.rclone.org
|
||||
- https://forum.rclone.org
|
||||
|
||||
## GitHub repository ##
|
||||
## Business support
|
||||
|
||||
For business support or sponsorship enquiries please see:
|
||||
|
||||
- https://rclone.com/
|
||||
- sponsorship@rclone.com
|
||||
|
||||
## GitHub repository
|
||||
|
||||
The project's repository is located at:
|
||||
|
||||
* https://github.com/rclone/rclone
|
||||
- https://github.com/rclone/rclone
|
||||
|
||||
There you can file bug reports or contribute with pull requests.
|
||||
|
||||
## Twitter ##
|
||||
## Twitter
|
||||
|
||||
You can also follow me on twitter for rclone announcements:
|
||||
You can also follow Nick on twitter for rclone announcements:
|
||||
|
||||
* [@njcw](https://twitter.com/njcw)
|
||||
- [@njcw](https://twitter.com/njcw)
|
||||
|
||||
## Email ##
|
||||
## Email
|
||||
|
||||
Or if all else fails or you want to ask something private or
|
||||
confidential email [Nick Craig-Wood](mailto:nick@craig-wood.com).
|
||||
Please don't email me requests for help - those are better directed to
|
||||
the forum. Thanks!
|
||||
confidential
|
||||
|
||||
- info@rclone.com
|
||||
|
||||
Please don't email requests for help to this address - those are
|
||||
better directed to the forum unless you'd like to sign up for business
|
||||
support.
|
||||
|
||||
|
|
91
MANUAL.txt
generated
91
MANUAL.txt
generated
|
@ -1,6 +1,6 @@
|
|||
rclone(1) User Manual
|
||||
Nick Craig-Wood
|
||||
Jun 30, 2023
|
||||
Jul 17, 2023
|
||||
|
||||
Rclone syncs your files to cloud storage
|
||||
|
||||
|
@ -16,7 +16,7 @@ About rclone
|
|||
|
||||
Rclone is a command-line program to manage files on cloud storage. It is
|
||||
a feature-rich alternative to cloud vendors' web storage interfaces.
|
||||
Over 40 cloud storage products support rclone including S3 object
|
||||
Over 70 cloud storage products support rclone including S3 object
|
||||
stores, business & consumer file storage services, as well as standard
|
||||
transfer protocols.
|
||||
|
||||
|
@ -2481,6 +2481,36 @@ SEE ALSO
|
|||
|
||||
- rclone config - Enter an interactive configuration session.
|
||||
|
||||
rclone config redacted
|
||||
|
||||
Print redacted (decrypted) config file, or the redacted config for a
|
||||
single remote.
|
||||
|
||||
Synopsis
|
||||
|
||||
This prints a redacted copy of the config file, either the whole config
|
||||
file or for a given remote.
|
||||
|
||||
The config file will be redacted by replacing all passwords and other
|
||||
sensitive info with XXX.
|
||||
|
||||
This makes the config file suitable for posting online for support.
|
||||
|
||||
It should be double checked before posting as the redaction may not be
|
||||
perfect.
|
||||
|
||||
rclone config redacted [<remote>] [flags]
|
||||
|
||||
Options
|
||||
|
||||
-h, --help help for redacted
|
||||
|
||||
See the global flags page for global options not listed here.
|
||||
|
||||
SEE ALSO
|
||||
|
||||
- rclone config - Enter an interactive configuration session.
|
||||
|
||||
rclone config show
|
||||
|
||||
Print (decrypted) config file, or the config for a single remote.
|
||||
|
@ -11395,7 +11425,7 @@ all files on remote: excluding those in root directory dir and sub
|
|||
directories.
|
||||
|
||||
E.g. on Microsoft Windows rclone ls remote: --exclude "*\[{JP,KR,HK}\]*"
|
||||
lists the files in remote: with [JP] or [KR] or [HK] in their name.
|
||||
lists the files in remote: without [JP] or [KR] or [HK] in their name.
|
||||
Quotes prevent the shell from interpreting the \ characters.\ characters
|
||||
escape the [ and ] so an rclone filter treats them literally rather than
|
||||
as a character-range. The { and } define an rclone pattern list. For
|
||||
|
@ -14738,7 +14768,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.63.0")
|
||||
--user-agent string Set the user-agent to a specified string (default "rclone/v1.63.1")
|
||||
-v, --verbose count Print lots more stuff (repeat for more)
|
||||
|
||||
Backend Flags
|
||||
|
@ -27240,7 +27270,7 @@ Here is how to create your own Dropbox App ID for rclone:
|
|||
Click Submit
|
||||
|
||||
7. Switch to the Settings tab. Fill OAuth2 - Redirect URIs as
|
||||
http://localhost:53682/
|
||||
http://localhost:53682/ and click on Add
|
||||
|
||||
8. Find the App key and App secret values on the Settings tab. Use
|
||||
these values in rclone config to add a new remote or edit an
|
||||
|
@ -30238,7 +30268,7 @@ Here is how to create your own Google Drive client ID for rclone:
|
|||
"Google Drive API".
|
||||
|
||||
4. Click "Credentials" in the left-side panel (not "Create
|
||||
credentials", which opens the wizard), then "Create credentials"
|
||||
credentials", which opens the wizard).
|
||||
|
||||
5. If you already configured an "Oauth Consent Screen", then skip to
|
||||
the next step; if not, click on "CONFIGURE CONSENT SCREEN" button
|
||||
|
@ -33101,9 +33131,6 @@ Mail.ru Cloud is a cloud storage provided by a Russian internet company
|
|||
Mail.Ru Group. The official desktop client is Disk-O:, available on
|
||||
Windows and Mac OS.
|
||||
|
||||
Currently it is recommended to disable 2FA on Mail.ru accounts intended
|
||||
for rclone until it gets eventually implemented.
|
||||
|
||||
Features highlights
|
||||
|
||||
- Paths may be as deep as required, e.g. remote:directory/subdirectory
|
||||
|
@ -43068,6 +43095,35 @@ Options:
|
|||
|
||||
Changelog
|
||||
|
||||
v1.63.1 - 2023-07-17
|
||||
|
||||
See commits
|
||||
|
||||
- Bug Fixes
|
||||
- build: Fix macos builds for versions < 12 (Anagh Kumar Baranwal)
|
||||
- dirtree: Fix performance with large directories of directories
|
||||
and --fast-list (Nick Craig-Wood)
|
||||
- operations
|
||||
- Fix deadlock when using lsd/ls with --progress (Nick
|
||||
Craig-Wood)
|
||||
- Fix .rclonelink files not being converted back to symlinks
|
||||
(Nick Craig-Wood)
|
||||
- doc fixes (Dean Attali, Mahad, Nick Craig-Wood, Sawada
|
||||
Tsunayoshi, Vladislav Vorobev)
|
||||
- Local
|
||||
- Fix partial directory read for corrupted filesystem (Nick
|
||||
Craig-Wood)
|
||||
- Box
|
||||
- Fix reconnect failing with HTTP 400 Bad Request (albertony)
|
||||
- Smb
|
||||
- Fix "Statfs failed: bucket or container name is needed" when
|
||||
mounting (Nick Craig-Wood)
|
||||
- WebDAV
|
||||
- Nextcloud: fix must use /dav/files/USER endpoint not /webdav
|
||||
error (Paul)
|
||||
- Nextcloud chunking: add more guidance for the user to check the
|
||||
config (darix)
|
||||
|
||||
v1.63.0 - 2023-06-30
|
||||
|
||||
See commits
|
||||
|
@ -50160,6 +50216,13 @@ Forum for questions and general discussion:
|
|||
|
||||
- https://forum.rclone.org
|
||||
|
||||
Business support
|
||||
|
||||
For business support or sponsorship enquiries please see:
|
||||
|
||||
- https://rclone.com/
|
||||
- sponsorship@rclone.com
|
||||
|
||||
GitHub repository
|
||||
|
||||
The project's repository is located at:
|
||||
|
@ -50170,12 +50233,16 @@ There you can file bug reports or contribute with pull requests.
|
|||
|
||||
Twitter
|
||||
|
||||
You can also follow me on twitter for rclone announcements:
|
||||
You can also follow Nick on twitter for rclone announcements:
|
||||
|
||||
- [@njcw](https://twitter.com/njcw)
|
||||
|
||||
Email
|
||||
|
||||
Or if all else fails or you want to ask something private or
|
||||
confidential email Nick Craig-Wood. Please don't email me requests for
|
||||
help - those are better directed to the forum. Thanks!
|
||||
confidential
|
||||
|
||||
- info@rclone.com
|
||||
|
||||
Please don't email requests for help to this address - those are better
|
||||
directed to the forum unless you'd like to sign up for business support.
|
||||
|
|
2
VERSION
2
VERSION
|
@ -1 +1 @@
|
|||
v1.63.0
|
||||
v1.63.1
|
||||
|
|
|
@ -77,7 +77,7 @@ var (
|
|||
)
|
||||
|
||||
type boxCustomClaims struct {
|
||||
jwt.RegisteredClaims
|
||||
jwt.StandardClaims
|
||||
BoxSubType string `json:"box_sub_type,omitempty"`
|
||||
}
|
||||
|
||||
|
@ -206,12 +206,14 @@ func getClaims(boxConfig *api.ConfigJSON, boxSubType string) (claims *boxCustomC
|
|||
}
|
||||
|
||||
claims = &boxCustomClaims{
|
||||
RegisteredClaims: jwt.RegisteredClaims{
|
||||
ID: val,
|
||||
//lint:ignore SA1019 since we need to use jwt.StandardClaims even if deprecated in jwt-go v4 until a more permanent solution is ready in time before jwt-go v5 where it is removed entirely
|
||||
//nolint:staticcheck // Don't include staticcheck when running golangci-lint to avoid SA1019
|
||||
StandardClaims: jwt.StandardClaims{
|
||||
Id: val,
|
||||
Issuer: boxConfig.BoxAppSettings.ClientID,
|
||||
Subject: boxConfig.EnterpriseID,
|
||||
Audience: jwt.ClaimStrings{tokenURL},
|
||||
ExpiresAt: jwt.NewNumericDate(time.Now().Add(time.Second * 45)),
|
||||
Audience: tokenURL,
|
||||
ExpiresAt: time.Now().Add(time.Second * 45).Unix(),
|
||||
},
|
||||
BoxSubType: boxSubType,
|
||||
}
|
||||
|
|
|
@ -516,7 +516,7 @@ func (f *Fs) List(ctx context.Context, dir string) (entries fs.DirEntries, err e
|
|||
continue
|
||||
}
|
||||
}
|
||||
err = fmt.Errorf("failed to read directory %q: %w", namepath, fierr)
|
||||
fierr = fmt.Errorf("failed to get info about directory entry %q: %w", namepath, fierr)
|
||||
fs.Errorf(dir, "%v", fierr)
|
||||
_ = accounting.Stats(ctx).Error(fserrors.NoRetryError(fierr)) // fail the sync
|
||||
continue
|
||||
|
|
|
@ -19,6 +19,7 @@ import (
|
|||
"github.com/rclone/rclone/fs/filter"
|
||||
"github.com/rclone/rclone/fs/hash"
|
||||
"github.com/rclone/rclone/fs/object"
|
||||
"github.com/rclone/rclone/fs/operations"
|
||||
"github.com/rclone/rclone/fstest"
|
||||
"github.com/rclone/rclone/lib/file"
|
||||
"github.com/rclone/rclone/lib/readers"
|
||||
|
@ -514,3 +515,43 @@ func TestFilterSymlinkCopyLinks(t *testing.T) {
|
|||
func TestFilterSymlinkLinks(t *testing.T) {
|
||||
testFilterSymlink(t, false)
|
||||
}
|
||||
|
||||
func TestCopySymlink(t *testing.T) {
|
||||
ctx := context.Background()
|
||||
r := fstest.NewRun(t)
|
||||
defer r.Finalise()
|
||||
when := time.Now()
|
||||
f := r.Flocal.(*Fs)
|
||||
|
||||
// Create a file and a symlink to it
|
||||
r.WriteFile("src/file.txt", "hello world", when)
|
||||
require.NoError(t, os.Symlink("file.txt", filepath.Join(r.LocalName, "src", "link.txt")))
|
||||
defer func() {
|
||||
// Reset -L/-l mode
|
||||
f.opt.FollowSymlinks = false
|
||||
f.opt.TranslateSymlinks = false
|
||||
f.lstat = os.Lstat
|
||||
}()
|
||||
|
||||
// Set fs into "-l/--links" mode
|
||||
f.opt.FollowSymlinks = false
|
||||
f.opt.TranslateSymlinks = true
|
||||
f.lstat = os.Lstat
|
||||
|
||||
// Create dst
|
||||
require.NoError(t, f.Mkdir(ctx, "dst"))
|
||||
|
||||
// Do copy from src into dst
|
||||
src, err := f.NewObject(ctx, "src/link.txt.rclonelink")
|
||||
require.NoError(t, err)
|
||||
require.NotNil(t, src)
|
||||
dst, err := operations.Copy(ctx, f, nil, "dst/link.txt.rclonelink", src)
|
||||
require.NoError(t, err)
|
||||
require.NotNil(t, dst)
|
||||
|
||||
// Test that we made a symlink and it has the right contents
|
||||
dstPath := filepath.Join(r.LocalName, "dst", "link.txt")
|
||||
linkContents, err := os.Readlink(dstPath)
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, "file.txt", linkContents)
|
||||
}
|
||||
|
|
|
@ -447,7 +447,8 @@ func (f *Fs) List(ctx context.Context, dir string) (entries fs.DirEntries, err e
|
|||
func (f *Fs) About(ctx context.Context) (_ *fs.Usage, err error) {
|
||||
share, dir := f.split("/")
|
||||
if share == "" {
|
||||
return nil, fs.ErrorListBucketRequired
|
||||
// Just return empty info rather than an error if called on the root
|
||||
return &fs.Usage{}, nil
|
||||
}
|
||||
dir = f.toSambaPath(dir)
|
||||
|
||||
|
|
|
@ -14,7 +14,6 @@ import (
|
|||
"io"
|
||||
"net/http"
|
||||
"path"
|
||||
"strings"
|
||||
|
||||
"github.com/rclone/rclone/fs"
|
||||
"github.com/rclone/rclone/lib/readers"
|
||||
|
@ -41,10 +40,6 @@ func (f *Fs) setUploadChunkSize(cs fs.SizeSuffix) (old fs.SizeSuffix, err error)
|
|||
return
|
||||
}
|
||||
|
||||
func (f *Fs) getChunksUploadURL() string {
|
||||
return strings.Replace(f.endpointURL, "/dav/files/", "/dav/uploads/", 1)
|
||||
}
|
||||
|
||||
func (o *Object) getChunksUploadDir() (string, error) {
|
||||
hasher := md5.New()
|
||||
_, err := hasher.Write([]byte(o.filePath()))
|
||||
|
@ -55,12 +50,16 @@ func (o *Object) getChunksUploadDir() (string, error) {
|
|||
return uploadDir, nil
|
||||
}
|
||||
|
||||
func (f *Fs) verifyChunkConfig() error {
|
||||
if f.opt.ChunkSize != 0 && !validateNextCloudChunkedURL.MatchString(f.endpointURL) {
|
||||
return errors.New("chunked upload with nextcloud must use /dav/files/USER endpoint not /webdav")
|
||||
func (f *Fs) getChunksUploadURL() (string, error) {
|
||||
submatch := nextCloudURLRegex.FindStringSubmatch(f.endpointURL)
|
||||
if submatch == nil {
|
||||
return "", errors.New("the remote url looks incorrect. Note that nextcloud chunked uploads require you to use the /dav/files/USER endpoint instead of /webdav. Please check 'rclone config show remotename' to verify that the url field ends in /dav/files/USERNAME")
|
||||
}
|
||||
|
||||
return nil
|
||||
baseURL, user := submatch[1], submatch[2]
|
||||
chunksUploadURL := fmt.Sprintf("%s/dav/uploads/%s/", baseURL, user)
|
||||
|
||||
return chunksUploadURL, nil
|
||||
}
|
||||
|
||||
func (o *Object) shouldUseChunkedUpload(src fs.ObjectInfo) bool {
|
||||
|
|
|
@ -569,7 +569,8 @@ func (f *Fs) fetchAndSetBearerToken() error {
|
|||
return nil
|
||||
}
|
||||
|
||||
var validateNextCloudChunkedURL = regexp.MustCompile(`^.*/dav/files/[^/]+/?$`)
|
||||
// The WebDAV url can optionally be suffixed with a path. This suffix needs to be ignored for determining the temporary upload directory of chunks.
|
||||
var nextCloudURLRegex = regexp.MustCompile(`^(.*)/dav/files/([^/]+)`)
|
||||
|
||||
// setQuirks adjusts the Fs for the vendor passed in
|
||||
func (f *Fs) setQuirks(ctx context.Context, vendor string) error {
|
||||
|
@ -592,11 +593,18 @@ func (f *Fs) setQuirks(ctx context.Context, vendor string) error {
|
|||
f.propsetMtime = true
|
||||
f.hasOCSHA1 = true
|
||||
f.canChunk = true
|
||||
if err := f.verifyChunkConfig(); err != nil {
|
||||
return err
|
||||
|
||||
if f.opt.ChunkSize == 0 {
|
||||
fs.Logf(nil, "Chunked uploads are disabled because nextcloud_chunk_size is set to 0")
|
||||
} else {
|
||||
chunksUploadURL, err := f.getChunksUploadURL()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
f.chunksUploadURL = chunksUploadURL
|
||||
fs.Logf(nil, "Chunks temporary upload directory: %s", f.chunksUploadURL)
|
||||
}
|
||||
f.chunksUploadURL = f.getChunksUploadURL()
|
||||
fs.Logf(nil, "Chunks temporary upload directory: %s", f.chunksUploadURL)
|
||||
case "sharepoint":
|
||||
// To mount sharepoint, two Cookies are required
|
||||
// They have to be set instead of BasicAuth
|
||||
|
|
|
@ -114,7 +114,7 @@ commands_order = [
|
|||
ignore_docs = [
|
||||
"downloads.md",
|
||||
"privacy.md",
|
||||
"donate.md",
|
||||
"sponsor.md",
|
||||
]
|
||||
|
||||
def read_doc(doc):
|
||||
|
|
|
@ -21,7 +21,7 @@ notoc: true
|
|||
|
||||
Rclone is a command-line program to manage files on cloud storage. It
|
||||
is a feature-rich alternative to cloud vendors' web storage
|
||||
interfaces. [Over 40 cloud storage products](#providers) support
|
||||
interfaces. [Over 70 cloud storage products](#providers) support
|
||||
rclone including S3 object stores, business & consumer file storage
|
||||
services, as well as standard transfer protocols.
|
||||
|
||||
|
|
|
@ -5,6 +5,27 @@ description: "Rclone Changelog"
|
|||
|
||||
# Changelog
|
||||
|
||||
## v1.63.1 - 2023-07-17
|
||||
|
||||
[See commits](https://github.com/rclone/rclone/compare/v1.63.0...v1.63.1)
|
||||
|
||||
* Bug Fixes
|
||||
* build: Fix macos builds for versions < 12 (Anagh Kumar Baranwal)
|
||||
* dirtree: Fix performance with large directories of directories and `--fast-list` (Nick Craig-Wood)
|
||||
* operations
|
||||
* Fix deadlock when using `lsd`/`ls` with `--progress` (Nick Craig-Wood)
|
||||
* Fix `.rclonelink` files not being converted back to symlinks (Nick Craig-Wood)
|
||||
* doc fixes (Dean Attali, Mahad, Nick Craig-Wood, Sawada Tsunayoshi, Vladislav Vorobev)
|
||||
* Local
|
||||
* Fix partial directory read for corrupted filesystem (Nick Craig-Wood)
|
||||
* Box
|
||||
* Fix reconnect failing with HTTP 400 Bad Request (albertony)
|
||||
* Smb
|
||||
* Fix "Statfs failed: bucket or container name is needed" when mounting (Nick Craig-Wood)
|
||||
* WebDAV
|
||||
* Nextcloud: fix must use /dav/files/USER endpoint not /webdav error (Paul)
|
||||
* Nextcloud chunking: add more guidance for the user to check the config (darix)
|
||||
|
||||
## v1.63.0 - 2023-06-30
|
||||
|
||||
[See commits](https://github.com/rclone/rclone/compare/v1.62.0...v1.63.0)
|
||||
|
|
|
@ -3,31 +3,42 @@ title: "Contact"
|
|||
description: "Contact the rclone project"
|
||||
---
|
||||
|
||||
# Contact the rclone project #
|
||||
# Contact the rclone project
|
||||
|
||||
## Forum ##
|
||||
## Forum
|
||||
|
||||
Forum for questions and general discussion:
|
||||
|
||||
* https://forum.rclone.org
|
||||
- https://forum.rclone.org
|
||||
|
||||
## GitHub repository ##
|
||||
## Business support
|
||||
|
||||
For business support or sponsorship enquiries please see:
|
||||
|
||||
- https://rclone.com/
|
||||
- sponsorship@rclone.com
|
||||
|
||||
## GitHub repository
|
||||
|
||||
The project's repository is located at:
|
||||
|
||||
* https://github.com/rclone/rclone
|
||||
- https://github.com/rclone/rclone
|
||||
|
||||
There you can file bug reports or contribute with pull requests.
|
||||
|
||||
## Twitter ##
|
||||
## Twitter
|
||||
|
||||
You can also follow me on twitter for rclone announcements:
|
||||
You can also follow Nick on twitter for rclone announcements:
|
||||
|
||||
* [@njcw](https://twitter.com/njcw)
|
||||
- [@njcw](https://twitter.com/njcw)
|
||||
|
||||
## Email ##
|
||||
## Email
|
||||
|
||||
Or if all else fails or you want to ask something private or
|
||||
confidential email [Nick Craig-Wood](mailto:nick@craig-wood.com).
|
||||
Please don't email me requests for help - those are better directed to
|
||||
the forum. Thanks!
|
||||
confidential
|
||||
|
||||
- info@rclone.com
|
||||
|
||||
Please don't email requests for help to this address - those are
|
||||
better directed to the forum unless you'd like to sign up for business
|
||||
support.
|
||||
|
|
|
@ -1,68 +0,0 @@
|
|||
---
|
||||
title: "Donations"
|
||||
description: "Donations to the rclone project."
|
||||
type: page
|
||||
---
|
||||
|
||||
# {{< icon "fa fa-heart heart" >}} Donations to the rclone project
|
||||
|
||||
Rclone is a free open-source project with thousands of contributions
|
||||
from volunteers all round the world and I would like to thank all of
|
||||
you for donating your time to the project.
|
||||
|
||||
However, maintaining rclone is a lot of work - easily the equivalent
|
||||
of a **full time job** - for me. Nothing stands still in the world of
|
||||
cloud storage. Rclone needs constant attention adapting to changes by
|
||||
cloud providers, adding new providers, adding new features, keeping
|
||||
the integration tests working, fixing bugs and many more things!
|
||||
|
||||
I love doing the work and I'd like to spend more time doing it - your
|
||||
support helps make that possible.
|
||||
|
||||
Thank you :-)
|
||||
|
||||
{{< nick >}}
|
||||
|
||||
PS I'm available for rclone and object storage related consultancy -
|
||||
[email me](mailto:nick@craig-wood.com) for more info.
|
||||
|
||||
{{< monthly_donations >}}
|
||||
|
||||
## Personal users
|
||||
|
||||
If you are a personal user and you would like to support the project
|
||||
with sponsorship as a way of saying thank you that would be most
|
||||
appreciated. {{< icon "fa fa-heart heart" >}}
|
||||
|
||||
## Business users
|
||||
|
||||
If your business distributes rclone as part of its products (which the
|
||||
generous MIT licence allows) or uses it internally then it would make
|
||||
business sense to sponsor the rclone project to ensure that the
|
||||
project you rely on stays healthy and well maintained.
|
||||
|
||||
If you run one of the cloud storage providers that rclone supports and
|
||||
rclone is driving revenue your way then you know it makes sense to
|
||||
sponsor the project. {{< icon "far fa-smile" >}}
|
||||
|
||||
Note that if you choose the "GitHub Sponsors" option they will provide
|
||||
proper tax invoices appropriate for your country.
|
||||
|
||||
## Monthly donations
|
||||
|
||||
Monthly donations help keep rclone development sustainable in the long
|
||||
run so this is the preferred option. A small amount every month is
|
||||
much better than a one off donation as it allows planning for the
|
||||
future.
|
||||
|
||||
{{< monthly_donations >}}
|
||||
|
||||
## One off donations
|
||||
|
||||
If you don't want to contribute monthly then of course we'd love a one
|
||||
off donation.
|
||||
|
||||
{{< one_off_donations >}}
|
||||
|
||||
If you require a receipt or wish to contribute in a different way then
|
||||
please [drop me an email](mailto:nick@craig-wood.com).
|
|
@ -1522,7 +1522,7 @@ be the same account as the Google Drive you want to access)
|
|||
"Google Drive API".
|
||||
|
||||
4. Click "Credentials" in the left-side panel (not "Create
|
||||
credentials", which opens the wizard), then "Create credentials"
|
||||
credentials", which opens the wizard).
|
||||
|
||||
5. If you already configured an "Oauth Consent Screen", then skip
|
||||
to the next step; if not, click on "CONFIGURE CONSENT SCREEN" button
|
||||
|
|
|
@ -502,6 +502,6 @@ to be the same account as the Dropbox you want to access)
|
|||
|
||||
6. Switch to the `Permissions` tab. Enable at least the following permissions: `account_info.read`, `files.metadata.write`, `files.content.write`, `files.content.read`, `sharing.write`. The `files.metadata.read` and `sharing.read` checkboxes will be marked too. Click `Submit`
|
||||
|
||||
7. Switch to the `Settings` tab. Fill `OAuth2 - Redirect URIs` as `http://localhost:53682/`
|
||||
7. Switch to the `Settings` tab. Fill `OAuth2 - Redirect URIs` as `http://localhost:53682/` and click on `Add`
|
||||
|
||||
8. Find the `App key` and `App secret` values on the `Settings` tab. Use these values in rclone config to add a new remote or edit an existing remote. The `App key` setting corresponds to `client_id` in rclone config, the `App secret` corresponds to `client_secret`
|
||||
|
|
|
@ -174,7 +174,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.63.0")
|
||||
--user-agent string Set the user-agent to a specified string (default "rclone/v1.63.1")
|
||||
-v, --verbose count Print lots more stuff (repeat for more)
|
||||
```
|
||||
|
||||
|
|
|
@ -8,8 +8,6 @@ versionIntroduced: "v1.50"
|
|||
|
||||
[Mail.ru Cloud](https://cloud.mail.ru/) is a cloud storage provided by a Russian internet company [Mail.Ru Group](https://mail.ru). The official desktop client is [Disk-O:](https://disk-o.cloud/en), available on Windows and Mac OS.
|
||||
|
||||
Currently it is recommended to disable 2FA on Mail.ru accounts intended for rclone until it gets eventually implemented.
|
||||
|
||||
## Features highlights
|
||||
|
||||
- Paths may be as deep as required, e.g. `remote:directory/subdirectory`
|
||||
|
|
|
@ -1 +1 @@
|
|||
v1.63.0
|
||||
v1.63.1
|
|
@ -63,10 +63,12 @@ func (dt DirTree) AddEntry(entry fs.DirEntry) {
|
|||
panic("unknown entry type")
|
||||
}
|
||||
remoteParent := parentDir(entry.Remote())
|
||||
dt.CheckParent("", remoteParent)
|
||||
dt.checkParent("", remoteParent, nil)
|
||||
}
|
||||
|
||||
// Find returns the DirEntry for filePath or nil if not found
|
||||
//
|
||||
// None that Find does a O(N) search so can be slow
|
||||
func (dt DirTree) Find(filePath string) (parentPath string, entry fs.DirEntry) {
|
||||
parentPath = parentDir(filePath)
|
||||
for _, entry := range dt[parentPath] {
|
||||
|
@ -77,23 +79,52 @@ func (dt DirTree) Find(filePath string) (parentPath string, entry fs.DirEntry) {
|
|||
return parentPath, nil
|
||||
}
|
||||
|
||||
// CheckParent checks that dirPath has a *Dir in its parent
|
||||
func (dt DirTree) CheckParent(root, dirPath string) {
|
||||
if dirPath == root {
|
||||
return
|
||||
// checkParent checks that dirPath has a *Dir in its parent
|
||||
//
|
||||
// If dirs is not nil it must contain entries for every *Dir found in
|
||||
// the tree. It is used to speed up the checking when calling this
|
||||
// repeatedly.
|
||||
func (dt DirTree) checkParent(root, dirPath string, dirs map[string]struct{}) {
|
||||
var parentPath string
|
||||
for {
|
||||
if dirPath == root {
|
||||
return
|
||||
}
|
||||
// Can rely on dirs to have all directories in it so
|
||||
// we don't need to call Find.
|
||||
if dirs != nil {
|
||||
if _, found := dirs[dirPath]; found {
|
||||
return
|
||||
}
|
||||
parentPath = parentDir(dirPath)
|
||||
} else {
|
||||
var entry fs.DirEntry
|
||||
parentPath, entry = dt.Find(dirPath)
|
||||
if entry != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
dt[parentPath] = append(dt[parentPath], fs.NewDir(dirPath, time.Now()))
|
||||
if dirs != nil {
|
||||
dirs[dirPath] = struct{}{}
|
||||
}
|
||||
dirPath = parentPath
|
||||
}
|
||||
parentPath, entry := dt.Find(dirPath)
|
||||
if entry != nil {
|
||||
return
|
||||
}
|
||||
dt[parentPath] = append(dt[parentPath], fs.NewDir(dirPath, time.Now()))
|
||||
dt.CheckParent(root, parentPath)
|
||||
}
|
||||
|
||||
// CheckParents checks every directory in the tree has *Dir in its parent
|
||||
func (dt DirTree) CheckParents(root string) {
|
||||
dirs := make(map[string]struct{})
|
||||
// Find all the directories and stick them in dirs
|
||||
for _, entries := range dt {
|
||||
for _, entry := range entries {
|
||||
if _, ok := entry.(fs.Directory); ok {
|
||||
dirs[entry.Remote()] = struct{}{}
|
||||
}
|
||||
}
|
||||
}
|
||||
for dirPath := range dt {
|
||||
dt.CheckParent(root, dirPath)
|
||||
dt.checkParent(root, dirPath, dirs)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package dirtree
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"github.com/rclone/rclone/fstest/mockdir"
|
||||
|
@ -108,7 +109,7 @@ func TestDirTreeCheckParent(t *testing.T) {
|
|||
sausage
|
||||
`, dt.String())
|
||||
|
||||
dt.CheckParent("", "dir/subdir")
|
||||
dt.checkParent("", "dir/subdir", nil)
|
||||
|
||||
assert.Equal(t, `/
|
||||
dir/
|
||||
|
@ -200,3 +201,21 @@ dir2/
|
|||
`, dt.String())
|
||||
|
||||
}
|
||||
|
||||
func BenchmarkCheckParents(b *testing.B) {
|
||||
for _, N := range []int{1e2, 1e3, 1e4, 1e5, 1e6} {
|
||||
b.Run(fmt.Sprintf("%d", N), func(b *testing.B) {
|
||||
b.StopTimer()
|
||||
dt := New()
|
||||
for i := 0; i < N; i++ {
|
||||
remote := fmt.Sprintf("dir%09d/file%09d.txt", i, 1)
|
||||
o := mockobject.New(remote)
|
||||
dt.Add(o)
|
||||
}
|
||||
b.StartTimer()
|
||||
for n := 0; n < b.N; n++ {
|
||||
dt.CheckParents("")
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
@ -358,7 +358,7 @@ func Copy(ctx context.Context, f fs.Fs, dst fs.Object, remote string, src fs.Obj
|
|||
inplace = true
|
||||
remotePartial = remote
|
||||
)
|
||||
if !ci.Inplace && f.Features().Move != nil && f.Features().PartialUploads {
|
||||
if !ci.Inplace && f.Features().Move != nil && f.Features().PartialUploads && !strings.HasSuffix(remote, ".rclonelink") {
|
||||
// Avoid making the leaf name longer if it's already lengthy to avoid
|
||||
// trouble with file name length limits.
|
||||
suffix := "." + random.String(8) + ".partial"
|
||||
|
@ -926,10 +926,15 @@ func ListFn(ctx context.Context, f fs.Fs, fn func(fs.Object)) error {
|
|||
// StdoutMutex mutex for synchronized output on stdout
|
||||
var StdoutMutex sync.Mutex
|
||||
|
||||
// SyncPrintf is a global var holding the Printf function used in syncFprintf so that it can be overridden
|
||||
// Note, despite name, does not provide sync and should not be called directly
|
||||
// Call syncFprintf, which provides sync
|
||||
// SyncPrintf is a global var holding the Printf function so that it
|
||||
// can be overridden.
|
||||
//
|
||||
// This writes to stdout holding the StdoutMutex. If you are going to
|
||||
// override it and write to os.Stdout then you should hold the
|
||||
// StdoutMutex too.
|
||||
var SyncPrintf = func(format string, a ...interface{}) {
|
||||
StdoutMutex.Lock()
|
||||
defer StdoutMutex.Unlock()
|
||||
fmt.Printf(format, a...)
|
||||
}
|
||||
|
||||
|
@ -937,14 +942,13 @@ var SyncPrintf = func(format string, a ...interface{}) {
|
|||
//
|
||||
// Ignores errors from Fprintf.
|
||||
//
|
||||
// Updated to print to terminal if no writer is defined
|
||||
// This special behavior is used to allow easier replacement of the print to terminal code by progress
|
||||
// Prints to stdout if w is nil
|
||||
func syncFprintf(w io.Writer, format string, a ...interface{}) {
|
||||
StdoutMutex.Lock()
|
||||
defer StdoutMutex.Unlock()
|
||||
if w == nil || w == os.Stdout {
|
||||
SyncPrintf(format, a...)
|
||||
} else {
|
||||
StdoutMutex.Lock()
|
||||
defer StdoutMutex.Unlock()
|
||||
_, _ = fmt.Fprintf(w, format, a...)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
package fs
|
||||
|
||||
// VersionTag of rclone
|
||||
var VersionTag = "v1.63.0"
|
||||
var VersionTag = "v1.63.1"
|
||||
|
|
10
go.mod
10
go.mod
|
@ -50,12 +50,12 @@ require (
|
|||
github.com/rclone/ftp v0.0.0-20230327202000-dadc1f64e87d
|
||||
github.com/rfjakob/eme v1.1.2
|
||||
github.com/rivo/uniseg v0.4.4
|
||||
github.com/shirou/gopsutil/v3 v3.23.3
|
||||
github.com/shirou/gopsutil/v3 v3.23.5
|
||||
github.com/sirupsen/logrus v1.9.0
|
||||
github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966
|
||||
github.com/spf13/cobra v1.7.0
|
||||
github.com/spf13/pflag v1.0.5
|
||||
github.com/stretchr/testify v1.8.2
|
||||
github.com/stretchr/testify v1.8.3
|
||||
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
|
||||
|
@ -67,7 +67,7 @@ require (
|
|||
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.7.0
|
||||
golang.org/x/sys v0.8.0
|
||||
golang.org/x/text v0.8.0
|
||||
golang.org/x/time v0.3.0
|
||||
google.golang.org/api v0.115.0
|
||||
|
@ -120,13 +120,13 @@ require (
|
|||
github.com/prometheus/common v0.37.0 // indirect
|
||||
github.com/prometheus/procfs v0.8.0 // indirect
|
||||
github.com/russross/blackfriday/v2 v2.1.0 // indirect
|
||||
github.com/shoenig/go-m1cpu v0.1.4 // indirect
|
||||
github.com/shoenig/go-m1cpu v0.1.6 // indirect
|
||||
github.com/sony/gobreaker v0.5.0 // indirect
|
||||
github.com/spacemonkeygo/monkit/v3 v3.0.19 // indirect
|
||||
github.com/tklauser/go-sysconf v0.3.11 // indirect
|
||||
github.com/tklauser/numcpus v0.6.0 // indirect
|
||||
github.com/vivint/infectious v0.0.0-20200605153912-25a574ae18a3 // indirect
|
||||
github.com/yusufpapurcu/wmi v1.2.2 // indirect
|
||||
github.com/yusufpapurcu/wmi v1.2.3 // indirect
|
||||
github.com/zeebo/blake3 v0.2.3 // indirect
|
||||
github.com/zeebo/errs v1.3.0 // indirect
|
||||
go.opencensus.io v0.24.0 // indirect
|
||||
|
|
24
go.sum
24
go.sum
|
@ -428,12 +428,12 @@ 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.23.3 h1:Syt5vVZXUDXPEXpIBt5ziWsJ4LdSAAxF4l/xZeQgSEE=
|
||||
github.com/shirou/gopsutil/v3 v3.23.3/go.mod h1:lSBNN6t3+D6W5e5nXTxc8KIMMVxAcS+6IJlffjRRlMU=
|
||||
github.com/shoenig/go-m1cpu v0.1.4 h1:SZPIgRM2sEF9NJy50mRHu9PKGwxyyTTJIWvCtgVbozs=
|
||||
github.com/shoenig/go-m1cpu v0.1.4/go.mod h1:Wwvst4LR89UxjeFtLRMrpgRiyY4xPsejnVZym39dbAQ=
|
||||
github.com/shoenig/test v0.6.3 h1:GVXWJFk9PiOjN0KoJ7VrJGH6uLPnqxR7/fe3HUPfE0c=
|
||||
github.com/shoenig/test v0.6.3/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k=
|
||||
github.com/shirou/gopsutil/v3 v3.23.5 h1:5SgDCeQ0KW0S4N0znjeM/eFHXXOKyv2dVNgRq/c9P6Y=
|
||||
github.com/shirou/gopsutil/v3 v3.23.5/go.mod h1:Ng3Maa27Q2KARVJ0SPZF5NdrQSC3XHKP8IIWrHgMeLY=
|
||||
github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM=
|
||||
github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ=
|
||||
github.com/shoenig/test v0.6.4 h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU=
|
||||
github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k=
|
||||
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=
|
||||
|
@ -470,8 +470,8 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
|
|||
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/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
||||
github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8=
|
||||
github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
||||
github.com/stretchr/testify v1.8.3 h1:RP3t2pwF7cMEbC1dqtB6poj3niw/9gnV4Cjg5oW5gtY=
|
||||
github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
||||
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 +496,8 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec
|
|||
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
||||
github.com/yunify/qingstor-sdk-go/v3 v3.2.0 h1:9sB2WZMgjwSUNZhrgvaNGazVltoFUUfuS9f0uCWtTr8=
|
||||
github.com/yunify/qingstor-sdk-go/v3 v3.2.0/go.mod h1:KciFNuMu6F4WLk9nGwwK69sCGKLCdd9f97ac/wfumS4=
|
||||
github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg=
|
||||
github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
|
||||
github.com/yusufpapurcu/wmi v1.2.3 h1:E1ctvB7uKFMOJw3fdOW32DwGE9I7t++CRUEMKvFoFiw=
|
||||
github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
|
||||
github.com/zeebo/assert v1.1.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0=
|
||||
github.com/zeebo/assert v1.3.1 h1:vukIABvugfNMZMQO1ABsyQDJDTVQbn+LWSMy1ol1h6A=
|
||||
github.com/zeebo/assert v1.3.1/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0=
|
||||
|
@ -691,8 +691,8 @@ 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.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU=
|
||||
golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU=
|
||||
golang.org/x/sys v0.8.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=
|
||||
|
|
126
rclone.1
generated
126
rclone.1
generated
|
@ -1,7 +1,7 @@
|
|||
.\"t
|
||||
.\" Automatically generated by Pandoc 2.9.2.1
|
||||
.\"
|
||||
.TH "rclone" "1" "Jun 30, 2023" "User Manual" ""
|
||||
.TH "rclone" "1" "Jul 17, 2023" "User Manual" ""
|
||||
.hy
|
||||
.SH Rclone syncs your files to cloud storage
|
||||
.PP
|
||||
|
@ -24,7 +24,7 @@ Donate. (https://rclone.org/donate/)
|
|||
Rclone is a command-line program to manage files on cloud storage.
|
||||
It is a feature-rich alternative to cloud vendors\[aq] web storage
|
||||
interfaces.
|
||||
Over 40 cloud storage products support rclone including S3 object
|
||||
Over 70 cloud storage products support rclone including S3 object
|
||||
stores, business & consumer file storage services, as well as standard
|
||||
transfer protocols.
|
||||
.PP
|
||||
|
@ -3456,6 +3456,42 @@ not listed here.
|
|||
.IP \[bu] 2
|
||||
rclone config (https://rclone.org/commands/rclone_config/) - Enter an
|
||||
interactive configuration session.
|
||||
.SH rclone config redacted
|
||||
.PP
|
||||
Print redacted (decrypted) config file, or the redacted config for a
|
||||
single remote.
|
||||
.SH Synopsis
|
||||
.PP
|
||||
This prints a redacted copy of the config file, either the whole config
|
||||
file or for a given remote.
|
||||
.PP
|
||||
The config file will be redacted by replacing all passwords and other
|
||||
sensitive info with XXX.
|
||||
.PP
|
||||
This makes the config file suitable for posting online for support.
|
||||
.PP
|
||||
It should be double checked before posting as the redaction may not be
|
||||
perfect.
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
rclone config redacted [<remote>] [flags]
|
||||
\f[R]
|
||||
.fi
|
||||
.SH Options
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
-h, --help help for redacted
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
See the global flags page (https://rclone.org/flags/) for global options
|
||||
not listed here.
|
||||
.SH SEE ALSO
|
||||
.IP \[bu] 2
|
||||
rclone config (https://rclone.org/commands/rclone_config/) - Enter an
|
||||
interactive configuration session.
|
||||
.SH rclone config show
|
||||
.PP
|
||||
Print (decrypted) config file, or the config for a single remote.
|
||||
|
@ -14827,7 +14863,7 @@ directory \f[C]dir\f[R] and sub directories.
|
|||
E.g.
|
||||
on Microsoft Windows
|
||||
\f[C]rclone ls remote: --exclude \[dq]*\[rs][{JP,KR,HK}\[rs]]*\[dq]\f[R]
|
||||
lists the files in \f[C]remote:\f[R] with \f[C][JP]\f[R] or
|
||||
lists the files in \f[C]remote:\f[R] without \f[C][JP]\f[R] or
|
||||
\f[C][KR]\f[R] or \f[C][HK]\f[R] in their name.
|
||||
Quotes prevent the shell from interpreting the \f[C]\[rs]\f[R]
|
||||
characters.\f[C]\[rs]\f[R] characters escape the \f[C][\f[R] and
|
||||
|
@ -20812,7 +20848,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 \[dq]rclone/v1.63.0\[dq])
|
||||
--user-agent string Set the user-agent to a specified string (default \[dq]rclone/v1.63.1\[dq])
|
||||
-v, --verbose count Print lots more stuff (repeat for more)
|
||||
\f[R]
|
||||
.fi
|
||||
|
@ -38345,7 +38381,7 @@ Click \f[C]Submit\f[R]
|
|||
.IP "7." 3
|
||||
Switch to the \f[C]Settings\f[R] tab.
|
||||
Fill \f[C]OAuth2 - Redirect URIs\f[R] as
|
||||
\f[C]http://localhost:53682/\f[R]
|
||||
\f[C]http://localhost:53682/\f[R] and click on \f[C]Add\f[R]
|
||||
.IP "8." 3
|
||||
Find the \f[C]App key\f[R] and \f[C]App secret\f[R] values on the
|
||||
\f[C]Settings\f[R] tab.
|
||||
|
@ -42452,8 +42488,7 @@ Under \[dq]ENABLE APIS AND SERVICES\[dq] search for \[dq]Drive\[dq], and
|
|||
enable the \[dq]Google Drive API\[dq].
|
||||
.IP " 4." 4
|
||||
Click \[dq]Credentials\[dq] in the left-side panel (not \[dq]Create
|
||||
credentials\[dq], which opens the wizard), then \[dq]Create
|
||||
credentials\[dq]
|
||||
credentials\[dq], which opens the wizard).
|
||||
.IP " 5." 4
|
||||
If you already configured an \[dq]Oauth Consent Screen\[dq], then skip
|
||||
to the next step; if not, click on \[dq]CONFIGURE CONSENT SCREEN\[dq]
|
||||
|
@ -46075,9 +46110,6 @@ Mail.ru Cloud (https://cloud.mail.ru/) is a cloud storage provided by a
|
|||
Russian internet company Mail.Ru Group (https://mail.ru).
|
||||
The official desktop client is Disk-O: (https://disk-o.cloud/en),
|
||||
available on Windows and Mac OS.
|
||||
.PP
|
||||
Currently it is recommended to disable 2FA on Mail.ru accounts intended
|
||||
for rclone until it gets eventually implemented.
|
||||
.SS Features highlights
|
||||
.IP \[bu] 2
|
||||
Paths may be as deep as required, e.g.
|
||||
|
@ -59481,6 +59513,60 @@ Options:
|
|||
.IP \[bu] 2
|
||||
\[dq]error\[dq]: return an error based on option value
|
||||
.SH Changelog
|
||||
.SS v1.63.1 - 2023-07-17
|
||||
.PP
|
||||
See commits (https://github.com/rclone/rclone/compare/v1.63.0...v1.63.1)
|
||||
.IP \[bu] 2
|
||||
Bug Fixes
|
||||
.RS 2
|
||||
.IP \[bu] 2
|
||||
build: Fix macos builds for versions < 12 (Anagh Kumar Baranwal)
|
||||
.IP \[bu] 2
|
||||
dirtree: Fix performance with large directories of directories and
|
||||
\f[C]--fast-list\f[R] (Nick Craig-Wood)
|
||||
.IP \[bu] 2
|
||||
operations
|
||||
.RS 2
|
||||
.IP \[bu] 2
|
||||
Fix deadlock when using \f[C]lsd\f[R]/\f[C]ls\f[R] with
|
||||
\f[C]--progress\f[R] (Nick Craig-Wood)
|
||||
.IP \[bu] 2
|
||||
Fix \f[C].rclonelink\f[R] files not being converted back to symlinks
|
||||
(Nick Craig-Wood)
|
||||
.RE
|
||||
.IP \[bu] 2
|
||||
doc fixes (Dean Attali, Mahad, Nick Craig-Wood, Sawada Tsunayoshi,
|
||||
Vladislav Vorobev)
|
||||
.RE
|
||||
.IP \[bu] 2
|
||||
Local
|
||||
.RS 2
|
||||
.IP \[bu] 2
|
||||
Fix partial directory read for corrupted filesystem (Nick Craig-Wood)
|
||||
.RE
|
||||
.IP \[bu] 2
|
||||
Box
|
||||
.RS 2
|
||||
.IP \[bu] 2
|
||||
Fix reconnect failing with HTTP 400 Bad Request (albertony)
|
||||
.RE
|
||||
.IP \[bu] 2
|
||||
Smb
|
||||
.RS 2
|
||||
.IP \[bu] 2
|
||||
Fix \[dq]Statfs failed: bucket or container name is needed\[dq] when
|
||||
mounting (Nick Craig-Wood)
|
||||
.RE
|
||||
.IP \[bu] 2
|
||||
WebDAV
|
||||
.RS 2
|
||||
.IP \[bu] 2
|
||||
Nextcloud: fix must use /dav/files/USER endpoint not /webdav error
|
||||
(Paul)
|
||||
.IP \[bu] 2
|
||||
Nextcloud chunking: add more guidance for the user to check the config
|
||||
(darix)
|
||||
.RE
|
||||
.SS v1.63.0 - 2023-06-30
|
||||
.PP
|
||||
See commits (https://github.com/rclone/rclone/compare/v1.62.0...v1.63.0)
|
||||
|
@ -73417,6 +73503,13 @@ mac-15 <usman.ilamdin@phpstudios.com>
|
|||
Forum for questions and general discussion:
|
||||
.IP \[bu] 2
|
||||
https://forum.rclone.org
|
||||
.SS Business support
|
||||
.PP
|
||||
For business support or sponsorship enquiries please see:
|
||||
.IP \[bu] 2
|
||||
https://rclone.com/
|
||||
.IP \[bu] 2
|
||||
sponsorship\[at]rclone.com
|
||||
.SS GitHub repository
|
||||
.PP
|
||||
The project\[aq]s repository is located at:
|
||||
|
@ -73426,15 +73519,18 @@ https://github.com/rclone/rclone
|
|||
There you can file bug reports or contribute with pull requests.
|
||||
.SS Twitter
|
||||
.PP
|
||||
You can also follow me on twitter for rclone announcements:
|
||||
You can also follow Nick on twitter for rclone announcements:
|
||||
.IP \[bu] 2
|
||||
[\[at]njcw](https://twitter.com/njcw)
|
||||
.SS Email
|
||||
.PP
|
||||
Or if all else fails or you want to ask something private or
|
||||
confidential email Nick Craig-Wood (mailto:nick@craig-wood.com).
|
||||
Please don\[aq]t email me requests for help - those are better directed
|
||||
to the forum.
|
||||
Thanks!
|
||||
confidential
|
||||
.IP \[bu] 2
|
||||
info\[at]rclone.com
|
||||
.PP
|
||||
Please don\[aq]t email requests for help to this address - those are
|
||||
better directed to the forum unless you\[aq]d like to sign up for
|
||||
business support.
|
||||
.SH AUTHORS
|
||||
Nick Craig-Wood.
|
||||
|
|
Loading…
Reference in a new issue