Scp from server to server linux

Linux copy directory and contents from remote to local & vice versa

Table of Contents

In this tutorial I will share commands and examples to cover below scenarios:

  • Unix and Linux copy directory and contents using rsync remote to local server
  • Unix and Linux copy directory and contents using rsync to remote server
  • Unix and Linux copy directory and files using scp from local to remote server
  • Unix and Linux copy directory and files using scp from remote to local server
  • scp recursive to copy directory and contents in Unix and Linux
  • Unix and Linux copy file from ssh to local server

There are various commands available in Linux to copy directory and contents from one server to another in Linux. I have also written another article on similar topic with 5 commands to copy files from one server to another in Linux

In this article I will share the commands and arguments in Linux copy directory and files using scp from local to remote server, scp from remote to local server, rsync remote to local and rsync to remote server in Linux.

Copy directory and files from local to remote server

  • You can use either scp or rsync to copy folder and files from local to ssh or copy folder and files from ssh to local within in the same or different directory.
  • By default copy files and folders happen sequentially. If you wish to copy directory and contents in parallel then you must use pscp or pssh tool.
  • You can also configure password less copy from local to remote or from remote to local, so you don’t have to provide password every time you try to copy files and folder between servers. This is very useful for automation.

1. Linux copy directory and files with scp recursive

  • scp is a secure remote copy tool which is used to copy directory and contents between multiple Linux server.
  • To copy only files from local to remote server, you do not need any extra argument with scp.
  • But to copy directory and contents we need scp recursive using » -r » argument
  • If you use scp without ‘ -r ‘ then the tool can only copy files (and not directories) from local to remote server or vice versa.

1.1: Keep «same» directory name with scp from local to remote server

In this scp syntax, we will keep the same directory name after copying directory and its contents to remote server

scp syntax:

Let me copy all files in directory /tmp/deepak from local to remote server under /home/temp/ on the remote server.

Читайте также:  Raspberry pi устанавливаем windows

Below are the /tmp/deepak directory content on my localhost , so I will copy all files in directory /tmp/deepak with scp recursive to remote server.

So next using scp recursive I will copy directory and contents from local to remote Linux server

In this example, the directory name will be same on local and remote server as we are not giving » / » after giving the directory name on localhost with scp (as highlighted).

The ssh copy file from local to remote was successful. Next validate the transfer on the remote server

1.2: Change directory name with scp from local to remote server

If you wish to copy directory /tmp/deepak to remote server using a different directory name then use the below syntax

scp syntax:

Here if you observe the scp syntax, I have provided » /* » at the end of directory name in localhost. So here we copy all files in directory /tmp/deepak and store it under /home/temp/rahul/ on remote server

So you see this forward slash (/) is very important for scp from local to remote server.

Execute the command in below format

All files under directory /tmp/deepak are successfully copied to remote server. Validate the content on server2 node.

2. Copy folder and files using rsync from local to remote server

  • rsync is another better alternative to copy directory and contents from local to remote server in Linux and Unix.
  • It is famous for its delta-transfer algorithm, which reduces the amount of data sent over the network by sending only the differences between the source files and the existing files in the destination.
  • Rsync is widely used for backups and mirroring and as an improved copy command for everyday use
  • Rsync finds files that need to be transferred using a «quick check» algorithm (by default) that looks for files that have changed in size or in last-modified time.

2.1: Keep «same» directory name with rsync from local to remote server

In this rsync syntax, we will change the directory name after copying directory and its contents to remote server. The logic remains the same for both scp and rsync

rsync syntax:

In this example we will use rsync to copy directory and contents from ( /tmp/deepak ) to remote host under /home/temp

Follow rsync man page for more details. Here,

After rsync copy, validate the transfer on the remote server. So the directory name is same on local and remote server after transfer.

2.2: Change directory name with rsync from local to remote server

Next we will use rsync to copy directory and contents of /tmp/deepak to a different folder on the remote server inside /home/temp/rahul .

So we will change the directory name from deepak on localhost to rahul on remote server

rsync syntax:

Next execute the command in the below syntax

After the transfer, validate the content on the remote node

Copy directory and files from remote to local server

We can use the same tool scp recursive and rsync to copy directory and contents from remote to local server in Linux and Unix. Although the syntax to copy from ssh to local will vary for rsync and scp

1. Linux copy directory and files with scp recursive from remote to local server

We will again use scp recursive to perform scp from remote to local server in Linux and Unix

To use scp recursive we must use scp with -r argument.

1.1: Keep «same» directory name with scp from remote to local server

Check the scp syntax to copy files from remote to local server for more details

Syntax for scp:

To scp from remote to local server, below is the content on my remote host ( server2 ) under /home/temp/deepak which I wish to copy on my localhost ( server1 ) under /tmp/deepak

Below is the command to copy directory and contents using scp from remote to local server in Linux and Unix

Читайте также:  Windows with no silly

NOTE that I have not provided a forward slash (/) after the source directory to keep the same directory name after copy from remote to local server.

Validate the content on localhost server1 under /tmp/ where we had copied the content. As you see we have directory deepak now on our localhost ( server1 )

1.2: Change directory name with scp from remote to local server

To copy directory and contents from remote to local server with different directory name then you must use forward slash carefully
We must also provide a local directory in the source path on ( server1 ) under which you want to copy files and folders from remote server ( server2 )

Syntax for scp:

We will use this syntax in our next scp example:

Next verify the content on localhost server1 under /tmp/rahul . So the content of directory deepak from server2 is successfully copied under rahul on localhost

2. Copy folder and files using rsync from remote to local server

We can also use rsync to copy directories and contents from remote to local server using the same arguments but different syntax

To copy files and folders from remote to local, you must execute rsync on localhost i.e. server1 for our environment

2.1: Keep «same» directory name with rsync from remote to local server

Notice the rsync syntax carefully, we have not used forward slash (/) in the source path, so the entire directory and contents will be copied

Similarly you can use below rsync command to copy directory from remote to local server

Syntax for rsync:

Using below command you can folder from remote to local server

Verify the content of /tmp/deepak on server1

2.2: Change directory name with rsync from remote to local server

Now to change the directory name or store the directory contents to a different folder from remote to local server ( server1 ) we must use forward slash in the source path from remote server ( server2 )

Check the rsync syntax, as you see I have defined a forward slash in the source path from ( server2 )

Syntax for rsync:

In this rsync example I will copy all directory files from /home/temp/deepak/ on ( server2 ) to /tmp/rahul on localhost ( server1 )

Validate the content on server1 under /tmp/rahul

So the transfer was successful, I hope I was able to explain the importance of forward slash while copying all files in directories for proper naming.

Lastly I hope the steps from the article to perform scp from local to remote server and scp from remote to local server with examples on Linux was helpful. So, let me know your suggestions and feedback using the comment section.

Didn’t find what you were looking for? Perform a quick search across GoLinuxCloud

If my articles on GoLinuxCloud has helped you, kindly consider buying me a coffee as a token of appreciation.

For any other feedbacks or questions you can either use the comments section or contact me form.

Thank You for your support!!

4 thoughts on “Linux copy directory and contents from remote to local & vice versa”

Hello,
I think there is a mistake in the content you provided. I noticed that there is wrong command in copying folder from remote to local system using rsync command. You can go through that and let me know if I’m correct.

Thanks for highlighting, the syntax reference was incorrect. I have corrected it.

Thanks for the tutorial. But I think “/” is forward slash, NOT backslash.

I always get confuse with this 🙂
Thank you for highlighting this. I have corrected the article.

Источник

How to Securely Transfer Files Between Servers with scp

If you run a live or home server, moving files between local machines or two remote machines is a basic requirement. There are many ways to achieve that. In this article, we talk about scp (secure copy command) that encrypts the transferred file and password so no one can snoop. With scp you don’t have to start an FTP session or log into the system.

The scp tool relies on SSH (Secure Shell) to transfer files, so all you need is the username and password for the source and target systems. Another advantage is that with SCP you can move files between two remote servers, from your local machine in addition to transferring data between local and remote machines. In that case you need usernames and passwords for both servers. Unlike Rsync, you don’t have to log into any of the servers to transfer data from one machine to another.

Читайте также:  Ноутбук не грузит с флешки windows

This tutorial is aimed at new Linux users, so I will keep things as simple as possible. Let’s get started.

Copy a single file from the local machine to a remote machine:

The scp command needs a source and destination to copy files from one location to another location. This is the pattern that we use:

In the following example I am copying a local file from my macOS system to my Linux server (Mac OS, being a UNIX operating system has native support for all UNIX/Linux tools).

Here, ‘swapnil’ is the user on the server and 10.0.0.75 is the server IP. It will ask you to provide the password for that user, and then copy the file securely.

I can do the same from my local Linux machine:

If you are running Windows 10, then you can use Ubuntu bash on Windows to copy files from the Windows system to Linux server:

Copy a local directory to a remote server:

If you want to copy the entire local directory to the server, then you can add the -r flag to the command:

Make sure that the source directory doesn’t have a forward slash at the end of the path, at the same time the destination path *must* have a forward slash.

Copy all files in a local directory to a remote directory

What if you only want to copy all the files inside a local directory to a remote directory? It’s simply, just add a forward slash and * at the end of source directory and give the path of destination directory. Don’t forget to add the -r flag to the command:

C opying files from remote server to local machine

If you want to make a copy of a single file, a directory or all files on the server to the local machine, just follow the same example above, just exchange the place of source and destination.

Copy a single file:

Copy a remote directory to a local machine:

Make sure that the source directory doesn’t have a forward slash at the end of the path, at the same time the destination path *must* have a forward slash.

Copy all files in a remote directory to a local directory:

Copy files from one directory of the same server to another directory securely from local machine

Usually I ssh into that machine and then use rsync command to perform the job, but with SCP, I can do it easily without having to log into the remote server.

Copy a single file:

Copy a directory from one location on remote server to different location on the same server:

Copy all files in a remote directory to a local directory

Copy files from one remote server to another remote server from a local machine

Currently I have to ssh into one server in order to use rsync command to copy files to another server. I can use SCP command to move files between two remote servers:

Usually I ssh into that machine and then use rsync command to perform the job, but with SCP, I can do it easily without having to log into the remote server.

Copy a single file:

Copy a directory from one location on a remote server to different location on the same server:

Copy all files in a remote directory to a local directory

Conclusion

As you can see, once you understand how things work, it will be quite easy to move your files around. That’s what Linux is all about, just invest your time in understanding some basics, then it’s a breeze!

Learn more about Linux through the free “Introduction to Linux” course from The Linux Foundation and edX.

Источник

Оцените статью