Copy Website Files between Windows/Linux Computers using the CLI

Here’s how to copy/backup/upload files between Linux & Windows hosts using PuTTY’s Secure FTP terminal. Faster, easier and way safer than FTP.
If you’re using Linux locally as well as to power your web host, skip to Maintain Unmanaged VPS – Part 10: Copy Site Files between Linux/Linux Computers with the CLI ‘cos the method’s different.
If you’re after database backup, that’s different too, so check this out.
But for Windows/Linux file transfers, you’re in the right place, and whether local to remote hosts or vice versa, PSFTP (PuTTY Secure FTP) is a handsome program for transfers .. and the OpenSSH encryption protocol behind it means sensitive data is mixed right up.
Setup Unmanaged VPS: The Ubuntu-Nginx Guide
Take your virtual private server from zero to hero
.. from blank box to cute-as server ..
with this easy-to-follow copy/paste guide.
22+ parts with video, here’s the index.
Logging into PSFTP
To open the programme:-
Up pops a terminal and you see this:-
If you followed VPS Bible – Part 5: Encrypt Data with OpenSSH & Auto-Login with PuTTY, you can use the saved session name we created in that tutorial. That’s handy. Just make sure you’ve got Pageant running. Looking back, in my case, that was guvnr, so I’ll stick with that for this. After the command prompt psftp>, I type open guvnr:-
.. and it shouts back:-
Hold On. I didn’t do that key authentication thing.
No worries. Using either a hostname or an IP address, do this instead:-
.. or, for the IP ..
It is also kind enough to remind me of my remote working directory:-
Setting PSFTP Working Directories
I can upload or download from there, but for the hell of it I’ll cd like this:-
.. and again I get a confirmation of where the deuce I am:-
Remotely, so far so good. Now to cd to the local working directory, using the syntax lcd:-
.. and, as you may have guessed, it confirms my Windows location.
How terribly polite.
Right. Quick breather. And a recap. All we’ve done is log in, cd‘d to a remote/Linux working directory, and lcd‘d to a local/Windows working directory. Now I’m going to push and shove some stuff between these tunnelled locations.
How to Upload & Download FILES with PSFTP
To upload a file:-
.. up pops confirmation:-
To download a file:-
.. confirmed:-
And to be clear, the put file went to our remote working directory, and the get file came to our local working directory. Easy, init.
One little tip. To change a filename, say, from abc.txt remotely to xyz.txt locally, you’d use:-
.. and the same applies for put operations, and copying folders.
Let’s mix it up. What do we want to do? Back up a website, probably. We’ll do that, then.
How to Upload & Download FOLDERS with PSFTP
To upload a folder and its content, cd into the local parent directory and, using the recursive command (-r), state the folder name:-
.. it’ll confirm the transfer.
To download a folder and its contents, cd into the remote parent directory and ditto above, but using the get operator:-
.. confirmed.
Really, they should make these things harder. I’m off. I’ll leave you with this ..
Useful PSFTP Commands
| Command | Purpose |
|---|---|
| ! | run a local command |
| bye | finish your SFTP session |
| cd | change remote working directory |
| chmod | change file permissions and modes |
| close | finish SFTP session but do not quit PSFTP |
| del | delete files on the remote server |
| dir | list remote files |
| exit | finish your SFTP session |
| get | download remote file to local machine |
| help | give help |
| lcd | change local working directory |
| lpwd | print local working directory |
| ls | list remote files |
| mget | download multiple files at once |
| mkdir | create directories on remote server |
| mput | upload multiple files at once |
| mv | move or rename file(s) on the remote server |
| open | connect to a host |
| put | upload a file from local machine to remote server |
| pwd | print your remote working directory |
| quit | finish your SFTP session |
| reget | continue downloading files |
| ren | move or rename file(s) on the remote server |
| reput | continue uploading files |
| rm | delete files on the remote server |
| rmdir | remove directories on remote server |
Want more info? Don’t say I don’t give you the earth ..
.. http://the.earth.li/~sgtatham/putty/0.52/htmldoc/Chapter6.html
Setup Unmanaged VPS: The Ubuntu-Nginx Guide
Take your virtual private server from zero to hero
with this easy-to-follow copy/paste guide.
“My local PC runs Windows” Show me for Linux
“My local PC runs Linux” Show me for Windows
22+ parts with video, here’s the index ..
-
Setup Unmanaged VPS: The Ubuntu-Nginx Guide
Introducing vpsBible’s how-to guide for setting up a super-charged unmanaged VPS featuring Ubuntu and Nginx.
-
VPS (Virtual Private Server) vs Shared vs Dedicated
Before getting stuck in, let’s compare the web host types in detail and weigh up the differences between managed & unmanaged VPS.
-
Set Up a VPS Linux Distribution
Opening a VPS hosting account, we’ll choose, configure & launch a Linux server ‘distribution’.
-
Set Up Command Line Interface (CLI) using PuTTY
Now we’ve got a server to play with, we’ll connect to it, using the ’ssh’ protocol for a super-secure link.
-
Create a Linux User & Set Permissions
Initially you’ve logged into your remote Linux machine as ‘root’. We’ll add you as a user now, with root or SuperUser permissions.
-
Encrypt Data with OpenSSH & Auto-Login with PuTTY
Now we can use ‘authentication keys’ to shore up our connection while simplifying login to an automated, password-free yet secure process.
-
Harden the Secure Shell (SSH) & Create a Firewall
The final security step: galvanizing the OpenSSH protocol and setting up an ‘iptables’ firewall. Now the server is rock ruddy solid.
-
Edit bashrc for User-Friendly Linux, plus System Updates
We use the terminal a whole lot so let’s cut ourselves a break and create some command shortcuts, then update the server.
-
PHP5, MySQL and Xcache (for Platforms like WordPress)
We have our foundation, let’s lay some bricks: PHP for server-side web applications, Xcache to speed things up & MySQL for databases.
-
Add a Domain Zone to Your VPS
To make your server aware of yourDomain.com you’ll need a few ‘DNS’ records. Damn this is simple I’m practically asleep!
-
Prepare Linux Server for Email with Postfix
In order to send and receive email from our web applications we’ll install some software and tweak the ‘RDNS’ record.
-
Nginx (better than Apache) Web Server
OK I woke up .. let’s install this supersonic web server, tweaking its file structure & adding default configuration files.
-
Setup FileZilla for Secure FTP (SFTP)
There’s FTP, and then there’s ‘Secure FTP’. We’ll set up FileZilla using SFTP – and those authentication keys – for secure file transfers.
-
Serve Multiple Sites & Blogs with Virtual Hosts
We want a website folder structure, some permissions, some site-specific configuration files and, hey, we’ll hook up ‘FastCGI’.
-
Adding Sub-Domains with Nginx
Need a sub-domain? Here’s how to add www.sub.domain.com with an ‘A record’ and a configuration file. (I’ll allow you to skip this bit.)
-
Integrate A CMS Like WordPress, WP MU, Drupal etc
For those of you wanting to use a specific content framework, such as a CMS, blogging or forum software, pop in here and we’ll sort that out.
-
Configure phpMyAdmin for Nginx to Maintain MySQL
Rather than have to crunch databases via the command line, we can make life easier by adding this splendid tool to manage them.
-
Google Apps for Domain-Specific Email
GA’s free Standard Edition for catchall webmail – POP-ping or IMAP-ped to your desktop client – saves precious server resources for your webs.
-
Moving Day! How to Move Your Blog or Site
Nearly there. Here’s the web site or blog migration guide, relocating to your VPS with minimal or no downtime.
-
Appendix 1a: Nginx Control Panel
You’re migrating shared-to-VPS and want a GUI like cPanel? No you don’t, not after you read this! What’s more, you don’t need one either.
-
Appendix 1b: Nginx Control Panel Workarounds
For every control panel module there’s an equivalent terminal command. They’re all linked from here so, hey, no excuses!
-
Appendix 2: Add Web Sites Nginx Cheatsheet
Once you’ve set up your first site, adding more gets easier. Especially when you can refer to this. (Let’s face it, I’m just too good to you.)
Got a Question? Want to Comment?
This site has no comments system. We've got a better system!
Please use the link at the top of the post and goto this topic's forum thread:-
- to help build community
- for a superior knowledge base
- to keep info in one place, not diluted between forum & comments.
For those posts ported from Guvnr.com (pre-Feb/2010), archive comments remain.
Handy info from these comments is in the process of being ported to the forum and attributed to the original author.
If you think this idea sucks, let me know.
Thank you.





















Callie November 20th, 2009 at 2:32 am
Thanks for all the helpful info!! But I can’t get your command for PSFTP to upload a folder and its contents to work correctly. When you said “cd into the local parent directory” did you mean assign the local directory to the location of my folder? For instance, I want to upload C:\foldername. So I tried setting cd to the remote place I want to upload it. Then I used the following:
lcd C:\
put -r foldername
…but it’s not working. Could you clarify whether I’m using cd/lcd correctly?
Thanks! Callie