When I need to move large files between Windows systems, I do not pick a tool by habit. LAN copies, WAN copies, and PowerShell remoting copies behave very differently. This post compares SCP (OpenSSH), Robocopy (SMB), and Copy-Item (WinRM) for the kinds of transfers I actually run.
The short version: Robocopy is usually best on a LAN, SCP or rsync is usually safer across untrusted or unstable networks, and Copy-Item is convenient for small files inside an existing PowerShell remoting workflow.
Quick answer
For large Windows file transfers on a LAN, use robocopy over SMB because it supports restartable copies, logging, and multi-threading. For encrypted transfers across mixed or less trusted networks, use SCP or rsync over SSH. Use PowerShell Copy-Item mainly for small files when you already have a PowerShell remoting session; it is convenient but not the best bulk-transfer tool.
At a Glance: The Contenders
| Method | Protocol | Typical Speed (10 GbE) | Typical Speed (1 GbE) | Setup Effort | Resumable? | Notes |
|---|---|---|---|---|---|---|
| Robocopy | SMB 3.x | ~300-600 MB/s | ~110-115 MB/s | Medium | Yes (/Z /J) |
Multi-threaded, fastest on LANs. |
| SCP (OpenSSH) | SSH-2 (encrypted) | ~110-120 MB/s | ~90-100 MB/s | Low | Yes (with rsync) |
Single-threaded, CPU-bound due to encryption. |
| Copy-Item | WinRM (HTTPS/SOAP) | ~30-60 MB/s | ~20-40 MB/s | High | No | Not designed for bulk data transfer. |
** Speed Winner (LAN):** Robocopy
** Security & Cross-Platform Winner:** SCP
1. Robocopy - The LAN Speed King
Robocopy (Robust File Copy) is a command-line utility that has been a staple of Windows administration for years. It uses the SMB protocol and is optimized for bulk file transfers on local networks.
robocopy "\\server\share" "C:\local\dest" hugefile.zip /MT:32 /Z /J /R:3 /W:5 /LOG+:copy.logWhy I Find It’s So Fast:
- Multi-threaded: The
/MTswitch allows it to use multiple threads (up to 128) to copy files in parallel. - SMB 3.x Multichannel: On supported systems, it can leverage multiple network connections for a single transfer.
- Unbuffered I/O: The
/Jswitch reduces I/O overhead for large files. - Resumable: The
/Zswitch allows it to resume a transfer if it’s interrupted.
Real-World Test (10 GbE, 50 GB ZIP):
- Robocopy: ~580 MB/s (91 seconds)
- SCP: ~118 MB/s (7.1 minutes)
Requirements:
- An accessible SMB share (e.g.,
\\server\share). - Port 445 open between the client and server.
- Valid domain or local credentials.
2. SCP - The Secure and Reliable Workhorse
SCP (Secure Copy Protocol) is part of the OpenSSH suite and provides encrypted file transfers over the SSH protocol. It is the de facto standard for secure file transfers in the Linux world and is now natively available on Windows.
# Example in PowerShell
scp user@server:/path/to/hugefile.zip $env:USERPROFILE\Downloads\Performance Tips:
- Compression: Use the
-Cflag to enable compression, which can help on slower networks. rsyncfor Resumability: For true resumable transfers,rsyncover SSH is superior toscp.rsync -avz --progress --partial user@server:/path/hugefile.zip ./Downloads/
Why It’s Slower Than Robocopy on a LAN:
- Single-threaded:
scpdoes not use multiple threads for a single file transfer. - Encryption Overhead: The AES encryption used by SSH is CPU-intensive, which can become a bottleneck.
- No Multichannel: It does not take advantage of multiple network paths.
Despite this, scp is still an excellent choice for 1 GbE networks, where it can often saturate the connection.
3. Copy-Item (via WinRM) - The PowerShell Native (but Slow) Option
PowerShell’s Copy-Item can be used with a remote PSSession to transfer files over WinRM. While convenient for small configuration files, it is not designed for bulk data transfer.
$session = New-PSSession -ComputerName server
Copy-Item -FromSession $session -Path "C:\share\hugefile.zip" -Destination "C:\local\"Why It’s So Slow:
- SOAP/XML Overhead: WinRM wraps data in heavy SOAP and XML envelopes.
- No Parallel Chunks: It transfers files in a single, serial stream.
- Not Resumable: If the transfer is interrupted, it must be restarted from the beginning.
Verdict: Avoid Copy-Item over WinRM for any files larger than a few megabytes.
The 5G Challenge: High Latency, Restricted Ports
Transferring files over a 5G wireless network introduces new challenges: higher latency, potential packet loss, and carrier-grade NAT that often blocks ports like SMB (445). Typical 5G Network Metrics:
- Download Speed: 100-600 Mbps (12.5-75 MB/s)
- Upload Speed: 20-100 Mbps (2.5-12.5 MB/s)
- Latency: 15-50 ms
- Firewall/NAT: CGNAT and carrier restrictions are common.
On a 5G network, latency tolerance and the ability to work over standard, unblocked ports become more important than raw, multi-threaded throughput.
5G Performance Comparison (50 GB ZIP):
| Method | Protocol | Max Speed (5G) | Time (50 GB) | Resumable? | Verdict |
|---|---|---|---|---|---|
| SCP | SSH-2 | ~60-70 MB/s | ~12-15 min | Yes | Best for 5G |
| Robocopy | SMB 3.x | ~50-65 MB/s | ~13-17 min | Yes | Good, but often blocked |
| Copy-Item | WinRM | ~15-30 MB/s | ~30-60 min | No | Too slow and unreliable |
Why SCP Wins on 5G:
- Port 22 is Rarely Blocked: Unlike SMB (port 445), SSH (port 22) is almost universally allowed.
- Latency Tolerance: The SSH protocol is more resilient to the higher latency and jitter of wireless networks.
- Built-in Encryption and Compression: The
-Cflag helps reduce the amount of data sent over the limited bandwidth.
Final Recommendations
| Goal | Recommended Tool | Why |
|---|---|---|
| Maximum LAN Speed | robocopy /MT:32 /J /Z |
Multi-threaded, SMB 3 multichannel. |
| Secure Over Internet/WAN | scp -C or rsync -e ssh |
Encrypted, reliable, and uses a standard port. |
| Resumable Transfers | rsync -e ssh or robocopy /Z |
Both can resume interrupted transfers. |
| Cross-Platform Compatibility | scp or rsync |
Works on Windows, Linux, and macOS. |
| Small Config Files | Copy-Item over WinRM |
Convenient for PowerShell-native workflows. |
** Pro Tip:** For the best of both worlds (speed and security), consider running Robocopy over a VPN that encrypts SMB traffic, or tunnel your Robocopy transfer through an SSH connection.
Conclusion
- Robocopy is the undisputed champion for high-speed file transfers on a local network.
- SCP (and its more powerful cousin,
rsync) is the most reliable and secure choice for transferring files over the internet, especially on unreliable or restricted networks like 5G. - Copy-Item over WinRM should be reserved for small configuration files and not used for bulk data.
Operational Considerations
Raw transfer speed is only one part of the decision. Reliability, restart behavior, logging, encryption, and firewall rules matter just as much in real administration work.
For large LAN transfers, Robocopy is usually the best first choice because it handles retries, preserves timestamps, and can produce useful logs. Use /LOG or /TEE when copying production data so you can prove what was copied and identify failed files without rerunning the entire job blindly.
For WAN or internet transfers, prefer SSH-based tools unless you already have a secure site-to-site network. SCP is simple, but rsync is better when files may change or when a connection may drop. It can compare source and destination and transfer only the differences, which is valuable over slow links.
For PowerShell remoting, keep Copy-Item -ToSession focused on small operational files such as scripts, configuration fragments, and logs. It is convenient because it reuses an authenticated PowerShell session, but it is not designed to compete with SMB, Robocopy, or rsync for large data sets.
Always test with representative files. A transfer test using one large ISO file does not predict performance for a directory with 100,000 small files. Small files increase metadata overhead, antivirus scanning, and connection round trips. When measuring, test both large-file and many-small-file scenarios.
By understanding the strengths and weaknesses of each tool, I choose the right one for the job and ensure my file transfers are as fast, reliable, and secure as possible.
💬 Comments