openrsync
—
synchronise local and remote files
openrsync |
[-aDglnoprtvx ] [-e
program]
[--address =bind_address]
[--del ] [--numeric-ids ]
[--port =service]
[--rsync-path =program]
[--version ] source ...
directory |
The openrsync
utility synchronises files in the
destination directory with one or more
source files. Either the source or
the destination directory may be remote, but not both.
The arguments are as follows:
-a
,
--archive
- Shorthand for
-Dgloprt
.
--address
=bind_address
- Use bind_address on the local machine as the source
address of the connection. Only useful when connecting to an rsync daemon
and on systems with more than one address.
-D
- Also transfer device and special files. Shorthand for
--devices
--specials
.
--del
,
--delete
- Delete files in directory not found in
source directories. Only applicable with
-r
.
--devices
- Also transfer device files.
-e
program,
--rsh
=program
- Specify alternative communication program, defaults to
ssh(1).
-g
,
--group
- Set the group name to match the source. For example, group
“kristaps” with ID 1000 on a remote server is matched to
group “kristaps” on the local machine with ID 2000. If
--numeric-ids
is also given or if the remote group
name is unknown on the local machine, set the numeric group ID to match
the source instead.
-l
,
--links
- Also transfer symbolic links. The link is transferred as a standalone
file: if the destination does not exist, it will be broken.
-n
,
--dry-run
- Do not actually modify the destination. Mainly useful in combination with
-v
.
--numeric-ids
- Ignore user and group names, use numeric user and group IDs only. Has no
effect unless
-g
or -o
is
also given.
-o
,
--owner
- Set the user name to match the source, with similar matching logic as for
-g
. If --numeric-ids
is
also given or if the remote user name is unknown on the local machine, set
the numeric user ID to match the source instead. Only works if run as
root.
-p
,
--perms
- Set destination file or directory permissions to match the source when it
is updated.
--port
=service
- Specify an alternative TCP port number. The service
can be given as a decimal integer or as a name to be looked up in the
services(5)
database. The default is “rsync”.
-r
,
--recursive
- If source designates a directory, synchronise the
directory and the entire subtree connected at that point. If
source ends with a slash, only the subtree is
synchronised, not the source directory itself. If
source is a file, this has no effect.
--rsync-path
=program
- Run program on the remote host instead of the
default rsync.
--specials
- Also transfer fifo and unix domain socket files.
-t
,
--times
- Set destination file and directory modification time to match the source
when it is updated or created.
-v
,
--verbose
- Increase verbosity. Specify once for files being transferred, twice for
specific status, thrice for per-file transfer information, and four times
for per-file breakdowns.
-x
- Do not cross filesystem boundaries. If this option is repeated, all mount
point directories from the copy are omitted. Otherwise, it includes an
empty directory at each mount point it encounters.
--version
- Print version and exit.
By default openrsync
connects to remote
hosts using
ssh(1) and
passes the arguments to
rsync(1).
The destination directory must be a directory and is
created if not found.
A remote source or
directory has the syntax
host:path for connecting via
ssh(1), or
rsync
://host/path
or host::path for connecting to
a remote daemon. Subsequent to the first remote
source, the host may be dropped to become just
:path or ::path.
For connecting to a remote daemon with
rsync
://host or
host::path, the first path
component is interpreted as a “module”:
host::module/path.
This only applies to the first source invocation;
subsequent to that, the module should not be specified.
By default, new destination files and directories are given the
current time and the source file permissions. Updated files retain their
existing permissions. It is an error if updated files have their file types
change (e.g., updating a directory with a file).
At this time, source may only consist of
regular files, directories (only with -r
), or
symbolic links (only with -l
). The destination
directory must be a directory and is created if not
found.
The openrsync
utility exits 0 on success, 1 if an error
occurs, or 2 if the remote protocol version is older than the local protocol
version.
A common invocation of openrsync
is for archiving from a
remote host to the local computer:
% openrsync -av --delete remote:rpath
/local/path
This will update the contents of
/local/path/rpath with those on the remote server.
Switching remote and local wil update the remote contents instead:
% openrsync -av --delete /local/path
remote:rpath
All examples use -t
so that destination
files inherit the source time. If not changed, subsequent invocations of
openrsync
will then consider the file up to date and
not transfer block hashes.
To update the out-of-date remote files
host:dest/bar and
host:dest/baz with the local
../src/bar and
../src/baz:
% openrsync -t ../src/bar ../src/baz
host:dest
To update the out-of-date local files bar
and baz with the remote files
host:src/bar and
host:src/baz:
% openrsync -t host:src/bar :src/baz
.
To update the out-of-date local files
../dest/bar and ../dest/baz
with bar and baz:
% openrsync -t bar baz
../dest
To update the out-of-date remote files in
host:dest on a remote host running
openrsync
with the local host running
rsync(1):
% rsync --rsync-path openrsync -t
../dest/* host:dest
openrsync
is compatible with rsync protocol version 27
as supported by the samba.org implementation of rsync.
The openrsync
utility has been available since
OpenBSD 6.5.