An open source utility that provides fast incremental file transfer. It also has useful features for backup and restore operations among many other use cases. https://rsync.samba.org
  • C 48.6%
  • Python 41.5%
  • HTML 4.3%
  • M4 1.3%
  • Shell 0.8%
  • Other 3.4%
Find a file
Zen Dodd 7ee931c7b9
daemon: distinguish inetd from local stdin sockets (#1075)
* daemon: require IP stream for inetd mode
* daemon: preserve bidirectional stdio mode
* daemon: honour explicit no-detach mode
* daemon: preserve inetd socket detection
* ci: fix daemon socket checks
2026-09-11 09:10:18 +10:00
.github Fix ENOENT when resolving kernel pseudo-paths in ona_open (#1054) 2026-09-03 08:11:16 +10:00
lib wildmatch: fold bracket-expression pattern chars under force_lower_case 2026-07-20 14:05:32 +10:00
m4 Silence autoconf warnings. 2022-10-16 10:28:58 -07:00
old_versions old_versions: commit static binaries of old rsync releases 2026-06-01 19:21:35 +10:00
packaging Preparing for release of 3.5.0 [buildall] 2026-08-13 10:05:47 +10:00
popt popt: remove obsolete findme.c & findme.h 2025-01-17 08:31:36 +11:00
rsync-web Update COPYING.html (openssl & xxhash exceptions) (#1040) 2026-08-15 16:28:18 +10:00
support Add IDN support (#986) 2026-08-20 18:51:23 +10:00
testsuite daemon: distinguish inetd from local stdin sockets (#1075) 2026-09-11 09:10:18 +10:00
zlib zlib: convert K&R function definitions to ANSI style 2026-04-16 13:49:30 +10:00
.gitattributes old_versions: commit static binaries of old rsync releases 2026-06-01 19:21:35 +10:00
.gitignore fleettest: add --keep-on-fail, and pass --timing to the targets 2026-08-02 16:05:24 +10:00
access.c Add IDN support (#986) 2026-08-20 18:51:23 +10:00
acls.c acls: implement Solaris facl(2)-based ACL helpers 2026-07-20 14:05:32 +10:00
authenticate.c auth: parse "auth users" with conf_strtok so a leading comma means commas only 2026-07-29 13:10:54 +10:00
backup.c backup: preserve backup-dir while creating it 2026-08-01 10:43:58 +10:00
batch.c batch.c: Allow FIFO pipes in batch file processing. Regression fix (#1060) 2026-09-03 17:03:54 +10:00
byteorder.h Disable UBSAN for alignment-sensitive functions when !CAREFUL_ALIGNMENT 2026-06-08 20:54:57 +10:00
case_N.h Two more spelling fixes and some year updates. 2020-04-16 09:31:02 -07:00
checksum.c daemon: harden authentication, access, socket and config-hook handling 2026-07-20 14:05:31 +10:00
chmod.c chmod: a+s must set both setuid and setgid 2026-07-20 14:05:32 +10:00
cleanup.c build: add gcov coverage and --disable-openat2 knobs for the test suite 2026-05-24 12:31:52 +10:00
clientname.c fix signed integer overflow in proxy protocol v2 header parsing 2026-04-16 13:59:52 +10:00
clientserver.c daemon: distinguish inetd from local stdin sockets (#1075) 2026-09-11 09:10:18 +10:00
cmd-or-msg Rename cmdormsg -> cmd-or-msg. 2021-09-26 18:55:46 -07:00
compat.c compat: assign metadata ndx after batch flags; pick own preferred name 2026-07-20 14:05:31 +10:00
config.guess Mention updated config files. 2023-05-04 08:45:42 -07:00
config.sub Mention updated config files. 2023-05-04 08:45:42 -07:00
configure Improve the per-branch build dir support 2020-06-28 19:42:25 -07:00
configure.ac Add IDN support (#986) 2026-08-20 18:51:23 +10:00
connection.c daemon: harden authentication, access, socket and config-hook handling 2026-07-20 14:05:31 +10:00
COPYING Minor cleanup (#214) 2021-09-26 16:57:55 -07:00
csprotocol.txt A few more doc tweaks & comment tweaks. 2022-09-30 12:34:58 -07:00
daemon-parm.awk daemon: harden authentication, access, socket and config-hook handling 2026-07-20 14:05:31 +10:00
daemon-parm.txt daemon: harden authentication, access, socket and config-hook handling 2026-07-20 14:05:31 +10:00
define-from-md.awk Use documentation to extract 2 more .h lists 2020-06-18 11:20:57 -07:00
delete.c syscall/util1: race-safe path resolution via a held dirfd-stack resolver 2026-07-20 14:05:30 +10:00
Doxyfile Don't generate code for zlib and popt. 2002-04-08 04:00:24 +00:00
errcode.h Tweak the copyright year. 2019-03-16 09:15:49 -07:00
exclude.c exclude: give the ":e" self-exclude rule its merge rule's provenance 2026-08-02 20:32:33 +10:00
fileio.c fileio: keep punching interior holes on the matched (--inplace) path 2026-08-01 20:02:02 +10:00
flist.c flist: keep synthetic and legacy implied parents non-content 2026-07-24 15:14:37 +10:00
generator.c syscall: use O_PATH for held directory traversal (#1065) 2026-08-28 19:37:01 +10:00
getfsdev.c Some indentation fixes. 2020-06-13 19:15:02 -07:00
getgroups.c scan-build: fix resource leaks on error paths 2026-06-16 08:55:39 +10:00
hashtable.c hashtable, flist: fix integer overflows in size computations 2026-07-20 14:05:32 +10:00
help-from-md.awk Use documentation to extract 2 more .h lists 2020-06-18 11:20:57 -07:00
hlink.c xattrs/backup: read source metadata through a held fd, not a path 2026-07-20 14:05:32 +10:00
ifuncs.h Preparing for release of 3.2.4pre2 2022-01-15 17:21:01 -08:00
install-sh shell: test -a|o is not POSIX (#250) 2021-11-07 10:23:01 -08:00
INSTALL.md Add IDN support (#986) 2026-08-20 18:51:23 +10:00
inums.h Tweak the copyright year. 2019-03-16 09:15:49 -07:00
io.c main: allow --contimeout for daemon connections over --rsh (#1071) 2026-09-03 08:10:05 +10:00
io.h Tweak the copyright year. 2019-03-16 09:15:49 -07:00
itypes.h Preparing for release of 3.2.4pre2 2022-01-15 17:21:01 -08:00
latest-year.h Preparing for release of 3.4.2 [buildall] 2026-04-28 14:29:48 +10:00
loadparm.c daemon: refuse '!', '~' and braces in a hook expansion too 2026-08-01 09:52:27 +10:00
log.c log: don't parse the second '%' of '%%' as a new format escape 2026-07-20 14:07:05 +10:00
main.c main: allow --contimeout for daemon connections over --rsh (#1071) 2026-09-03 08:10:05 +10:00
Makefile.in Honor $(STRIP) in install-strip for cross-compilation (#1024) 2026-08-16 21:14:14 +10:00
match.c daemon: robustness against malicious-peer protocol input 2026-07-20 14:05:31 +10:00
maybe-make-man build: fix rrsync manpage fallback 2026-06-06 14:17:00 +10:00
md-convert Make the build reproducible 2025-08-23 16:40:34 +10:00
md2man Unify md parsing scripts & improve non-man html conversions. 2021-12-27 14:24:05 -08:00
mkgitver build: wire up the secure resolver, the ACL fd helper, and the test harnesses 2026-07-20 14:05:30 +10:00
mkproto.awk daemon: harden authentication, access, socket and config-hook handling 2026-07-20 14:05:31 +10:00
NEWS.md NEWS update for 3.5.0 2026-08-13 09:50:33 +10:00
options.c options: accept --max-alloc=0 again, resolved to the parser's own ceiling (#1069) 2026-09-03 07:42:34 +10:00
params.c daemon: harden authentication, access, socket and config-hook handling 2026-07-20 14:05:31 +10:00
pipe.c Some indentation fixes. 2020-06-13 19:15:02 -07:00
prepare-source Some word fixes. 2022-03-26 08:58:51 -07:00
prepare-source.mak Don't make .PHONY the first target in a Makefile. 2020-07-30 18:58:34 -07:00
progress.c Preparing for release of 3.2.4pre2 2022-01-15 17:21:01 -08:00
README.md docs: man pages + README 2026-07-20 14:05:31 +10:00
receiver.c receiver: restore read-only mode before in-place transfer 2026-07-28 13:50:37 +10:00
rounding.c Check extra rounding using an int64. 2020-06-18 15:45:39 -07:00
rsync-ssl rsync-ssl, testsuite: accept --type=SSL_TYPE anywhere in the args (#1047) 2026-08-20 19:27:55 +10:00
rsync-ssl.1.md rsync-ssl, testsuite: accept --type=SSL_TYPE anywhere in the args (#1047) 2026-08-20 19:27:55 +10:00
rsync.1.md docs: list --password-file among the confined operator paths (#1082) 2026-09-09 13:30:01 +10:00
rsync.c rsync: sanitize the peer-supplied basis xname on the client too 2026-07-22 14:50:55 +10:00
rsync.h exclude: don't hand a merge file's contents back to the peer 2026-08-02 20:32:33 +10:00
rsyncd.conf.5.md Add IDN support (#986) 2026-08-20 18:51:23 +10:00
runtests.py runtests: honour the built tree's backport skip list 2026-08-06 14:28:03 +10:00
SECURITY.md syscall: use O_PATH for held directory traversal (#1065) 2026-08-28 19:37:01 +10:00
sender.c syscall: use O_PATH for held directory traversal (#1065) 2026-08-28 19:37:01 +10:00
shconfig.in Better fakeroot support helps Solaris. 2011-09-20 13:17:42 -07:00
simd-checksum-avx2.S simd: stop the AVX2 rolling checksum reading past its buffer 2026-08-03 08:48:33 +10:00
simd-checksum-x86_64.cpp testsuite: run the SIMD checksums against an unreadable page 2026-08-03 08:48:33 +10:00
socket.c Add IDN support (#986) 2026-08-20 18:51:23 +10:00
stunnel-rsyncd.conf.in Change the rsync-ssl helper script 2020-04-19 14:00:33 -07:00
syscall.c syscall: explain untrusted symlink refusal (#1074) 2026-09-03 17:05:03 +10:00
t_acl.c testsuite: shared harness, helpers and unit-test programs 2026-07-20 14:05:31 +10:00
t_chmod_secure.c testsuite: shared harness, helpers and unit-test programs 2026-07-20 14:05:31 +10:00
t_clean_fname.c testsuite: add clean_fname ".." collapse test (KI-50) 2026-07-20 14:05:32 +10:00
t_hashtable_overflow.c testsuite: regression test for the hashtable integer overflow 2026-07-20 14:05:32 +10:00
t_iwildmatch.c testsuite: extend iwildmatch test to bracket expressions (KI-53 follow-up) 2026-07-20 14:05:32 +10:00
t_rename_secure.c testsuite: shared harness, helpers and unit-test programs 2026-07-20 14:05:31 +10:00
t_safe_arg.c testsuite: link t_safe_arg against real objects (portable, drop --gc-sections) 2026-07-20 14:05:32 +10:00
t_secure_relpath.c syscall: defer a literal ".." to the walk before the leaf fast paths 2026-07-25 17:28:54 +10:00
t_stub.c rsync: add --confine-root, bounding operator path resolution 2026-08-03 05:35:03 +10:00
t_symlink_secure.c generator: decide the unconfined mknod fallback at compile time 2026-08-01 19:19:42 +10:00
t_unsafe.c fixed symlink race condition in sender 2025-01-15 05:30:32 +11:00
tech_report.tex updates to reflect new samba.org domain 1998-11-23 00:30:27 +00:00
testrun.c Let's cast getpid() to an int instead of a long for snprintf(). 2011-10-08 09:15:36 -07:00
tls.c Using a correct time in log file 2026-04-22 13:02:10 +10:00
TODO Drop stale "redo manual as SGML" TODO entries 2026-06-05 11:09:36 +10:00
token.c options/token: bound the -v repetition, output level, and suffix token 2026-07-20 14:05:31 +10:00
trimslash.c fixed symlink race condition in sender 2025-01-15 05:30:32 +11:00
uidlist.c flist/xattrs/generator/uidlist/clientserver: plug audit-reported leaks 2026-07-20 14:05:31 +10:00
usage.c Add IDN support (#986) 2026-08-20 18:51:23 +10:00
util1.c syscall: use O_PATH for held directory traversal (#1065) 2026-08-28 19:37:01 +10:00
util2.c alloc: revert "zero all new memory from allocations" (#959) 2026-06-05 06:35:12 +10:00
version.h version.h: bump to 3.5.0 for the release 2026-08-07 15:25:11 +10:00
wildtest.c testsuite: C23 bool compatibility 2026-07-20 07:27:22 +10:00
wildtest.txt A few extra directory-style matching tests. 2005-12-19 02:30:59 +00:00
xattrs.c xattrs/backup: read source metadata through a held fd, not a path 2026-07-20 14:05:32 +10:00

WHAT IS RSYNC?

Rsync is a fast and extraordinarily versatile file copying tool for both remote and local files.

Rsync uses a delta-transfer algorithm which provides a very fast method for bringing remote files into sync. It does this by sending just the differences in the files across the link, without requiring that both sets of files are present at one of the ends of the link beforehand. At first glance this may seem impossible because the calculation of diffs between two files normally requires local access to both files.

A technical report describing the rsync algorithm is included with this package.

USAGE

Basically you use rsync just like scp, but rsync has many additional options. To get a complete list of supported options type:

rsync --help

See the manpage for more detailed information.

BUILDING AND INSTALLING

If you need to build rsync yourself, check out the INSTALL page for information on what libraries and packages you can use to get the maximum features in your build.

SETUP

Rsync normally uses ssh or rsh for communication with remote systems. It does not need to be setuid and requires no special privileges for installation. You must, however, have a working ssh or rsh system. Using ssh is recommended for its security features.

Alternatively, rsync can run in `daemon' mode, listening on a socket. This is generally used for public file distribution, although authentication and access control are available.

To install rsync, first run the "configure" script. This will create a Makefile and config.h appropriate for your system. Then type "make".

Note that on some systems you will have to force configure not to use gcc because gcc may not support some features (such as 64 bit file offsets) that your system may support. Set the environment variable CC to the name of your native compiler before running configure in this case.

Once built put a copy of rsync in your search path on the local and remote systems (or use "make install"). That's it!

RSYNC DAEMONS

Rsync can also talk to "rsync daemons" which can provide anonymous or authenticated rsync. See the rsyncd.conf(5) manpage for details on how to setup an rsync daemon. See the rsync(1) manpage for info on how to connect to an rsync daemon.

WEB SITE

For more information, visit the main rsync web site.

You'll find a FAQ list, downloads, resources, HTML versions of the manpages, etc.

MAILING LISTS

There is a mailing list for the discussion of rsync and its applications that is open to anyone to join. New releases are announced on this list, and there is also an announcement-only mailing list for those that want official announcements. See the mailing-list page for full details.

DISCORD

There is also an rsync Discord server for real-time chat about rsync and its development.

BUG REPORTS

The bug-tracking web page has full details on bug reporting.

That page contains links to the current bug list, and information on how to do a good job when reporting a bug. You might also like to try searching the Internet for the error message you've received, or looking in the mailing list archives.

To send a bug report, follow the instructions on the bug-tracking page of the web site.

Alternately, email your bug report to rsync@lists.samba.org.

For security issues please email details of the issue to rsync.project@gmail.com.

GIT REPOSITORY

If you want to get the very latest version of rsync direct from the source code repository, then you will need to use git. The git repo is hosted on GitHub and on Samba's site.

See the download page for full details on all the ways to grab the source.

Rsync was originally written by Andrew Tridgell and Paul Mackerras. Many people from around the world have helped to maintain and improve it.

Special thanks go to Wayne Davison, who maintained rsync from 2004 to 2024.

Rsync may be used, modified and redistributed only under the terms of the GNU General Public License, found in the file COPYING in this distribution, or at the Free Software Foundation.