Related to some recent discussions at meetups, here are a few command-line tools that make working with servers easier:
ssh
– connect to a remote server
$ ssh -p 22 <username>@<ip_address>
scp
– copy files between computers
scp
is is a good alternative to FTP clients.
Copy files from a remote server to current location on the local computer:
$ scp -r -P 22 <username>@<ip_address>:/home/<username>/path/to/dir/* .
Copy files from the current directory to a remote server:
$ scp -r -P 22 . <username>@<ip_address>:/home/<username>/path/to/dir/
rsync
– synchronize directories between computers
Synchronize a remote directory to a local directory over SSH:
$ rsync -avzhe ssh <username>@<ip_address>:/home/<username>/path/to/dir/* .
If the download gets interrupted, it won’t need to start over.
If downloading a large number of files, a small shell script like this will create a notification (on Linux) that displays the progress every minute:
while true; do
notify-send 'Downloaded files' "$(ls -alR | wc -l) of <total_number>"
sleep 60
done
(Run ls -alR | wc -l
on the remote server to find the number to insert in <total_number>
.)