rclone/backend
nielash 87ec26001f local: add server-side copy with xattrs on macOS (part-fix )
Before this change, macOS-specific metadata was not preserved by rclone, even for
local-to-local transfers (it does not use the "user." prefix, nor is Mac metadata
limited to xattrs.) Additionally, rclone did not take advantage of APFS's native
"cloning" functionality for fast and deduplicated transfers.

After this change, local (on macOS only) supports "server-side copy" similarly to
other remotes, and achieves this by using (when possible) macOS's native APFS
"cloning", which is the same underlying mechanism deployed when a user
duplicates a file via the Finder UI. This has several advantages over the
previous behavior:

- It is extremely fast (even large files can be cloned instantly)
- It is very efficient in terms of storage, as it automatically deduplicates when
possible (i.e. so that having two identical files does not consume more storage
than having just one.) (The concept is similar to a "hard link", but subsequent
modifications will not affect the original file.)
- It preserves Mac-specific metadata to the maximum degree, including not only
xattrs but also metadata not easily settable by other methods, including Finder
and Spotlight params.

When server-side "clone" is not available (for example, on non-APFS volumes), it
falls back to server-side "copy" (still preserving metadata but using more disk
storage.) It is only used when both remotes are local (and not wrapped by other
remotes, such as crypt.) The behavior of local on non-mac systems is unchanged.
2024-08-15 15:36:38 +01:00
..
alias config: make getting config values more consistent 2024-08-08 13:41:31 +01:00
all Implement Gofile backend - fixes 2024-08-14 21:15:37 +01:00
azureblob azureblob: allow anonymous access for public resources 2024-07-18 11:13:29 +01:00
azurefiles build: fix linting issues reported by running golangci-lint with different GOOS 2024-04-22 19:29:12 +02:00
b2 b2: Include custom upload headers in large file info - fixes 2024-07-15 11:51:37 +01:00
box backend: fs implements the Shutdowner interface 2023-12-09 11:44:50 +00:00
cache config: make getting config values more consistent 2024-08-08 13:41:31 +01:00
chunker build: fix gosimple lint errors with golangci-lint v1.60.1 2024-08-14 17:46:12 +01:00
combine fs: define the optional interface SetMetadata and implement it in wrapping backends 2024-05-14 12:51:03 +01:00
compress chunkedreader: add --vfs-read-chunk-streams to parallel read chunks 2024-08-14 21:13:09 +01:00
crypt fs: define the optional interface SetMetadata and implement it in wrapping backends 2024-05-14 12:51:03 +01:00
drive drive: fix copying Google Docs to a backend which only supports SHA1 2024-08-12 20:27:12 +01:00
dropbox dropbox: add option to override root namespace 2024-06-11 12:49:01 +01:00
fichier fichier: fix error code parsing 2023-08-11 00:47:01 +09:00
filefabric filefabric: use atomic types 2023-08-22 12:52:13 +01:00
ftp ftp: fix mkdir with rsftp which is returning the wrong code 2024-02-07 22:09:56 +00:00
gofile Implement Gofile backend - fixes 2024-08-14 21:15:37 +01:00
googlecloudstorage s3, googlecloudstorage, azureblob: fix encoding issue with dir path comparison 2024-06-11 11:54:54 +01:00
googlephotos googlephotos: remove unnecessary nil check 2024-06-11 11:55:42 +01:00
hasher fs: define the optional interface SetMetadata and implement it in wrapping backends 2024-05-14 12:51:03 +01:00
hdfs build: fix linting issues reported by running golangci-lint with different GOOS 2024-04-22 19:29:12 +02:00
hidrive backend: fs implements the Shutdowner interface 2023-12-09 11:44:50 +00:00
http backend http: Adding no-escape flag for option to not escape URL metacharacters in path names - fixes issue 2024-04-22 17:57:09 +01:00
imagekit imagekit: Added ImageKit backend 2023-11-24 18:18:01 +00:00
internetarchive fs: implement --metadata-mapper to transform metatadata with a user supplied program 2023-11-18 17:49:35 +00:00
jottacloud b2: Include custom upload headers in large file info - fixes 2024-07-15 11:51:37 +01:00
koofr backend koofr: remove trailing bracket - fixes 2024-04-04 20:03:26 +01:00
linkbox linkbox: fix list paging and optimized synchronization. 2024-03-24 12:05:58 +00:00
local local: add server-side copy with xattrs on macOS (part-fix ) 2024-08-15 15:36:38 +01:00
mailru mailru: attempt to fix throttling by decreasing min sleep to 100ms 2024-06-08 17:44:11 +01:00
mega docs: fix typos found by codespell in docs and code comments 2023-09-23 12:20:01 +01:00
memory memory: fix incorrect list entries when rooted at subdirectory 2024-03-27 11:43:26 -04:00
netstorage build: fix linting issues reported by golangci-lint on windows 2024-04-22 19:29:12 +02:00
onedrive build: fix govet lint errors with golangci-lint v1.60.1 2024-08-14 18:25:40 +01:00
opendrive opendrive: fix moving file/folder within the same parent dir - 2024-02-21 18:02:19 +00:00
oracleobjectstorage build: fix linting issues reported by running golangci-lint with different GOOS 2024-04-22 19:29:12 +02:00
pcloud backend: fs implements the Shutdowner interface 2023-12-09 11:44:50 +00:00
pikpak pikpak: update to using AWS SDK v2 2024-08-07 12:13:13 +01:00
pixeldrain Add pixeldrain backend 2024-08-12 13:35:44 +01:00
premiumizeme backend: fs implements the Shutdowner interface 2023-12-09 11:44:50 +00:00
protondrive protondrive: don't auth with an empty access token 2024-06-11 12:46:00 +01:00
putio rclone config redacted: implement support mechanism for showing redacted config 2023-07-07 16:25:14 +01:00
qingstor build: fix linting issues reported by running golangci-lint with different GOOS 2024-04-22 19:29:12 +02:00
quatrix quatrix: fix f.String() not including subpath 2024-05-13 18:32:41 +01:00
s3 s3: fix SSE-C after SDKv2 change 2024-08-07 12:13:13 +01:00
seafile build: fix gosimple lint errors with golangci-lint v1.60.1 2024-08-14 17:46:12 +01:00
sftp sftp: clarify the docs for key_pem - fixes 2024-07-23 10:07:44 +01:00
sharefile tree-wide: replace /bin/bash with /usr/bin/env bash 2024-06-11 12:47:47 +01:00
sia rclone config redacted: implement support mechanism for showing redacted config 2023-07-07 16:25:14 +01:00
smb smb: fix shares not listed by updating go-smb2 2023-11-29 15:39:27 +00:00
storj build: fix linting issues reported by running golangci-lint with different GOOS 2024-04-22 19:29:12 +02:00
sugarsync rclone config redacted: implement support mechanism for showing redacted config 2023-07-07 16:25:14 +01:00
swift swift: add workarounds for bad listings in Ceph RGW 2024-06-28 11:14:26 +01:00
ulozto ulozto: fix upload of > 2GB files on 32 bit platforms - fixes 2024-07-20 11:29:34 +01:00
union local: add server-side copy with xattrs on macOS (part-fix ) 2024-08-15 15:36:38 +01:00
uptobox rclone config redacted: implement support mechanism for showing redacted config 2023-07-07 16:25:14 +01:00
webdav webdav: add --webdav-unix-socket-path to connect to a unix socket 2024-08-15 15:14:51 +01:00
yandex yandex: fix 400 Bad Request on transfer failure 2023-06-11 11:11:43 +01:00
zoho zoho: sleep for 60 seconds if rate limit error received 2024-06-12 16:34:30 +01:00