Copying data from a Windows PC to Linux—or in the other direction—can seem intimidating at first. After all, it’s something that seems like it should be simple, but turns out to be difficult.
In truth, sharing files from Windows to Linux is easy, but only if you know how to do it. Ready to find out?
5 Ways to Transfer Files from Windows to Linux
Transferring data between Windows and Linux operating systems is easier than you think. We’ve compiled five ways for you to do this:
- Share network folders
- Transfer files with FTP
- Securely copy files via SSH
- Share data using sync software
- Use shared folders in your Linux virtual machine
With each of these methods you’ll be able to easily (and in some cases, effortlessly) move files between operating systems.
Let’s look at them in turn and find out which one suits you best.
1. Share Network Folders Between Linux and Windows
The most obvious way to share files between Linux and Windows is to take advantage of network shares. This term refers to folders on one PC that are available to users on other machines. On a Windows-only network this is easy to set up. Adding a Linux device complicates matters slightly, although this can be overcome.
Starting on the Windows machine, right-click the network connection icon in the system tray and select Open Network & internet Settings. Next, click Sharing options and for the current profile enable
- Turn on network discovery
- Turn on file and printer sharing
Click Save changes to confirm, then browse to the folder containing the files you wish to share. Right-click the folder, select Properties and open the Sharing tab. Here, click Advanced Sharing then check the Share this folder box.
You can manage access to the folder via Permissions; this refers to local Windows users, not network devices.
Click OK to confirm the change, then open the Security tab in Properties. Configure this to mirror the settings in the Permissions box previously. You shouldn’t need to do too much here as Windows 10 should include a group called Authenticated Users. This is used for remote access to your computer.
Again, click OK when you’re done.
To find the Windows share from your Linux PC, simply open the file browser and select Network. From here, navigate to the Windows-hosted folder, and start exchanging data.
Access a Linux Share From Windows
To move data in the other direction, you’ll need to install Samba on your Linux computer.
sudo apt install samba
Next, set a username for the samba share
smbpasswd -a username
You’ll be prompted for a password for the new account (don’t call it “username”!).
Next, create a directory to share the data from.
Next, edit the smb.conf file in your text editor:
sudo nano /etc/samba/smb.conf
Add the following to the end of the configuration file:
[Share] path = /home/[username]/[folder_name] available = yes valid users = [username] read only = no browsable = yes public = yes writable = yes
Make the required changes to suit your own needs, then hit Ctrl + X to exit, tapping Y to save. Next, restart Samba:
sudo service smbd restart
You’ll then be able to access the share from Windows. Open File Explorer or your browser and input the IP or hostname of the remote Linux device, followed by the folder name. In our example, this is
2. Copy Files via SSH From Windows to Linux
With SSH enabled on your Linux device, you can send data via the command line from one computer to another. For this to work, however, you will need to set up an SSH server on your Linux machine.
Start by opening a terminal and updating and upgrading the OS.
sudo apt update sudo apt upgrade
Once complete, install the SSH server. The OpenSSH server is a good option.
sudo apt install openssh-server
Wait while it installs. To check at any time if the OpenSSH server is running, use
sudo service ssh status
To transfer data from Windows, use an SSH client like PuTTY. This needs the PSCP tool downloading to your Windows system to run alongside PuTTY. Find both on the PuTTY homepage.
Note that while PuTTY will need installing, PSCP won’t. However, it should be saved in the root of the C:\ drive or else set up as an environment variable. You’ll also need to confirm the IP address of the Linux device. Check this on the box with
With a connection established, you can send data like this:
c:\pscp c:\some\path\to\a\file.txt user@remoteIP:\home\user\some\path\newname.txt
You’ll be prompted for your password for the Linux computer before the transfer commences.
Want to copy data from Linux to Windows in the same SSH session? This command will download the specified file to the current directory:
c:\pscp user@remoteIP:\home\user\some\file.txt .
Note the lone period at the end—include this or the transfer will not work.
3. How to Transfer Files From Linux to Windows Using FTP
A file transfer protocol (FTP) application with SSH support can also be used. Transferring files via SFTP in a mouse driven user interface is arguably easier than relying on typed commands.
Again, an SSH server must be running on the Linux machine before you start. You should also ensure you have installed an FTP app like FileZilla, which has SFTP support.
To use this method, run FileZilla, then open File > Site Manager. Create a New Site, taking care to set the Protocol to SFTP. Add the target IP address in Host, then the username and password, setting the Logon Type to Normal.
Click Connect when ready, then use the FTP interface to drag and drop files between the two computers.
4. Share Files Between Linux and Windows With Resilio Sync
Another option you should consider is a file syncing program. These are typically cross-platform and use an encrypted key to manage the connection between devices.
All you need to do is install the app, nominate a sync folder, then create the key. Set this up on the second PC and your data will then sync. Two good options are available for this:
- Resilio Sync: formerly known as BitTorrent Sync, Resilio is available on almost any platform you can think of. There is a paid version, but the free option is enough for syncing two devices.
- SyncThing: for Linux, Windows, macOS, and Android, this Resilio Sync alternative offers a similar feature without the paid component.
Our guide to using Resilio Sync (as well as Syncthing) will guide you through setting up network file transfers between computers.
5. Create and Mount a VirtualBox Shared Folder in Linux
Many people don’t run a separate Linux machine. Instead, it’s common to run Linux in a virtual machine (VM). But is there are way to transfer files between Windows and Linux when one is installed in a VM?
Fortunately, yes. With VirtualBox you can create a virtual shared directory for data syncing.
If you’re running Windows in a VM on Linux (or vice versa), VirtualBox is already set up for sharing. Ensure you have the Guest Additions installed on your virtual machine before proceeding.
In the VirtualBox manager, select the VM and choose Start > Headless Start (Alternatively start the VM then open Devices > Shared Folders). When the status displays that the machine is running, open right-click the VM and select Settings > Shared Folders.
Here, select Machine Folders then click the + symbol on the right (or right-click and select Add Shared Folder). Browse the Folder Path, find the directory you want to use, set a name (if necessary) then OK.
Use the Auto-mount checkbox if you want the share to be available whenever the VM runs. Click OK again to confirm and exit. When you reboot the VM, the share will be ready to swap data between the host PC and guest operating system
Sharing Files Between Windows and Linux Is Easy
Whether you’re new to Linux, or you find Windows unfamiliar, sharing data between them is easier than you think.
We’ve looked at several methods. We’d recommend you try all of them and work out which one you’re most comfortable with.
If you’re syncing data to Linux, there’s a good chance you’re migrating your computing from Windows. Check our guide to switching from Windows to Linux for more tips.