> For the complete documentation index, see [llms.txt](https://code.janardhanpulivarthi.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://code.janardhanpulivarthi.com/ubuntu/rsync.md).

# Rsync

About RSync

Features

1. Support for copying links, devices, owners, groups, and permissions
2. exclude and exclude-from options similar to GNU tar
3. a CVS exclude mode for ignoring the same files that CVS would ignore
4. can use any transparent remote shell, including ssh or rsh
5. does not require super-user privileges
6. Pipelining of file transfers to minimize latency costs
7. Support for anonymous or authenticated rsync daemons (ideal for mirroring)

Usage

```c
rsync -t *.c foo:src/
```

Transfer all the files matching the pattern \*.c from the current directory to the directory src on the machine `foo`. If any of the files already exist on the remote system then the rsync remote-update protocol is used to update the file by sending only the differences.

```c
rsync -avz foo:src/bar /data/tmp
```

This would recursively transfer all files from the directory `src/bar` on the machine `foo` into the `/data/tmp/bar` directory on the local machine. These files are transferred in `lqarchiverq` mode, which ensures that symbolic links, devices, attributes, permissions, ownerships, etc. are preserved in the transfer.

{% hint style="info" %}
Compression will be used to reduce the size of data portions of the transfer.
{% endhint %}

```c
rsync -avz foo:src/bar/ /data/tmp
```

A trailing slash on the source changes this behavior to avoid creating an additional directory level at the destination. You can think of a trailing `/` on a source as meaning `lqcopy` the contents of this `directoryrq` as opposed to `lqcopy` the directory by `namerq`, but in both cases the attributes of the containing directory are transferred to the containing directory on the destination.

Reference: <https://linux.die.net/man/1/rsync>
