What is the problem you are having with rclone?
Default transfer settings to local hard drives uses multithreaded streaming and sparse files from what I read. This tanks performance and makes reading the file afterward take forever due to the extremely high fragmentation. Moving the files after to clean up the fragmentated mess takes longer than the download itself to two locally attached SATA3 speed drives.
~3TB transfer to a WD Gold 18TB 7200rpm CMR drive that previously was 0% fragmentated prior to test via a 1000mbps internet connection.
Performance with default settings is very poor,
~20-40MB/s read after completion, 50MB/s during download, 100% disk busy, 050% drive fragmentation after
(Log does mention the commands needed but isn't very clear on when to use it, Writing sparse files: use --local-no-sparse or --multi-thread-streams 0 to disable)
With mult-threaded streams off and sparse file off --multi-thread-streams 0 speeds improve a lot
120MB/s read after completion, >80MB/s during download, 30% disk busy, 000% drive fragmentation
I think if rclone did a best effort detection if the local drive was an SSD or HDD it would improve user experience and likely lead to less hard drive wear and tear. From what I read people still wanted multi-threaded downloading but not sparse allocated files but for hard drives you probably should just have one thread to disk and multiple threads downloading into a cache. For SSDs it is the opposite you probably want like 20+ writing to SSD threads or more to get the queue depth up as high as possible while HDDs really don't like doing that which might be more than is reasonable for download threads.
Users might think their hard drive slow or some other problem and while there is a log message to say which flag to use most bulk storage will be to hard drives so I'm not sure if it make sense to by default cause extreme fragementation. It doesn't really tell you if you have a hard drive you should definitely choose one of the options for best performance.
Windows has the MediaType flag for the disk type and if it is unknown and the user doesn't specify the target disk type it should probably ask what type of local drive is being targeted. There are probably different ideal settings for single HDD, SSD, NVMe SSD, Arrays of HDDs/SSDs. Problem is that even after the transfer is complete it can take 24+ hours to transfer the extremely fragmentated data to another disk which fixes the fragementation or even longer to defragment the drive in place. Checking this media type flag the targeted local drives all advertise as HDDs in windows.
Run the command 'rclone version' and share the full output of the command.
rclone v1.63.1
- os/version: Microsoft Windows 10 Pro for Workstations 22H2 (64 bit)
- os/kernel: 10.0.19045.3324 (x86_64)
- os/type: windows
- os/arch: amd64
- go/version: go1.20.6
- go/linking: static
- go/tags: cmount
Which cloud storage system are you using? (eg Google Drive)
Google Drive
The command you were trying to run (eg rclone copy /tmp remote:tmp
)
Slow highly fragmentated command
rclone move GoogleDrive1: T:\Transfer --delete-empty-src-dirs --create-empty-src-dirs --fast-list --progress
vs
Much faster ~2x speed improvement
rclone move GoogleDrive1: T:\Transfer --delete-empty-src-dirs --create-empty-src-dirs --fast-list --progress --multi-thread-streams 0
The rclone config contents with secrets removed.
[GoogleDrive1]
type = drive
client_id = [Redacted]
client_secret = [Redacted]
scope = drive
acknowledge_abuse = true
token = [Redacted]
team_drive =
A log from the command with the -vv
flag
Changed command to copy instead of move.
rclone-v1.63.1-windows-amd64>rclone copy GoogleDrive1:Work P:\Test --create-empty-src-dirs --fast-list --progress -vv
2023/09/10 16:01:11 DEBUG : rclone: Version "v1.63.1" starting with parameters ["rclone" "copy" "GoogleDrive1:Work" "P:\\Test" "--create-empty-src-dirs" "--fast-list" "--progress" "-vv"]
2023/09/10 16:01:11 DEBUG : Creating backend with remote "GoogleDrive1:Work"
2023/09/10 16:01:11 DEBUG : Using config file from "C:\\Users\\Username\\.config\\rclone\\rclone.conf"
2023/09/10 16:01:12 DEBUG : Google drive root 'Work': 'root_folder_id = [Redacted]' - save this in the config to speed up startup
2023/09/10 16:01:12 DEBUG : Creating backend with remote "P:\\Test"
2023/09/10 16:01:12 DEBUG : fs cache: renaming cache item "P:\\Test" to be canonical "//?/P:/Test"
2023-09-10 16:01:12 DEBUG : [RedactedFilename]: Need to transfer - File not found at Destination
...
2023-09-10 16:01:12 DEBUG : [RedactedFilename]: Need to transfer - File not found at Destination
2023-09-10 16:01:12 INFO : Writing sparse files: use --local-no-sparse or --multi-thread-streams 0 to disable
2023-09-10 16:01:12 DEBUG : [RedactedFilename]: Starting multi-thread copy with 4 parts of size 10.000Gi
2023-09-10 16:01:12 DEBUG : [RedactedFilename]: Starting multi-thread copy with 4 parts of size 10.000Gi
2023-09-10 16:01:12 DEBUG : [RedactedFilename]: Starting multi-thread copy with 4 parts of size 10.000Gi
2023-09-10 16:01:12 DEBUG : [RedactedFilename]: Starting multi-thread copy with 4 parts of size 10.000Gi
2023-09-10 16:01:12 DEBUG : [RedactedFilename]: multi-thread copy: stream 4/4 () size 10.000Gi starting
2023-09-10 16:01:12 DEBUG : [RedactedFilename]: Need to transfer - File not found at Destination
2023-09-10 16:01:12 DEBUG : [RedactedFilename]: multi-thread copy: stream 1/4 () size 10.000Gi starting
2023-09-10 16:01:12 DEBUG : [RedactedFilename]: multi-thread copy: stream 4/4 () size 10.000Gi starting
2023-09-10 16:01:12 DEBUG : [RedactedFilename]: multi-thread copy: stream 3/4 () size 10.000Gi starting
2023-09-10 16:01:12 DEBUG : [RedactedFilename]: multi-thread copy: stream 2/4 () size 10.000Gi starting
2023-09-10 16:01:12 DEBUG : [RedactedFilename]: multi-thread copy: stream 1/4 () size 10.000Gi starting
...
2023-09-10 16:01:12 DEBUG : [RedactedFilename]: multi-thread copy: stream 1/4 () size 10.000Gi starting
2023-09-10 16:01:12 DEBUG : [RedactedFilename]: multi-thread copy: stream 3/4 () size 10.000Gi starting
2023-09-10 16:01:12 DEBUG : [RedactedFilename]: multi-thread copy: stream 3/4 () size 10.000Gi starting
2023-09-10 16:01:12 DEBUG : [RedactedFilename]: multi-thread copy: stream 1/4 () size 10.000Gi starting
2023-09-10 16:01:12 DEBUG : [RedactedFilename]: multi-thread copy: stream 2/4 () size 10.000Gi starting
2023-09-10 16:01:12 DEBUG : [RedactedFilename]: Need to transfer - File not found at Destination
...
2023-09-10 16:01:12 DEBUG : [RedactedFilename]: Need to transfer - File not found at Destination
2023-09-10 16:01:12 DEBUG : Local file system at //?/P:/Test: Waiting for checks to finish
2023-09-10 16:01:12 DEBUG : Local file system at //?/P:/Test: Waiting for transfers to finish
2023-09-10 16:01:13 DEBUG : [RedactedFilename]: multi-thread copy: write buffer set to 128Ki
...
2023-09-10 16:01:13 DEBUG : [RedactedFilename]: multi-thread copy: write buffer set to 128Ki
2023-09-10 16:01:52 INFO : Signal received: interrupt