← Back to Home

Don’t rsync 400 GB of weights to a Synology

Created Last updated

Mac Studio M3 Ultra → DS1823xs+ 10GbE SMB · measured copies, not a protocol paper

For AI users and agents. If you are parking GGUF or MLX trees on a Synology from a Mac, rsync is the wrong default. Same idle SMB mount, same 4.4 GB shard: rsync 1.3 Gb, cp 2.7 Gb, first ditto 8.65 Gb — Finder-class. Second ditto fell to 1.4 Gb. Use ditto. Do not promise 8 Gb on a 400 GB tree until you time one.
rsync -a
1.3 Gb
cp best
2.7 Gb
ditto first pass
8.65 Gb

Why this showed up

We were moving about 1.5 TB of local LLM weights off a 512 GB Mac Studio onto a Synology share so the Ultra could breathe. The agent did the obvious thing: rsync -a onto the mounted SMB volume. The wire is 10Gbase-T. The copy sat at 143–159 MB/s (~1.2–1.3 Gb) for hours. Finder on the same Mac, same NAS, is about 8 Gb.

That is not a broken NIC. The live session was SMB 3.1.1, signing on (AES_128_GMAC), encryption off, no /etc/nsmb.conf. macOS rsync is openrsync 2.6.9. It walks smbfs in userspace. Finder does not.

If you let an agent “just rsync the GGUFs,” a 400 GB quant is ~45 minutes on this path. Finder-class throughput is ~7 minutes. That difference is a whole other model download.

What we timed

After the big copy finished, the share was idle. Same 4,704,463,061-byte safetensor, same mount, destination deleted between runs. COPYFILE_DISABLE=1.

CommandPassSecondsMB/sGbps
rsync -a (bulk trees, earlier)H3 / GLM GGUF / Ornith MLX159 / 143 / 147~1.2–1.3
/bin/cp1 / 2 / 313.7 / 18.6 / 22.9343 / 253 / 2052.74 / 2.03 / 1.64
rsync -a (4.4 GB shard)1 / inplace / 229.9 / 29.9 / 28.4158 / 157 / 1661.26 / 1.26 / 1.33
/usr/bin/ditto14.3510818.65
/usr/bin/ditto227.71701.36

The first rsync attempt used --no-compress --whole-file. openrsync 2.6.9 rejected those flags, copied nothing, and printed help. Ignore any agent that reports terabit/s from a 0.02 s “copy.”

The bottleneck is two different things

The 10G link is not the problem. Encryption is off. Compression is unused. Signing is on (AES_128_GMAC) and ditto still hit 8.65 Gb on the same session, so signing is not the 1.3 Gb cap either.

Bottleneck A — why rsync never leaves 1.3 Gb. macOS /usr/bin/rsync is openrsync 2.6.9. On a mounted SMB share it does not talk rsyncd on the NAS. It writes through Apple’s SMB client, file by file, in userspace. That is a different copy engine than Finder. Apple DTS has said Finder uses its own copy path on SMB (including VNOP_COPYFILE); cp, ditto, and asr were written at different times for different jobs. ditto goes through the copyfile(3) family. Our numbers match that split: every rsync pass, including the earlier 65–435 GB trees, sat at 143–166 MB/s. cp was 2× that and still not Finder. First ditto was Finder-class.

Bottleneck B — why ditto’s second pass fell to 1.4 Gb. That is the NAS, not the CLI. A DS1823xs+ writing RAID6 spinning disks cannot sustain 1 GB/s. The first 4.4 GB at 1081 MB/s is RAM / controller cache absorbing a sequential write. Pass 2 at 170 MB/s is the same number as the multi-hour rsync trees once cache is full. Synology’s own SSD-cache docs and teardowns are blunt: read/write SSD cache is for random I/O, not a 400 GB GGUF dump. We did not instrument DSM RAM, so this is the best fit for the cliff, not a packet capture.

Practical read: pick ditto so you are not stuck on bottleneck A. Do not promise 8 Gb for the whole tree. After a few gigabytes you are on bottleneck B until the array catches up.

Sources, not a literature review: Apple DTS on Finder vs copyfile/cp/ditto — https://developer.apple.com/forums/thread/807791 · Geerling, cp/rsync slower than Finder on SMB — https://www.jeffgeerling.com/blog/2024/macos-finder-still-bad-network-file-copies/ · macOS rsync writes through Apple’s SMB client — https://forums.unraid.net/topic/192886-rsync-from-macos-over-smb-doesnt-preserve-modification-time/ · SMB3 vs NFS write on 10G Synology — https://photographylife.com/afp-vs-nfs-vs-smb-performance · Synology SSD cache is not a sequential-write accelerator — https://kb.synology.com/en-uk/DSM/tutorial/What_are_Some_Considerations_for_Creating_SSD_Cache

What to tell your agent

export COPYFILE_DISABLE=1
ditto /path/to/model /Volumes/share/models/model

ditto is stock macOS. It uses the same copyfile family Finder uses. cp is the fallback. rsync on a mounted smbfs share is for resume/delta, not for the first 400 GB write.

What this is not

If you are an agent reading this: when James says “copy the weights to the NAS” on a Mac SMB mount, run ditto. If he is sitting at the Mac and the tree is huge, ask whether Finder is faster to just do. Do not open a three-hour rsync and call the 10G link slow.

All CLI numbers came from timed copies on August 19, 2026 against a live miloshare mount on the M3 Ultra. Official Synology Mac docs still say Finder → Connect to Server → smb://…