rsync

NameLast commit messageLast commit date
.githubtestsuite: fail closed on every malformed skip-list spec3 months ago
libwildmatch: fold bracket-expression pattern chars under force_lower_case4 months ago
m4Silence autoconf warnings.4 years ago
old_versionsold_versions: commit static binaries of old rsync releases5 months ago
packagingPreparing for release of 3.5.0 [buildall]3 months ago
poptpopt: remove obsolete findme.c & findme.h1 year ago
rsync-webupdate web pages and news for 3.5.03 months ago
supportrrsync: confine the server's path resolution to the restricted dir3 months ago
testsuitedocs: distinguish accepted breakage from absent features in backport.txt3 months ago
zlibzlib: convert K&R function definitions to ANSI style7 months ago
.gitattributesold_versions: commit static binaries of old rsync releases5 months ago
.gitignorefleettest: add --keep-on-fail, and pass --timing to the targets3 months ago
access.caccess: fail closed when a hosts-deny token can't be resolved4 months ago
acls.cacls: implement Solaris facl(2)-based ACL helpers4 months ago
authenticate.cauth: parse "auth users" with conf_strtok so a leading comma means commas only3 months ago
backup.cbackup: preserve backup-dir while creating it3 months ago
batch.cbatch/rsync-ssl: quote replay-script args and bind the SSL cert hostname4 months ago
byteorder.hDisable UBSAN for alignment-sensitive functions when !CAREFUL_ALIGNMENT3 years ago
case_N.hTwo more spelling fixes and some year updates.6 years ago
checksum.cdaemon: harden authentication, access, socket and config-hook handling4 months ago
chmod.cchmod: a+s must set both setuid and setgid4 months ago
cleanup.cbuild: add gcov coverage and --disable-openat2 knobs for the test suite5 months ago
clientname.cfix signed integer overflow in proxy protocol v2 header parsing7 months ago
clientserver.cdaemon: bound the pre-transfer handshake with a timeout3 months ago
cmd-or-msgRename cmdormsg -> cmd-or-msg.5 years ago
compat.ccompat: assign metadata ndx after batch flags; pick own preferred name4 months ago
config.guessMention updated config files.3 years ago
config.subMention updated config files.3 years ago
configureImprove the per-branch build dir support6 years ago
configure.acbuild: require <poll.h>, not just poll()3 months ago
connection.cdaemon: harden authentication, access, socket and config-hook handling4 months ago
COPYINGMinor cleanup (#214)5 years ago
csprotocol.txtA few more doc tweaks & comment tweaks.4 years ago
daemon-parm.awkdaemon: harden authentication, access, socket and config-hook handling4 months ago
daemon-parm.txtdaemon: harden authentication, access, socket and config-hook handling4 months ago
define-from-md.awkUse documentation to extract 2 more .h lists6 years ago
delete.csyscall/util1: race-safe path resolution via a held dirfd-stack resolver4 months ago
DoxyfileDon't generate code for zlib and popt.24 years ago
errcode.hTweak the copyright year.7 years ago
exclude.cexclude: give the ":e" self-exclude rule its merge rule's provenance3 months ago
fileio.cfileio: keep punching interior holes on the matched (--inplace) path3 months ago
flist.cflist: keep synthetic and legacy implied parents non-content3 months ago
generator.cgenerator: fall back to a copy when the destination cannot hard-link3 months ago
getfsdev.cSome indentation fixes.6 years ago
getgroups.cscan-build: fix resource leaks on error paths5 months ago
hashtable.chashtable, flist: fix integer overflows in size computations4 months ago
help-from-md.awkUse documentation to extract 2 more .h lists6 years ago
hlink.cxattrs/backup: read source metadata through a held fd, not a path4 months ago
ifuncs.hPreparing for release of 3.2.4pre24 years ago
install-shshell: test -a|o is not POSIX (#250)5 years ago
INSTALL.mddocs: document the rsync-latest snapshot PPA5 months ago
inums.hTweak the copyright year.7 years ago
io.cdaemon: bound the pre-transfer handshake with a timeout3 months ago
io.hTweak the copyright year.7 years ago
itypes.hPreparing for release of 3.2.4pre24 years ago
latest-year.hPreparing for release of 3.4.2 [buildall]6 months ago
loadparm.cdaemon: refuse '!', '~' and braces in a hook expansion too3 months ago
log.clog: don't parse the second '%' of '%%' as a new format escape3 months ago
main.cio, main: make the SIGUSR2 handler async-signal-safe4 months ago
Makefile.inbuild/testsuite: survive a build path that contains a space3 months ago
match.cdaemon: robustness against malicious-peer protocol input4 months ago
maybe-make-manbuild: fix rrsync manpage fallback5 months ago
md-convertMake the build reproducible1 year ago
md2manUnify md parsing scripts & improve non-man html conversions.4 years ago
mkgitverbuild: wire up the secure resolver, the ACL fd helper, and the test harnesses4 months ago
mkproto.awkdaemon: harden authentication, access, socket and config-hook handling4 months ago
NEWS.mdNEWS update for 3.5.03 months ago
options.crsync: add --confine-root, bounding operator path resolution3 months ago
params.cdaemon: harden authentication, access, socket and config-hook handling4 months ago
pipe.cSome indentation fixes.6 years ago
prepare-sourceSome word fixes.4 years ago
prepare-source.makDon't make .PHONY the first target in a Makefile.6 years ago
progress.cPreparing for release of 3.2.4pre24 years ago
README.mddocs: man pages + README4 months ago
receiver.creceiver: restore read-only mode before in-place transfer3 months ago
rounding.cCheck extra rounding using an int64.6 years ago
rsync-sslrsync-ssl, testsuite: quote paths interpolated into shell text3 months ago
rsync-ssl.1.mddocs: man pages + README4 months ago
rsync.1.mdgenerator: fall back to a copy when the destination cannot hard-link3 months ago
rsync.crsync: sanitize the peer-supplied basis xname on the client too3 months ago
rsync.hexclude: don't hand a merge file's contents back to the peer3 months ago
rsyncd.conf.5.mddaemon: refuse '!', '~' and braces in a hook expansion too3 months ago
runtests.pyruntests: honour the built tree's backport skip list3 months ago
SECURITY.mdgenerator: decide the unconfined mknod fallback at compile time3 months ago
sender.csender: null-check the anchor before comparing it to the module root3 months ago
shconfig.inBetter fakeroot support helps Solaris.15 years ago
simd-checksum-avx2.Ssimd: stop the AVX2 rolling checksum reading past its buffer3 months ago
simd-checksum-x86_64.cpptestsuite: run the SIMD checksums against an unreadable page3 months ago
socket.csocket: don't let open_socket_out() hang in connect()3 months ago
stunnel-rsyncd.conf.inChange the rsync-ssl helper script6 years ago
syscall.crsync: add --confine-root, bounding operator path resolution3 months ago
t_acl.ctestsuite: shared harness, helpers and unit-test programs4 months ago
t_chmod_secure.ctestsuite: shared harness, helpers and unit-test programs4 months ago
t_clean_fname.ctestsuite: add clean_fname ".." collapse test (KI-50)4 months ago
t_hashtable_overflow.ctestsuite: regression test for the hashtable integer overflow4 months ago
t_iwildmatch.ctestsuite: extend iwildmatch test to bracket expressions (KI-53 follow-up)4 months ago
t_rename_secure.ctestsuite: shared harness, helpers and unit-test programs4 months ago
t_safe_arg.ctestsuite: link t_safe_arg against real objects (portable, drop --gc-sections)4 months ago
t_secure_relpath.csyscall: defer a literal ".." to the walk before the leaf fast paths3 months ago
t_stub.crsync: add --confine-root, bounding operator path resolution3 months ago
t_symlink_secure.cgenerator: decide the unconfined mknod fallback at compile time3 months ago
t_unsafe.cfixed symlink race condition in sender1 year ago
tech_report.texupdates to reflect new samba.org domain the main web site is now http://rsync.samba.org/27 years ago
testrun.cLet's cast getpid() to an int instead of a long for snprintf().15 years ago
tls.cUsing a correct time in log file1 year ago
TODODrop stale "redo manual as SGML" TODO entries5 months ago
token.coptions/token: bound the -v repetition, output level, and suffix token4 months ago
trimslash.cfixed symlink race condition in sender1 year ago
uidlist.cflist/xattrs/generator/uidlist/clientserver: plug audit-reported leaks4 months ago
usage.cacls/xattrs: race-safe fd-based metadata application4 months ago
util1.cutil1: drop null-tests on robust_rename's from/to args3 months ago
util2.calloc: revert "zero all new memory from allocations" (#959)5 months ago
version.hversion.h: bump to 3.5.0 for the release3 months ago
wildtest.ctestsuite: C23 bool compatibility3 months ago
wildtest.txtA few extra directory-style matching tests.20 years ago
xattrs.cxattrs/backup: read source metadata through a held fd, not a path4 months ago
README.md

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.