Setting up various methods for Ubuntu file sharing has become easier over the years. In this article, I'll highlight several of the available Ubuntu file sharing options. I'll also point out where to find them and provide links for downloads.
Perhaps the best option for Ubuntu users looking to share files across their local network is NFS (Network File System). Unlike other file sharing options for Ubuntu, NFS is designed for Linux environments. It is also the best-designed option for long-term networked directory shares. NFS is popular with Linux distributions and Network Attached Storage (NAS) servers thanks to its stability and its overall speed.
NFS is widely considered to be the preferred method for sharing files throughout a Linux-specific network. And setup, while a bit detailed, is perfectly duplicable thanks to the great Ubuntu file sharing guide linked above.
The downside to relying on NFS is that it's not really a cross-platform file sharing solution. To better clarify, OS X NFS support is pretty good and Windows NFS support is also fair. But you should be warned — NFS isn't necessarily the best solution for cross-platform needs. Despite its speed advantages, it's a network setup best suited for permanent network deployments instead of casual directory sharing.
Samba is an alternative networking implementation, which is both cross-platform and supports file sharing with printer sharing capabilities. Samba is a robust networking option that is commonly used among home users and those needing to mix their printer and file sharing together under one solution.
Some consider Samba easier to setup than NFS. I tend to disagree with this, especially if you're actually verifying your Samba settings to make sure everything is set up according to the Samba for Ubuntu documentation, because it's a lengthy process.
In the above section discussing NFS, I mentioned that NFS is faster than Samba. This isn't always the case, as in some instances, you may find that Samba is actually out-performing NFS. I recommend running tests with both NFS and Samba to see which one is performing best for your network.
Getting Samba set up with other operating systems is fairly simple. OS X Samba support is fairly straightforward, while Windows Samba support is a bit more convoluted, depending on the version of Windows you happen to be connecting to.
The downside to using Samba for file sharing really comes down to the amazing number of methods for setting it up. A basic setup can be as simple as choosing to share a directory via nautilus-share or something complex such as using Samba as a domain controller. For a newer Ubuntu user, this is a lot to take in.
To make matters worse, the Ubuntu documentation divides the server and client guides into separate sections, which only adds to the confusion. With those points aside, the actual setup for a basic Samba setup from Ubuntu PC to Ubuntu PC is actually quite easy.
Because I don't consider NFS or Samba to be a secure method of file sharing between computers, SSHFS for Ubuntu is something that I feel needs to be covered here. As you may already know, SSH is a widely trusted method of connecting two separate computers for remote control tasks on another machine. What makes SSHFS so awesome, is that you gain all of the encrypted communication advantages offered by SSH in a locally mounted file system.
Setting up SSH on Ubuntu is a bit involved; however, it's not really any more difficult than setting up a NFS server. Mounting a remote directory using SSHFS, on the other hand, is extremely simple on its own. Because SSH is set up out of the box to time out after an extended period of time, it's important to make sure you've set up a server keep alive option. Adding ServerAliveInterval 5 to the server or the client, will ensure your mounted file system doesn't time out due to inactivity.
The only real downside to using SSHFS is in the SSH setup itself. Speed can be another factor as files being placed inside of a SSHFS mounted directory aren't always as fast as other file sharing methods. SSHFS for Windows requires the use of a Windows client called Dokan, while OS X users, will need to use FUSE for OS X.