DEV Community

Cover image for How To Transfer Files from One Linux Server To Another Using rsync?
Bobby Iliev
Bobby Iliev

Posted on • Originally published at devdojo.com

How To Transfer Files from One Linux Server To Another Using rsync?

Introduction

The rsync command is probably one of the most used commands out there. It is used to securely copy files from one server to another over SSH.

Compared to the scp command, which does a similar thing, rsync makes the transfer a lot faster, and in case of an interruption, you could restore/resume the transfer process.

In this tutorial, I will show you how to use the rsync command and copy files from one server to another, and also share a few useful tips!

Prerequisites

Before you get started, you would need to have 2 Linux servers. I will be using DigitalOcean for the demo and deploy 2 Ubuntu servers.

You can use my referral link to get a free $100 credit that you could use to deploy your virtual machines and test the guide yourself on a few DigitalOcean servers:

DigitalOcean $100 Free Credit

Transfer Files from local server to remote

This is one of the most common causes. Essentially this is how you would copy the files from the server that you are currently on (the source server) to remote/destination server.

What you need to do is SSH to the server that is holding your files, cd to the directory that you would like to transfer over:

cd /var/www/html
Enter fullscreen mode Exit fullscreen mode

And then run:

rsync -avz user@your-remote-server.com:/home/user/dir/
Enter fullscreen mode Exit fullscreen mode

The above command would copy all of the files and directories from the current folder on your server to your remote server.

Rundown of the command:

  • -a: is used to specify that you want recursion and want to preserve the file permissions and etc.
  • -v: is verbose mode, it increases the amount of information you are given during the transfer.
  • -z: this option, rsync compresses the file data as it is sent to the destination machine, which reduces the amount of data being transmitted -- something that is useful over a slow connection.

I recommend having a look at the following website which explains the commands and the arguments very nicely:

https://explainshell.com/explain?cmd=rsync+-avz

In case that the SSH service on the remote server is not running on the standard 22 port, you could use rsync with a special SSH port:

rsync -avz -e 'ssh -p 1234' user@your-remote-server.com:/home/user/dir/
Enter fullscreen mode Exit fullscreen mode

Transfer Files remote server to local

In some cases you might want to transfer files from your remote server to your local server, in this case, you would need to use the following syntax:

rsync -avz your-user@your-remote-server.com:/home/user/dir/ /home/user/local-dir/
Enter fullscreen mode Exit fullscreen mode

Again, in case that you have a non-standard SSH port, you can use the following command:

rsync -avz -e 'ssh -p 2510' your-user@your-remote-server.com:/home/user/dir/ /home/user/local-dir/
Enter fullscreen mode Exit fullscreen mode

Transfer only missing files

If you would like to transfer only the missing files you could use the --ignore-existing flag.

This is very useful for final sync in order to ensure that there are no missing files after a website or a server migration.

Basically, the commands would be the same apart from the appended --ignore-existing flag:

 rsync -avz --ignore-existing  user@your-remote-server.com:/home/user/dir/
Enter fullscreen mode Exit fullscreen mode

Conclusion

Using rsync is a great way to quickly transfer some files from one machine over to another in a secure way over SSH.

For more cool Linux networking tools, I would recommend checking out this tutorial here:

Top 15 Linux Networking tools that you should know!

Hope that this helps!

Top comments (2)

Collapse
 
alexgeorgiev17 profile image
Alex Georgiev

Great post, Bobby!

I also prefer rsync over the scp because it's more robust and faster. I will also recommend everyone to run their rsync transfers in screen just in case something goes wrong with their connection and the ssh session times out.

Collapse
 
bobbyiliev profile image
Bobby Iliev

Thank you Alex! Appreciate that 🙌