I've worked as a systems administrator for more than 20 years, and moving a large dataset between servers is still one of the jobs I dread most. Linux-to-Linux transfers are fairly straightforward with rsync over SSH or a tar stream, but other situations are less convenient.
For Windows-to-Windows migrations, Robocopy over SMB works, but it can involve a huge number of network round trips and doesn't provide much verification beyond reporting that the copy completed. Mixed Windows and Linux environments often require temporarily configuring an SMB share or SFTP service. If the servers cannot communicate directly because of VLANs, site boundaries, or firewall restrictions, the usual workaround is downloading everything to an intermediate host and uploading it again, doubling both transfer time and temporary storage requirements.
Millions of small files make every approach slower and make maintenance-window estimates unreliable. What tools or workflows do you typically use for cross-platform server-to-server migrations? Is there a practical way to avoid staging through an intermediate machine when no direct route exists? How do you verify the destination data, and have you found anything that substantially improves migrations involving very large numbers of small files?
3 Answers
If the servers are virtual machines, separating the data disks from the operating-system disks can make this much easier. Shut down the source VM, copy or clone the data volume using whatever storage or backup tooling is available, then attach it to a VM at the destination. Backup products such as Veeam can also be useful for moving or restoring the data without treating every file as a separate network operation.
For Windows migrations, Windows Admin Center’s Storage Migration Service is a good default. It is designed to transfer files, shares, and related server configuration, and can help with Windows-to-Windows migrations as well as some Linux or NAS-to-Windows scenarios. It is less of a universal solution for arbitrary mixed-platform moves, but it avoids having to assemble a one-off transfer stack every time.
For data stored on a separate volume, this approach is especially clean: build the replacement operating system, then attach or restore the existing data volume. Just confirm that the filesystem permissions and ownership model are preserved or translated correctly.
For Windows file copies, FastCopy is another practical option. It can be faster and more controllable than ordinary Explorer copying, especially when handling large batches. I would still treat it as a transfer tool rather than a complete integrity strategy: use its verification features where appropriate and perform an independent comparison for critical data.

The main caveat is that copying a virtual disk may copy its provisioned logical size rather than only the space currently used, depending on the format and tool. Thin provisioning or a file-level backup may be more efficient.