How to copy a file from a remote server to a local machine?

In my terminal shell, I ssh’ed into a remote server, and I cd to the directory I want.

Now in this directory, there is a file called table that I want to copy to my local machine /home/me/Desktop.

How can I do this?

I tried scp table /home/me/Desktop but it gave an error about no such file or directory.

Does anyone know how to do this?

Asked By: omega


The syntax for scp is:

If you are on the computer from which you want to send file to a remote computer:

scp /file/to/send username@remote:/where/to/put

Here the remote can be a FQDN or an IP address.

On the other hand if you are on the computer wanting to receive file from a remote computer:

scp username@remote:/file/to/send /where/to/put

scp can also send files between two remote hosts:

scp username@remote_1:/file/to/send username@remote_2:/where/to/put

So the basic syntax is:

scp username@source:/location/to/file username@destination:/where/to/put

You can read man scp to get more ideas on this.

Answered By: heemayl
scp root@ Downloads/
Answered By: user135545
scp username@ipaddress:pathtofile localsystempath

scp sadananad@ipaddress:/home/demo/public_html/myproject.tar.gz .

If your using with port:

scp -Pportnumber username@ipaddress:pathtofile localsystempath 

scp -P2233 sadananad@ipaddress:/home/demo/public_html/myproject.tar.gz .
Answered By: Sadanand Kenganal

You can use rsync as an alternative. It is mainly for syncing files.. but you can use it for this purpose as well.

rsync -avzh --stats --progress remoteuser@remoteip:/path/  localpath 

to add ssh options:

rsync -e "ssh -P $port_value" remoteuser@remoteip:/path/  localpath

--progress and --stats are useful for real-time display of transfer.

I think it a better option then SCP, since it skips already transferred files, which is noticeable when you’re copy-ing lot of files.

Answered By: fugitive

If you completely trust everyone in the network and you can connect a port of the destination machine directly, you can use netcat: nc.

Let’s say the IP address of the destination machine is

On the destination run:

nc -l -p 7777 | tar zxvf - -C dest_dir

You can choose a different port, and also bind to another IP of your interfaces, just catches on all interfaces.

On the source run:

tar zcvf - filename | nc 7777

IMHO, this is the fastest possible way to send a file from one computer to another using digital networks.

The arguments and command line options might slightly change between different versions of nc and tar, but it will definitely work with recent Linux distributions.

Answered By: onur güngör

On Linux, to copy a folder and its content from the user (root in this example) directory, to a folder in the local user directory, I run this command on the local machine:

scp -r root@ ~/folderinlocaluserdir

Note the ~/ which I often seem to forget…

Answered By: Little Brain
Categories: Answers Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.