Starting with robocopy is nuts. I'd have started with rsync and just let it run overnight. The peace of mind that it'd do the right thing and not needing to research flags are more than worth any speed tradeoffs.
Given Ubiquiti's history of abandoning entire product lines, I cannot ever imagine trusting a ubiquiti closed-source NAS product with my data. No thank you. Not when TrueNAS exists.
> Given Ubiquiti's history of abandoning entire product lines
Huh, this is news to me but seems to check out from my Googling. I've really been enjoying the Ubiquiti ecosystem and was considering a UNAS to replace my Seagate NAS.
I've been following ubiquiti since the days of 802.11a based radio bridges (and then 802.11n based stuff like the powerbridge m5), it's an exceedingly frustrating company to rely on doing anything serious with.
I agree with Scott, no need to use rsync - he should have used rclone instead! It can be easily installed in the package manager, and with 4 threads (or multiples of 4) it fully uses/saturates the 4 1GbE links.
Also a hint for anyone planning something similar: if you use Synologys SHR format (based on mdraid+btrfs) and your new destination supports or uses BTRFS too, you can just btrfs send your whole pool to the new NAS!
(Since its a single process it wont saturate any LAG though)
I'm aware of the comments saying rsync or rclone, and I absolutely also use those, but for initial migrations I often find myself simply using tar instead.
Something like :
(cd /src/dir && tar cf -) | ssh user@host "(cd /dst/dir && tar xvf -)"
will do nicely.
It won't saturate 4 multichannel links, you'll most likely need rclone or rsync for that (or robocopy it appears), but it's much faster than rsync on initial copies.
Then for good measure, once the tar copy finishes, I run a single rsync verification between the two targets.
That being said, my latest storage migration was performed using either ChronoSync or Carbon Copy Cloner from my Mac mini server. They won't do anything rsync cannot already do, except present data and copy history in a graphical environment.
Be aware that tar doesn't preserve creation/birth times and keeping that original metadata is important to some people if the target file system can record it. Robocopy preserves/transfers creation times by default and recent rsync versions (3.2.3 2020-08-06) can do it with the extra option --crtimes.
Sometimes when we Linux for a long time, we run into decades old friends: grep, sh, bc, whatever. Not uncommon to run a command that first released 50 years ago. Rarely on Windows do we get that. As much hate as windows gets, at least they left in more than just explorer drag and drop.
If the author is reading, it would be nice to clarify that the 10g network comment is irrelevant. I was under the impression at least 1 of the devices would have a 10g link, but at least 2 of the 3 didn't. It was a bit confusing, but it's also very late where I am.
If that's the setup, the only way anything would run more than 1Gb is if the Synology is doing SMB-multichannel (which if they setup 4x1Gb LAG, then it's not SMB-MC).
[edit] reading the article, they do have the Syno setup for SMB-MC and that's the only reason this wasn't stuck at ~120MB/s
The Synology web UI lets you mount a remote SMB share and copy files directly in their file manager without making the round-trip via your PC, I imagine this would have been the fastest method without getting bogged down in command-line tools.
The situation in the article is one NAS is 10 Gbit and one NAS had 4x1Gbit. SMB will use MultiChannel to aggregate the 4x1GBit ports, but rsync will just pick one and be limited at 25% of the available bandwidth.
I don't even think rclone can split across multiple interfaces like SMB does.
Synology actually supports the old (non-encrypted) rsync protocol, too. On a trusted LAN, it runs much quicker that way than with rsync-over-ssh...
I just finished slurping all of my files off an old Synology and onto a TrueNAS server. Unlike the article here, my Syno is 2x1Gb in a LAG, so I was really only getting ~1Gbps at max.
One disappointment with TrueNAS is that it doesn't support SMB-MC unless you put each interface on a separate subnet (which is a strange limitation because Samba itself doesn't seem to suffer from this, since synology handles it fine)
I love this kind of step-by-step solving post, but it bothers me that the author didn't track down what the JPEG in the Alternate Data Stream (ADS) was for. Something put it there... Might it be a surprise when it ends up not being there later?
Also, it kinda sounds like the UNAS might not be supporting ADS' for some reason? That alone could be a problem later on...
"Ideally you'll find more value in the comments as Hacker News folks and Windows experts will drop in with better tools and strategies."
I don't know if this is better, but...an alternative is rclone, which uses rsync under the hood. It can also do parallel jobs and is restartable on any failed partial copy.
When I've had to do large Synology-to-Synology moves, that's what I've used. The multiple rsyncs in parallel really helps if you've got a lot of small files.
Moving Synology-to-Synology, I was surprised at how easily I could just move the original HDDs (in their original order) from old enclosure to new enclosure, and it just worked.
The issue with rclone compared to rsync for existing files is it will copy the whole thing again, where rsync uses something called delta transfer and only transfer the change. But if you are doing one time cloud to cloud transfer then yeah rclone is the gold standard.
> rsync under the hood
Is it? I think one is written in C (rsync) and the other is in Go lang (rclone)
The moment the /Z option showed up I figured there'd be an issue. I have to copy multi-TB files often using Robocopy. We originally used /Z because "Well, if it gets interrupted, I'd obviously want to restart from where I left off..." I accidentally left the switch off one day and noted it completed in less than half the normal time (of using the /Z flag).
In other words, yes, it may be restartable, but if it takes more than twice as long, just recopy the file(s) if needed.
Asynchronous IO, multithreaded for smaller files, serialized when they are big, block-level delta copying on subsequent runs. Pretty much as fast as it gets on Windows.
rsync tends to be a bit tougher on smaller CPUs. scp is generally better for those cases if you don't mind hashing afterwards to confirm everything made it without bit flips (in theory it shouldn't happen, but I've definitely had corruption during transfers like these). I personally prefer that method because you check files that are out of page cache and at rest on the filesystem.
If you want to get the advantage of SMB multi stream copies (in rsync*), look for LACP or other options. Not sure if Synology does that though.
I'm honestly surprised that SMB was faster here. I've never had luck getting it to perform well, so this is a bit of a shock.
LACP does not work well with SMB multipath and will generally prevent you from seeing the benefit. You want IP addressed adapters for each link on both sides of the conversation.
you can get 5 to 10 times more GB/$ with magnetic drives. The best solution is something that is smart enough to stream linear reads like movies from disk but cache data with random IO patterns on flash.
It really feels like rsync should have a multi-path setting that would have sped this up across multiple links (but doesn't because noone has made it yet).
You could just run multiple rsync processes using different src and dest paths to achieve multiple copy streams. Anyway this would not be likely much faster if rsync is run over encrypted SSH due to CPU performance, compared to unencrypted SMB.
Claude is quite good at producing an optimal robocopy command for your particular machines and target network use (you do not want 100% when copying dozens of TB over the LAN unless you want to annoy your family).
Huh, this is news to me but seems to check out from my Googling. I've really been enjoying the Ubiquiti ecosystem and was considering a UNAS to replace my Seagate NAS.
I believe I'll be more happierer as I integrate it to my life more and more.
Also a hint for anyone planning something similar: if you use Synologys SHR format (based on mdraid+btrfs) and your new destination supports or uses BTRFS too, you can just btrfs send your whole pool to the new NAS!
(Since its a single process it wont saturate any LAG though)
Something like :
will do nicely.It won't saturate 4 multichannel links, you'll most likely need rclone or rsync for that (or robocopy it appears), but it's much faster than rsync on initial copies.
Then for good measure, once the tar copy finishes, I run a single rsync verification between the two targets.
That being said, my latest storage migration was performed using either ChronoSync or Carbon Copy Cloner from my Mac mini server. They won't do anything rsync cannot already do, except present data and copy history in a graphical environment.
Be aware that tar doesn't preserve creation/birth times and keeping that original metadata is important to some people if the target file system can record it. Robocopy preserves/transfers creation times by default and recent rsync versions (3.2.3 2020-08-06) can do it with the extra option --crtimes.
If the author is reading, it would be nice to clarify that the 10g network comment is irrelevant. I was under the impression at least 1 of the devices would have a 10g link, but at least 2 of the 3 didn't. It was a bit confusing, but it's also very late where I am.
Your suggestions is also very nice, you can just turn off your own PC and wait for it to finish.
I don't even think rclone can split across multiple interfaces like SMB does.
I just finished slurping all of my files off an old Synology and onto a TrueNAS server. Unlike the article here, my Syno is 2x1Gb in a LAG, so I was really only getting ~1Gbps at max.
One disappointment with TrueNAS is that it doesn't support SMB-MC unless you put each interface on a separate subnet (which is a strange limitation because Samba itself doesn't seem to suffer from this, since synology handles it fine)
With SMB you just plug in 2 NICs and you automatically get ~double the bandwidth.
Also, it kinda sounds like the UNAS might not be supporting ADS' for some reason? That alone could be a problem later on...
The whole reason of the post.
And the thing what linux fanbois with rsync/rclone here absolutely ignore.
I don't know if this is better, but...an alternative is rclone, which uses rsync under the hood. It can also do parallel jobs and is restartable on any failed partial copy.
When I've had to do large Synology-to-Synology moves, that's what I've used. The multiple rsyncs in parallel really helps if you've got a lot of small files.
> rsync under the hood
Is it? I think one is written in C (rsync) and the other is in Go lang (rclone)
In other words, yes, it may be restartable, but if it takes more than twice as long, just recopy the file(s) if needed.
Asynchronous IO, multithreaded for smaller files, serialized when they are big, block-level delta copying on subsequent runs. Pretty much as fast as it gets on Windows.
If you want to get the advantage of SMB multi stream copies (in rsync*), look for LACP or other options. Not sure if Synology does that though.
I'm honestly surprised that SMB was faster here. I've never had luck getting it to perform well, so this is a bit of a shock.
for example, Immich is a huge upgrade to Synology photos. I didn't know how much i was missing out.
https://docs.nersc.gov/services/bbcp/