How to Transfer Files Between Windows and Linux

Samba Is Overrated for Casual Use

Ask how to share files between Windows and Linux and the first answer is usually Samba. Samba makes a Linux folder show up as a Windows network share, using SMB, the same protocol Windows uses for its own file sharing. For some jobs it is the right tool.

For moving one PDF from a laptop to a desktop, it is a lot of setup. You install a service, edit a config file, add a separate password, open the firewall, and then work out why Windows can't see the share. If you need a folder that is always mounted, that work pays off. If you move files now and then, there are quicker routes.

What Samba Actually Costs You

Installing it is one command: sudo apt install samba on Debian and Ubuntu, sudo dnf install samba on Fedora. The rest is configuration.

Add a share to /etc/samba/smb.conf:

[MyShare]
path = /home/youruser/Shared
writable = yes
valid users = youruser

Samba keeps its own password database, so give your user a Samba password with sudo smbpasswd -a youruser. Restart the service with sudo systemctl restart smbd (the unit is called smb on Fedora). Then allow SMB through the firewall. Modern clients only need TCP port 445. On Ubuntu with ufw, sudo ufw allow samba covers it. On Fedora, run sudo firewall-cmd --permanent --add-service=samba and reload. Fedora's SELinux also blocks sharing folders in your home directory until you set the right label or boolean.

On Windows, type \\linux-hostname\MyShare (or the IP address) into File Explorer and log in with the Samba username and password.

The common ways it goes wrong:

SCP: The Most Underrated Option

If the Linux machine runs an SSH server, you already have an encrypted file transfer tool. Many desktop distros don't install one by default. Add it with sudo apt install openssh-server, or on Fedora sudo dnf install openssh-server followed by sudo systemctl enable --now sshd.

Windows 10 (version 1809 and later) and Windows 11 include the OpenSSH client, so scp works from PowerShell or Command Prompt with nothing else installed. 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\

Add -r to copy a whole folder, and quote any path that contains spaces. Find the Linux machine's address with hostname -I or ip addr.

There is no share to define, no extra password and no service to restart. SSH encrypts the traffic. For large folders you sync often, rsync over SSH copies only what changed, though Windows doesn't ship rsync, so you would run it from WSL.

The downsides: you need the Linux machine's IP address or hostname, and you need to be comfortable in a terminal. If you'd rather drag and drop, WinSCP gives you a file manager window over the same SSH connection.

Zero-Config Transfer Tools

The third option is an app on both machines that finds the other one for you. No IP addresses and no config files.

OpenDrop is the one we make. It runs on Windows and Linux, plus iPhone, iPad and Android. Sending between two computers is an OpenDrop Pro feature. Sign in to the same account on both (Google, Apple, Microsoft or email) and they find each other: over mDNS (the _opendrop._tcp.local. service) on the same network, or through your account when they're on different networks. Drag a file onto the other computer's tab to send it. Received files land in %USERPROFILE%\Downloads\OpenDrop\Files on Windows and ~/Downloads/OpenDrop/Files on Linux.

On the same network, files stream directly between the two machines at full speed, with no file size cap. File contents are encrypted with ChaCha20-Poly1305 before they leave the sending machine.

On Linux, OpenDrop ships as an AppImage for x86_64 or ARM64 (aarch64) and needs glibc 2.35 or newer (Ubuntu 22.04, Debian 12, Fedora 36 or later). Run chmod +x on the file before the first launch. On Windows it needs Windows 10 version 1809 or later, 64-bit.

The free plan is built around your phone: each phone pairs with one computer by scanning a QR code, with no account. Free doesn't send computer to computer, so Windows to Linux needs Pro.

Tip

If your Windows and Linux machines aren't on the same network, OpenDrop Pro still connects them, over the faster Pro relay or a direct peer-to-peer link, with nothing extra to install and no port forwarding. The relay carries file contents only in encrypted form, though it can see file names, sizes and device names. On the same network, transfers skip the internet entirely.

LocalSend is a free, open-source alternative that runs on Windows and Linux and finds devices on the local network automatically. It only works when both machines are on the same network. If that's always true for you and you want free computer-to-computer transfers, it's a good pick.

The trade-off with any app like this is installing it on both machines, where SCP and Samba lean on software Windows already has.

USB Still Wins One Scenario

For a one-time move of 100 GB or more, a USB drive is hard to beat. USB 3.2 Gen 1 signals at 5 Gbit/s and Gen 2 at 10 Gbit/s. A cheap flash drive won't get close to that, but an external SSD on a fast port usually outruns Wi-Fi, and it doesn't depend on your network at all.

Format the drive as exFAT. Windows reads and writes it natively, and Linux has a native exFAT driver from kernel 5.7 on. Skip FAT32, which can't hold files over 4 GB. NTFS works too: kernels from 5.15 include the ntfs3 driver, and older systems use ntfs-3g, which is slower. Eject the drive properly on both sides, because exFAT has no journal and pulling it mid-write can corrupt files.

It doesn't work for daily use. Carrying a drive between machines is fine once and tedious the fifth time in a day.

Verdict: Which Windows to Linux Method to Use

Everyday files between your own machines: a transfer app. OpenDrop Pro if you also want it to work across networks, or LocalSend if both machines always share a network.

A folder that's always shared: Samba. The setup is worth it when you want a mapped drive available all the time.

Scripts and automation: SCP or rsync over SSH. They work in shell scripts and cron jobs. OpenDrop's CLI is another option: with Pro, opendrop upload <file> -d "Device Name" sends to another signed-in computer by name instead of IP address, and opendrop serve runs OpenDrop without the window.

One big migration: an exFAT USB drive or external SSD.

Samba became the default answer when a network share was the main way to move files. For sending files between two of your own machines, SCP or a transfer app takes far less setup.

Skip the Samba Config for Your Next Transfer

Download OpenDrop free, then add Pro to have your Windows and Linux machines find each other through your account. No smb.conf, no IP addresses to look up.

Download OpenDrop Free