The Unpopular Opinion: Samba Is Overrated for Casual Use
Every time someone asks "how do I share files between Windows and Linux?" the first answer is always Samba. Install it, edit smb.conf, set up user permissions, restart the service, configure your firewall, and hope the Windows machine can see the share. It's become the default recommendation in every forum, every tutorial, every StackOverflow answer.
I think that's wrong for most people.
I've maintained a Samba setup between my Windows 11 desktop and my ParrotOS laptop for years. It works once configured. But I've also spent more time troubleshooting Samba than any other piece of software on my network. Permission denied errors, SMB version mismatches, shares that disappear after a system update, Windows suddenly unable to browse the network. The protocol is 40 years old and it shows.
For IT departments managing persistent file shares across dozens of machines, Samba is the right tool. For someone who needs to move a PDF from their Linux laptop to their Windows desktop, it's overkill in the same way renting a moving truck is overkill for carrying a backpack across the street.
What Samba Actually Costs You
The installation itself is fast: sudo apt install samba on Debian-based distros, sudo dnf install samba on Fedora. But installation is maybe 5% of the work.
You need to edit /etc/samba/smb.conf, a config file whose syntax dates back to the early 1990s. A minimal share definition looks simple enough:
[MyShare]
path = /home/youruser/Shared
writable = yes
valid users = youruser
Then you create a Samba-specific password with sudo smbpasswd -a youruser (because Samba doesn't use your Linux login password by default). Restart with sudo systemctl restart smbd. Open firewall ports 139 and 445. On the Windows side, type \\linux-hostname\MyShare in File Explorer and enter the credentials.
That's the happy path. The unhappy path involves mount error(13): Permission denied because Windows 11 defaults to SMB3 and your Samba version is negotiating SMB1. Or the share appearing but being read-only because the Linux directory permissions don't match the Samba config. Or Windows credential caching showing you someone else's stored login. I've hit all of these on my own network.
The maintenance cost is real too. Samba configs don't migrate cleanly between Linux distro upgrades. I've had to reconfigure after updating ParrotOS twice. And if either machine changes IP address (common on home networks with DHCP), bookmarked shares break.
SCP: The Most Underrated Option
If your Linux machine runs SSH (and most do out of the box, or after sudo apt install openssh-server), you already have a file transfer system that works.
Windows 10 and 11 ship with an SSH client in PowerShell. No extra software needed. To send a file from Windows to Linux:
scp C:\Users\You\report.pdf user@192.168.1.42:/home/user/
To pull a file from Linux to Windows:
scp user@192.168.1.42:/home/user/data.csv C:\Users\You\Downloads\
That's it. No config files, no service restarts, no permission juggling. The transfer is encrypted by default over SSH. Speed is limited by your network, not by protocol overhead.
The downsides are real: you need to know the Linux machine's IP address, and you need to be comfortable with a terminal. For developers and sysadmins, this is a non-issue. For everyone else, it's a dealbreaker. WinSCP adds a GUI layer for Windows users who want drag-and-drop over SSH, which helps, but it's still another piece of software to install and configure.
Zero-Config Transfer Tools Changed Everything
What I wanted was AirDrop for Windows and Linux. No IP addresses, no config files, no prerequisites. Just install something on both machines and send files.
That's why I built OpenDrop. Both machines run the app, mDNS auto-discovery (the _opendrop._tcp.local. service on port 8000) finds every device on the network, and you drag a file to send it. Files land in %LOCALAPPDATA%\OpenDrop\Files on Windows and ~/.config/opendrop/Files on Linux (respects $XDG_CONFIG_HOME).
On LAN, transfers stream directly at network speed with no file size cap up to 10GB. I regularly move multi-gigabyte database exports between my Windows desktop and the ParrotOS laptop. A 2GB file finishes in under 30 seconds, where the same file over cloud storage would take 7+ minutes waiting for the upload alone.
The argument against zero-config tools is that they require software on both ends. Fair. But so does Samba, and Samba requires significantly more configuration. The trade-off is clear: two installs and zero config versus two installs plus 20 minutes of config file editing and troubleshooting.
If your Windows and Linux machines aren't on the same network, OpenDrop still works. Free users get remote transfers through Cloudflare tunnels (5MB chunks at ~8 Mbps). Pro users get Fly.io relay streaming at 30-50+ Mbps. Same WiFi is faster but not a requirement.
LocalSend is another option in this category, using a similar mDNS-based approach. It's LAN-only though, which means no transfers when your machines are on different networks. For same-network use, both tools get the job done.
USB Still Wins One Scenario
I'll give credit where it's due. For a one-time bulk migration of 100+ GB, a USB 3.2 flash drive formatted as exFAT is still the fastest option. Real-world USB 3.2 throughput hits 300+ MB/s, which beats any WiFi connection. Format as exFAT because both Windows and modern Linux distros read it natively. Avoid NTFS for Linux use if you can, since the ntfs-3g driver is slower than native filesystem support.
The USB approach doesn't scale for daily use, obviously. Plugging in a drive, copying, walking to the other machine, and plugging in again is fine once. Doing it five times a day makes you question your life choices.
My Verdict After Five Years of Daily Cross-Platform Transfers
I transfer files between Windows and Linux almost every day. I've tried everything described in this article extensively, and my preferences have changed over the years as better tools became available.
For daily device-to-device file moves: Zero-config tools like OpenDrop. No contest. Install once, never configure, transfer files in seconds. This handles 90% of my transfers.
For persistent shared directories: Samba, if you're willing to invest the setup time and maintain it through updates. The payoff is real for workflows that need a mounted shared drive available at all times.
For scripted or automated transfers: SCP over SSH. It's already there, it's encrypted, and it works well in shell scripts and cron jobs. OpenDrop's CLI is another option here if you want auto-discovery instead of hardcoded IPs.
For one-time large migrations: USB drive, formatted exFAT. Nothing wireless matches the raw throughput of a direct physical connection for 100GB+ transfers.
The Samba-first mentality in the Linux community comes from an era when persistent network shares were the only game in town. For point-to-point file transfers between your own devices, there are simpler options now. The right tool depends on how often you transfer, how much you're moving, and how much time you want to spend on initial setup versus just getting it done.
Skip the Samba Config for Your Next Transfer
OpenDrop auto-discovers your Windows and Linux machines on the same network. No smb.conf, no firewall rules, no IP addresses to look up.
Download OpenDrop Free