Wednesday, May 1, 2019

How to copy files with rsync over SSH?



Install rsync


If the command is not included by default inside the server configuration we can easily add it
using the default package manager:


Cent Or Redhat:

sudo yum install rsync


Debian/Ubuntu:

sudo apt-get install rsync


Copy a file from local server to remote one:

rsync -v -e ssh /home/localuser/testfile.txt remoteuser@X.X.X.X:/home/remoteuser/transfer


In the above example we will copy a file called testfile.txt from the current server to the remote
one and will place it inside the folder /home/remoteuser/transfer.


The output should be similar to the following one:

sent X bytes  received X bytes  X.X bytes/sec
total size is X  speedup is X.X

If the remote server is configured to work with non-default SSH port (other than 22) we can specify that inside the -e option:

rsync -v -e "ssh -p2222" /home/localuser/testfile.txt remoteuser@X.X.X.X:~/transfer
Again the testfile.txt will be copied inside the /home/remoteuser/transfer folder situated on the remote server.


Copy a file from remote server into a local folder:

rsync -v -e ssh remoteuser@X.X.X.X:/home/remoteuser/transfer/testfile.txt /home/localuser/


In the above example we will copy a file called testfile.txt from the remote server inside a local folder called /home/localuser/.


Synchronize local folder on remote server:


rsync -r -a -v -e ssh --delete /home/localuser/testfolder    remoteuser@X.X.X.X:/home/remoteuser/testfolder


Synchronize folder from the remote server on the local server:

rsync -r -a -v -e ssh --delete remoteuser@X.X.X.X:/home/remoteuser/testfolder /home/localuser/testfolder

Here is a list of some of the most common rsync options:

--delete - delete files that don't exist on sender (system)
-v - verbose (-vv will provide more detailed information)
-e "ssh options" - specify the ssh as remote shell
-a - archive mode - it preserves permissions (owners, groups), times, symbolic links, and devices
-r - recurse into directories
-z - compress file data during transfer
--exclude 'foldername' – excludes the corresponding folder from transfer
-P – show progress during transfer

No comments:

Post a Comment