E.g., suppose a user, ann, on a Linux system wants to synchronize the
contents of her directory
mysite to another backup system at
example.org. She could use a command like the one in the example below:
[ann@localhost ~$ rsync -avz public_html/mysite --exclude 'logs' --exclude mysite.tar.gz firstname.lastname@example.org:public_html email@example.com's password: sending incremental file list mysite/ mysite/House.zip mysite/character.html mysite/character_template.html mysite/buildings.png mysite/index.html mysite/map0.mul <text snipped> mysite/temp/readme.txt mysite/temp/warning.php mysite/temp/warning_css.css sent 3515156970 bytes received 145788 bytes 1147479.27 bytes/sec total size is 3513501409 speedup is 1.00 [ann@localhost ~]$
In the above example, Ann wants to transfer all files and subdirectories
public_html/mysite directory, which is beneath her
home directory, but she wants to exclue the
logs directory and the
files within it and also wants to exclude a file
which she created to hold a local backup of her site on the source system.
If there is no
logs directory already on the remote system,
none will exist after the transfer, either. However, if there are files
or directories that exist on the remote system within the destination
directory, but not on the source system, those will not be deleted from the
destination system; they will remain.
-avz parameters she uses have the following meanings:
-a, --archive archive mode -v, --verbose increase verbosity -z, --compress compress file data during the transfer
After those parameters, she specifies the directory, in this case
public_html/mysite directory beneath the one from which she
ran the command, that she wishes to synch with the remote system.
The file transfer will take place via an SSH connection since she is
firstname.lastname@example.org:public_html to connect to the remote system
example.org where her userid is also ann. A remote-shell
transport, such as SSH, is used whenever the source or destination path
contains a single colon (:) separator after a host specification. If she
were using a direct connection to an rsync
daemon, instead, she would use a double colon (::).
When the source or destination path contains a double colon separator after a
host specification or when an rsync://
URL is specified that indicates that the connection is to an rsync daemon.
:public_html she is also indicating that the files
and directories she is transferring should be placed in a directory named
public_html beneath her home directory on the remote system.
The location following the colon is relative to her home directory unless
it is preceeded by a forward slash (/). E.g.,
would indicate that the files should be placed in the
directory; of course, her account on the remote system would need write access
to that directory in order to place files there.
In the case above where Ann is using the SSH protocol for the transfer, if
I issued the command
ps -A x | grep sshd | grep -v grep, when the
transfer was proceeding, I would see something similar to the following:
# ps -A x | grep sshd | grep -v grep 3346 ? Ss 0:00 /usr/sbin/sshd -D 3465 ? Ss 0:00 sshd: root@pts/0 3588 ? Ss 0:00 sshd: ann [priv] 3590 ? S 0:10 sshd: ann@notty
In the above case, only root was logged in via an interactive session. The user ann was performing an rsync file and directory sync from the source system to the system on which I ran the above command, so the command is showing the connection via SSH for the rsync directory transfer.
At the end of the rsync process, the utility reports the bytes sent and the transfer speed. I.e., in this case:
sent 3515156970 bytes received 145788 bytes 1147479.27 bytes/sec
So the transfer rate was about 8.75 Mbs (1147479.27 bytes * 8 bits/byte / 1024 bits/kilobits / 1024 kilobits/megabits).