fs: make --links flag global and add new --local-links and --vfs-links flag

Before this change the --links flag when using the VFS override the
--links flag for the local backend which meant the local backend
needed explicit config to use links.

This fixes the problem by making the --links flag global and adding a
new --local-links flag and --vfs-links flags to control the features
individually if required.
This commit is contained in:
Nick Craig-Wood
2024-11-22 11:42:31 +00:00
parent 48d9e88e8f
commit b8835fe7b4
6 changed files with 62 additions and 20 deletions

View File

@@ -1426,6 +1426,22 @@ The options mean
During rmdirs it will not remove root directory, even if it's empty.
### --links / -l
Normally rclone will ignore symlinks or junction points (which behave
like symlinks under Windows).
If you supply this flag then rclone will copy symbolic links from any
supported backend backend, and store them as text files, with a
`.rclonelink` suffix in the destination.
The text file will contain the target of the symbolic link.
The `--links` / `-l` flag enables this feature for all supported
backends and the VFS. There are individual flags for just enabling it
for the VFS `--vfs-links` and the local backend `--local-links` if
required.
### --log-file=FILE ###
Log all of rclone's output to FILE. This is not active by default.

View File

@@ -209,13 +209,13 @@ $ rclone -L ls /tmp/a
6 b/one
```
#### --links, -l
#### --local-links, --links, -l
Normally rclone will ignore symlinks or junction points (which behave
like symlinks under Windows).
If you supply this flag then rclone will copy symbolic links from the local storage,
and store them as text files, with a '.rclonelink' suffix in the remote storage.
and store them as text files, with a `.rclonelink` suffix in the remote storage.
The text file will contain the target of the symbolic link (see example).
@@ -236,7 +236,7 @@ Copying the entire directory with '-l'
$ rclone copy -l /tmp/a/ remote:/tmp/a/
```
The remote files are created with a '.rclonelink' suffix
The remote files are created with a `.rclonelink` suffix
```
$ rclone ls remote:/tmp/a
@@ -274,7 +274,7 @@ $ tree /tmp/b
/tmp/b
├── file1.rclonelink
└── file2.rclonelink
````
```
If you want to copy a single file with `-l` then you must use the `.rclonelink` suffix.
@@ -286,6 +286,10 @@ $ tree /tmp/c
└── file1 -> ./file4
```
Note that `--local-links` just enables this feature for the local
backend. `--links` and `-l` enable the feature for all supported
backends and the VFS.
Note that this flag is incompatible with `-copy-links` / `-L`.
### Restricting filesystems with --one-file-system
@@ -361,9 +365,9 @@ Properties:
- Type: bool
- Default: false
#### --links / -l
#### --local-links
Translate symlinks to/from regular files with a '.rclonelink' extension.
Translate symlinks to/from regular files with a '.rclonelink' extension for the local backend.
Properties: