How to Copy Files With Rsync Over SSH

Introduction

 

Rsync is a software utility which is very handy for synchronizing files and directories over different locations with minimized data transfer. It is used to  copy files recursively with compression and over encrypted channels.

We are going to copy files using rsync over SSH in  this tutorial.

 

Generate Public SSH Keys

 

In your server, you can generate public SSH keys without passwords by simply executing the command:

ssh-keygen -f ~/.ssh/id_rsa -q -P ""

you can execute the command to print the key generated:
cat ~/.ssh/id_rsa.pub

The public SSH key is something like this which can be placed on hosts to give you access.

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDrGM+ojLds2uS6aPCdwocSxXAyW6wRABu+NEhLoAEYUGTAJ+XUBUDC1IPdS6/t+lZlJw9LXJazv4InaZPgKgzEUlwuBFStB5/xgn35U/4SgXMPGOd0ipSwzTyeV72InMqHAIbfhG8CjNScPuqg/O8WOVNF5gaVdXcXV9L9uH9bFObjAMw6L+xg3bRdQ4+/la6FFbtoVo76lUGnj9+3RwF4oLHuvt2mM5UKCvhEkP7xHUxYzniqtSG2Xd8bgV++XqyYZou+teaH9KxqG8W0I1be5pTTzefFpJzsLYtASlk9xiSCd+ulVWNNLIlo+2B8/9DrDWA2jCB7gviwy7wJaX61 [email protected]

Ensure to  copy and save  this key somewhere as you will be needing it for destination server.

Now, Login to your destination server and save this key  into your ~/.ssh/authorized_keys file.

If ssh folder is not present, you can create it manually using:

mkdir ~/.ssh

You can change the permission of the folder:
chmod 0700 ~/.ssh
create a file under this directory with your favourite editor
vi ~/.ssh/authorized_keys
and again to change the permission of created file
chmod 0644 ~/.ssh/authorized_keys

 

Using Rsync to Copy Files

 

Next, we will show you how to copy files using rsync. For example, let’s assume that we are copying a sample file from our server   to destination server  (64.137.229.237) and the file to be copied is /root/samplefile.txt

the command to execute is given below:

rsync -avz -e "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --progress /root/samplefile.txt 64.137.229.237:/root/

if your are using it form the first time it will give you 
Warning: Permanently added '64.137.229.237' (ECDSA) to the list of known hosts
and ask you for the destination server password
Password for [email protected]:
just hit the password

NOTE: In case if you are using a normal user named prinsa and not root user, then you will have to append it in front of destination server. Also, make sure that you have already place the public key in that user’s ~/.ssh/authorized_keys file.

rsync -avz -e "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --progress /root/samplefile.txt [email protected]:/

Now you can verify the copied file from your destination server:

ls -la /root/samplefile.txt

 

KB Admin has written 46 articles