Day 12 - Transferring files
You’ve now had a working Internet server of your own for some time, and seen how you can create and edit small files there. You’ve created a web server where you’ve been able to edit a simple web page.
Today we’ll be looking at how you can move files between your other systems and this server - tasks like:
- Taking a copy of some files from your server onto your desktop machine
- Copying up some text to your server to put on your webpage
- Uploading some photos and logos for your webpage
There are a wide range of ways a Linux server can share files, including:
- SMB: Microsoft’s file sharing, useful on a local network of Windows machines
- AFP: Apple’s file sharing, useful on a local network of Apple machines
- WebDAV: Sharing over web (http) protocols
- FTP: Traditional Internet sharing protocol
- scp: Simple support for copying files
- rsync: Fast, very efficient file copying
- SFTP: file access and copying over the SSH protocol (Despite the name, the SFTP protocol at a technical level is completely unrelated to traditional FTP)
Each of these have their place, but for copying files back and forth from your local desktop to your server, SFTP has a number of key advantages:
- No extra setup is required on your server
- Top quality security
- Allows browsing through the directory structure
- You can create and delete folders
If you’re successfully logging in via ssh from your home, work or a cybercafe then you’ll also be able to use SFTP from this same location because the same underlying protocol is being used.
By contrast, setting up your server for any of the other protocols will require extra work. Not only that, enabling extra protocols also increases the “attack surface” - and there’s always a chance that you’ll mis-configure something in a way that allows an attacker in. It’s also very likely that restrictive firewall policies at a workplace will interfere with or block these protocols. Finally, while old-style FTP is still very commonly used, it sends login credentials “in clear”, so that your flatmates, cafe buddies or employer may be able to grab them off the network by “packet sniffing”. Not a big issue with your “classroom” server - but it’s an unacceptable risk if you’re remotely administering production servers.
SFTP client software
What’s required to use SFTP is some client software. A command-line client (unsurprisingly called sftp) comes standard on every Apple OSX or Linux system. If you’re using a Linux desktop, you also have a built-in GUI client via your file manager. This will allow you to easily attach to remote servers via SFTP. (For the Nautilus file manager for example, press ctrl + L to bring up the ‘location window” and type: sftp://username@myserver-address).
Although Windows and Apple macOS have no built-in GUI client there are a wide range of third-party options available, both free and commercial. If you don’t already have such a client installed, then choose one such as:
- WinSCP or FileZilla - for Windows users
- CyberDuck or FileZilla - for macOS users
Download locations are under the RESOURCES section.
Configuring and using your choice of these should be straightforward. The only real potential for confusion is that these clients generally support a wide range of protocols such as scp and FTP that we’re not going to use. When you’re asked for SERVER, give your server’s IP address, PORT will be 22, and PROTOCOL will be SFTP or SSH.
- Configure your chosen SFTP client to login to your server as your username
- Copy some files from your server down to your local desktop (try files from your “home” folder, and from
- Create an “
images” folder under your “home” folder on the server, and upload some images to it from your desktop machine
- Go up to the root directory. You should see
/binand other folders. Try to create an “
images” folder here too - this should fail because you are logging in as an ordinary use, so you won’t have permission to create new files or folders. In your own “home” directory you of course have full permission.
Once the files are uploaded you can login via ssh and use
sudo to give yourself the necessary power to move files about.
Some rights reserved. Check the license terms here