mirror of
https://github.com/rclone/rclone.git
synced 2026-01-24 21:33:17 +00:00
Compare commits
11 Commits
v1.63-stab
...
fix-brew
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
45032a2122 | ||
|
|
41296a972a | ||
|
|
22a14a8c98 | ||
|
|
07133b892d | ||
|
|
a8ca18165e | ||
|
|
8c4e71fc84 | ||
|
|
351e2db2ef | ||
|
|
2234feb23d | ||
|
|
fb5125ecee | ||
|
|
e8cbc54a06 | ||
|
|
00512e1303 |
4
.github/workflows/build.yml
vendored
4
.github/workflows/build.yml
vendored
@@ -130,8 +130,12 @@ jobs:
|
||||
- name: Install Libraries on macOS
|
||||
shell: bash
|
||||
run: |
|
||||
brew untap homebrew/core homebrew/cask
|
||||
brew config
|
||||
brew update
|
||||
brew install --cask macfuse
|
||||
env:
|
||||
HOMEBREW_NO_INSTALL_FROM_API: # No value, so brew doesn't rely on homebrew-core / homebrew-cask
|
||||
if: matrix.os == 'macos-11'
|
||||
|
||||
- name: Install Libraries on Windows
|
||||
|
||||
348
MANUAL.html
generated
348
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
|
||||
% Jul 17, 2023
|
||||
% Jun 30, 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 70 cloud storage products](#providers) support
|
||||
interfaces. [Over 40 cloud storage products](#providers) support
|
||||
rclone including S3 object stores, business & consumer file storage
|
||||
services, as well as standard transfer protocols.
|
||||
|
||||
@@ -2723,40 +2723,6 @@ 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.
|
||||
@@ -11886,7 +11852,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:` without `[JP]` or `[KR]` or `[HK]` in
|
||||
lists the files in `remote:` with `[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 `}`
|
||||
@@ -15228,7 +15194,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.1")
|
||||
--user-agent string Set the user-agent to a specified string (default "rclone/v1.63.0")
|
||||
-v, --verbose count Print lots more stuff (repeat for more)
|
||||
```
|
||||
|
||||
@@ -27924,7 +27890,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/` and click on `Add`
|
||||
7. Switch to the `Settings` tab. Fill `OAuth2 - Redirect URIs` as `http://localhost:53682/`
|
||||
|
||||
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`
|
||||
|
||||
@@ -30908,7 +30874,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).
|
||||
credentials", which opens the wizard), then "Create credentials"
|
||||
|
||||
5. If you already configured an "Oauth Consent Screen", then skip
|
||||
to the next step; if not, click on "CONFIGURE CONSENT SCREEN" button
|
||||
@@ -33730,6 +33696,8 @@ 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`
|
||||
@@ -43602,27 +43570,6 @@ 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)
|
||||
@@ -49286,43 +49233,32 @@ 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
|
||||
|
||||
## Business support
|
||||
|
||||
For business support or sponsorship enquiries please see:
|
||||
|
||||
- https://rclone.com/
|
||||
- sponsorship@rclone.com
|
||||
|
||||
## GitHub repository
|
||||
## 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 Nick on twitter for rclone announcements:
|
||||
You can also follow me 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
|
||||
|
||||
- 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.
|
||||
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!
|
||||
|
||||
|
||||
91
MANUAL.txt
generated
91
MANUAL.txt
generated
@@ -1,6 +1,6 @@
|
||||
rclone(1) User Manual
|
||||
Nick Craig-Wood
|
||||
Jul 17, 2023
|
||||
Jun 30, 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 70 cloud storage products support rclone including S3 object
|
||||
Over 40 cloud storage products support rclone including S3 object
|
||||
stores, business & consumer file storage services, as well as standard
|
||||
transfer protocols.
|
||||
|
||||
@@ -2481,36 +2481,6 @@ 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.
|
||||
@@ -11425,7 +11395,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: without [JP] or [KR] or [HK] in their name.
|
||||
lists the files in remote: with [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
|
||||
@@ -14768,7 +14738,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.1")
|
||||
--user-agent string Set the user-agent to a specified string (default "rclone/v1.63.0")
|
||||
-v, --verbose count Print lots more stuff (repeat for more)
|
||||
|
||||
Backend Flags
|
||||
@@ -27270,7 +27240,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/ and click on Add
|
||||
http://localhost:53682/
|
||||
|
||||
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
|
||||
@@ -30268,7 +30238,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).
|
||||
credentials", which opens the wizard), then "Create credentials"
|
||||
|
||||
5. If you already configured an "Oauth Consent Screen", then skip to
|
||||
the next step; if not, click on "CONFIGURE CONSENT SCREEN" button
|
||||
@@ -33131,6 +33101,9 @@ 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
|
||||
@@ -43095,35 +43068,6 @@ 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
|
||||
@@ -50216,13 +50160,6 @@ 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:
|
||||
@@ -50233,16 +50170,12 @@ There you can file bug reports or contribute with pull requests.
|
||||
|
||||
Twitter
|
||||
|
||||
You can also follow Nick on twitter for rclone announcements:
|
||||
You can also follow me 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
|
||||
|
||||
- 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.
|
||||
confidential email Nick Craig-Wood. Please don't email me requests for
|
||||
help - those are better directed to the forum. Thanks!
|
||||
|
||||
@@ -77,7 +77,7 @@ var (
|
||||
)
|
||||
|
||||
type boxCustomClaims struct {
|
||||
jwt.StandardClaims
|
||||
jwt.RegisteredClaims
|
||||
BoxSubType string `json:"box_sub_type,omitempty"`
|
||||
}
|
||||
|
||||
@@ -206,14 +206,12 @@ func getClaims(boxConfig *api.ConfigJSON, boxSubType string) (claims *boxCustomC
|
||||
}
|
||||
|
||||
claims = &boxCustomClaims{
|
||||
//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,
|
||||
RegisteredClaims: jwt.RegisteredClaims{
|
||||
ID: val,
|
||||
Issuer: boxConfig.BoxAppSettings.ClientID,
|
||||
Subject: boxConfig.EnterpriseID,
|
||||
Audience: tokenURL,
|
||||
ExpiresAt: time.Now().Add(time.Second * 45).Unix(),
|
||||
Audience: jwt.ClaimStrings{tokenURL},
|
||||
ExpiresAt: jwt.NewNumericDate(time.Now().Add(time.Second * 45)),
|
||||
},
|
||||
BoxSubType: boxSubType,
|
||||
}
|
||||
|
||||
@@ -74,6 +74,10 @@ const (
|
||||
tele2CloudTokenURL = "https://mittcloud-auth.tele2.se/auth/realms/comhem/protocol/openid-connect/token"
|
||||
tele2CloudAuthURL = "https://mittcloud-auth.tele2.se/auth/realms/comhem/protocol/openid-connect/auth"
|
||||
tele2CloudClientID = "desktop"
|
||||
|
||||
onlimeCloudTokenURL = "https://cloud-auth.onlime.dk/auth/realms/onlime_wl/protocol/openid-connect/token"
|
||||
onlimeCloudAuthURL = "https://cloud-auth.onlime.dk/auth/realms/onlime_wl/protocol/openid-connect/auth"
|
||||
onlimeCloudClientID = "desktop"
|
||||
)
|
||||
|
||||
// Register with Fs
|
||||
@@ -139,6 +143,9 @@ func Config(ctx context.Context, name string, m configmap.Mapper, config fs.Conf
|
||||
}, {
|
||||
Value: "tele2",
|
||||
Help: "Tele2 Cloud authentication.\nUse this if you are using Tele2 Cloud.",
|
||||
}, {
|
||||
Value: "onlime",
|
||||
Help: "Onlime Cloud authentication.\nUse this if you are using Onlime Cloud.",
|
||||
}})
|
||||
case "auth_type_done":
|
||||
// Jump to next state according to config chosen
|
||||
@@ -261,6 +268,21 @@ machines.`)
|
||||
RedirectURL: oauthutil.RedirectLocalhostURL,
|
||||
},
|
||||
})
|
||||
case "onlime": // onlime cloud config
|
||||
m.Set("configVersion", fmt.Sprint(configVersion))
|
||||
m.Set(configClientID, onlimeCloudClientID)
|
||||
m.Set(configTokenURL, onlimeCloudTokenURL)
|
||||
return oauthutil.ConfigOut("choose_device", &oauthutil.Options{
|
||||
OAuth2Config: &oauth2.Config{
|
||||
Endpoint: oauth2.Endpoint{
|
||||
AuthURL: onlimeCloudAuthURL,
|
||||
TokenURL: onlimeCloudTokenURL,
|
||||
},
|
||||
ClientID: onlimeCloudClientID,
|
||||
Scopes: []string{"openid", "jotta-default", "offline_access"},
|
||||
RedirectURL: oauthutil.RedirectLocalhostURL,
|
||||
},
|
||||
})
|
||||
case "choose_device":
|
||||
return fs.ConfigConfirm("choose_device_query", false, "config_non_standard", `Use a non-standard device/mountpoint?
|
||||
Choosing no, the default, will let you access the storage used for the archive
|
||||
|
||||
@@ -516,7 +516,7 @@ func (f *Fs) List(ctx context.Context, dir string) (entries fs.DirEntries, err e
|
||||
continue
|
||||
}
|
||||
}
|
||||
fierr = fmt.Errorf("failed to get info about directory entry %q: %w", namepath, fierr)
|
||||
err = fmt.Errorf("failed to read directory %q: %w", namepath, fierr)
|
||||
fs.Errorf(dir, "%v", fierr)
|
||||
_ = accounting.Stats(ctx).Error(fserrors.NoRetryError(fierr)) // fail the sync
|
||||
continue
|
||||
|
||||
@@ -19,7 +19,6 @@ 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"
|
||||
@@ -515,43 +514,3 @@ 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,8 +447,7 @@ 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 == "" {
|
||||
// Just return empty info rather than an error if called on the root
|
||||
return &fs.Usage{}, nil
|
||||
return nil, fs.ErrorListBucketRequired
|
||||
}
|
||||
dir = f.toSambaPath(dir)
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@ import (
|
||||
"io"
|
||||
"net/http"
|
||||
"path"
|
||||
"strings"
|
||||
|
||||
"github.com/rclone/rclone/fs"
|
||||
"github.com/rclone/rclone/lib/readers"
|
||||
@@ -40,6 +41,10 @@ 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()))
|
||||
@@ -50,16 +55,12 @@ func (o *Object) getChunksUploadDir() (string, error) {
|
||||
return uploadDir, nil
|
||||
}
|
||||
|
||||
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")
|
||||
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")
|
||||
}
|
||||
|
||||
baseURL, user := submatch[1], submatch[2]
|
||||
chunksUploadURL := fmt.Sprintf("%s/dav/uploads/%s/", baseURL, user)
|
||||
|
||||
return chunksUploadURL, nil
|
||||
return nil
|
||||
}
|
||||
|
||||
func (o *Object) shouldUseChunkedUpload(src fs.ObjectInfo) bool {
|
||||
|
||||
@@ -569,8 +569,7 @@ func (f *Fs) fetchAndSetBearerToken() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// 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/([^/]+)`)
|
||||
var validateNextCloudChunkedURL = regexp.MustCompile(`^.*/dav/files/[^/]+/?$`)
|
||||
|
||||
// setQuirks adjusts the Fs for the vendor passed in
|
||||
func (f *Fs) setQuirks(ctx context.Context, vendor string) error {
|
||||
@@ -593,18 +592,11 @@ func (f *Fs) setQuirks(ctx context.Context, vendor string) error {
|
||||
f.propsetMtime = true
|
||||
f.hasOCSHA1 = true
|
||||
f.canChunk = true
|
||||
|
||||
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)
|
||||
if err := f.verifyChunkConfig(); err != nil {
|
||||
return err
|
||||
}
|
||||
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",
|
||||
"sponsor.md",
|
||||
"donate.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 70 cloud storage products](#providers) support
|
||||
interfaces. [Over 40 cloud storage products](#providers) support
|
||||
rclone including S3 object stores, business & consumer file storage
|
||||
services, as well as standard transfer protocols.
|
||||
|
||||
|
||||
@@ -738,3 +738,6 @@ put them back in again.` >}}
|
||||
* Peter Fern <github@0xc0dedbad.com>
|
||||
* zzq <i@zhangzqs.cn>
|
||||
* mac-15 <usman.ilamdin@phpstudios.com>
|
||||
* Sawada Tsunayoshi <34431649+TsunayoshiSawada@users.noreply.github.com>
|
||||
* Dean Attali <daattali@gmail.com>
|
||||
* Fjodor42 <molgaard@gmail.com>
|
||||
|
||||
@@ -5,27 +5,6 @@ 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)
|
||||
|
||||
68
docs/content/donate.md
Normal file
68
docs/content/donate.md
Normal file
@@ -0,0 +1,68 @@
|
||||
---
|
||||
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).
|
||||
credentials", which opens the wizard), then "Create credentials"
|
||||
|
||||
5. If you already configured an "Oauth Consent Screen", then skip
|
||||
to the next step; if not, click on "CONFIGURE CONSENT SCREEN" button
|
||||
|
||||
@@ -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.1")
|
||||
--user-agent string Set the user-agent to a specified string (default "rclone/v1.63.0")
|
||||
-v, --verbose count Print lots more stuff (repeat for more)
|
||||
```
|
||||
|
||||
|
||||
@@ -14,6 +14,8 @@ it also provides white-label solutions to different companies, such as:
|
||||
* Telia Sky (sky.telia.no)
|
||||
* Tele2
|
||||
* Tele2 Cloud (mittcloud.tele2.se)
|
||||
* Onlime
|
||||
* Onlime Cloud Storage (onlime.dk)
|
||||
* Elkjøp (with subsidiaries):
|
||||
* Elkjøp Cloud (cloud.elkjop.no)
|
||||
* Elgiganten Sweden (cloud.elgiganten.se)
|
||||
@@ -84,6 +86,18 @@ Tele2 Cloud customers as no support for creating a CLI token exists, and additio
|
||||
authentication flow where the username is generated internally. To setup rclone to use Tele2 Cloud,
|
||||
choose Tele2 Cloud authentication in the setup. The rest of the setup is identical to the default setup.
|
||||
|
||||
### Onlime Cloud Storage authentication
|
||||
|
||||
Onlime has sold access to Jottacloud proper, while providing localized support to Danish Customers, but
|
||||
have recently set up their own hosting, transferring their customers from Jottacloud servers to their
|
||||
own ones.
|
||||
|
||||
This, of course, necessitates using their servers for authentication, but otherwise functionality and
|
||||
architecture seems equivalent to Jottacloud.
|
||||
|
||||
To setup rclone to use Onlime Cloud Storage, choose Onlime Cloud authentication in the setup. The rest
|
||||
of the setup is identical to the default setup.
|
||||
|
||||
## Configuration
|
||||
|
||||
Here is an example of how to make a remote called `remote` with the default setup. First run:
|
||||
@@ -127,6 +141,9 @@ Press Enter for the default (standard).
|
||||
/ Tele2 Cloud authentication.
|
||||
4 | Use this if you are using Tele2 Cloud.
|
||||
\ (tele2)
|
||||
/ Onlime Cloud authentication.
|
||||
5 | Use this if you are using Onlime Cloud.
|
||||
\ (onlime)
|
||||
config_type> 1
|
||||
Personal login token.
|
||||
Generate here: https://www.jottacloud.com/web/secure
|
||||
|
||||
@@ -8,6 +8,8 @@ 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.1
|
||||
v1.64.0
|
||||
@@ -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 && !strings.HasSuffix(remote, ".rclonelink") {
|
||||
if !ci.Inplace && f.Features().Move != nil && f.Features().PartialUploads {
|
||||
// Avoid making the leaf name longer if it's already lengthy to avoid
|
||||
// trouble with file name length limits.
|
||||
suffix := "." + random.String(8) + ".partial"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package fs
|
||||
|
||||
// VersionTag of rclone
|
||||
var VersionTag = "v1.63.1"
|
||||
var VersionTag = "v1.64.0"
|
||||
|
||||
126
rclone.1
generated
126
rclone.1
generated
@@ -1,7 +1,7 @@
|
||||
.\"t
|
||||
.\" Automatically generated by Pandoc 2.9.2.1
|
||||
.\"
|
||||
.TH "rclone" "1" "Jul 17, 2023" "User Manual" ""
|
||||
.TH "rclone" "1" "Jun 30, 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 70 cloud storage products support rclone including S3 object
|
||||
Over 40 cloud storage products support rclone including S3 object
|
||||
stores, business & consumer file storage services, as well as standard
|
||||
transfer protocols.
|
||||
.PP
|
||||
@@ -3456,42 +3456,6 @@ 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.
|
||||
@@ -14863,7 +14827,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] without \f[C][JP]\f[R] or
|
||||
lists the files in \f[C]remote:\f[R] with \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
|
||||
@@ -20848,7 +20812,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.1\[dq])
|
||||
--user-agent string Set the user-agent to a specified string (default \[dq]rclone/v1.63.0\[dq])
|
||||
-v, --verbose count Print lots more stuff (repeat for more)
|
||||
\f[R]
|
||||
.fi
|
||||
@@ -38381,7 +38345,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] and click on \f[C]Add\f[R]
|
||||
\f[C]http://localhost:53682/\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.
|
||||
@@ -42488,7 +42452,8 @@ 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).
|
||||
credentials\[dq], which opens the wizard), then \[dq]Create
|
||||
credentials\[dq]
|
||||
.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]
|
||||
@@ -46110,6 +46075,9 @@ 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.
|
||||
@@ -59513,60 +59481,6 @@ 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)
|
||||
@@ -73503,13 +73417,6 @@ 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:
|
||||
@@ -73519,18 +73426,15 @@ https://github.com/rclone/rclone
|
||||
There you can file bug reports or contribute with pull requests.
|
||||
.SS Twitter
|
||||
.PP
|
||||
You can also follow Nick on twitter for rclone announcements:
|
||||
You can also follow me 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
|
||||
.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.
|
||||
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!
|
||||
.SH AUTHORS
|
||||
Nick Craig-Wood.
|
||||
|
||||
Reference in New Issue
Block a user