Updated version.
[rsync/rsync.git] / rsync.yo
CommitLineData
9e3c856a 1mailto(rsync-bugs@samba.org)
deec5744 2manpage(rsync)(1)(26 Jan 2003)()()
41059f75
AT
3manpagename(rsync)(faster, flexible replacement for rcp)
4manpagesynopsis()
5
9ef53907 6rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST
41059f75 7
9ef53907 8rsync [OPTION]... [USER@]HOST:SRC DEST
41059f75 9
9ef53907 10rsync [OPTION]... SRC [SRC]... DEST
41059f75 11
9ef53907 12rsync [OPTION]... [USER@]HOST::SRC [DEST]
41059f75 13
9ef53907 14rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST
41059f75 15
9ef53907 16rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]
039faa86 17
8d69d571
WD
18rsync [OPTION]... SRC [SRC]... rsync://[USER@]HOST[:PORT]/DEST
19
41059f75
AT
20manpagedescription()
21
22rsync is a program that behaves in much the same way that rcp does,
23but has many more options and uses the rsync remote-update protocol to
eb06fa95 24greatly speed up file transfers when the destination file already
41059f75
AT
25exists.
26
27The rsync remote-update protocol allows rsync to transfer just the
f39281ae 28differences between two sets of files across the network connection, using
41059f75
AT
29an efficient checksum-search algorithm described in the technical
30report that accompanies this package.
31
32Some of the additional features of rsync are:
33
34itemize(
35 it() support for copying links, devices, owners, groups and permissions
36 it() exclude and exclude-from options similar to GNU tar
37 it() a CVS exclude mode for ignoring the same files that CVS would ignore
38 it() can use any transparent remote shell, including rsh or ssh
39 it() does not require root privileges
40 it() pipelining of file transfers to minimize latency costs
41 it() support for anonymous or authenticated rsync servers (ideal for
42 mirroring)
43)
44
45manpagesection(GENERAL)
46
bef49340 47There are eight different ways of using rsync. They are:
41059f75
AT
48
49itemize(
50 it() for copying local files. This is invoked when neither
51 source nor destination path contains a : separator
52
53 it() for copying from the local machine to a remote machine using
54 a remote shell program as the transport (such as rsh or
55 ssh). This is invoked when the destination path contains a
56 single : separator.
57
58 it() for copying from a remote machine to the local machine
6c7c2ef3 59 using a remote shell program. This is invoked when the source
41059f75
AT
60 contains a : separator.
61
62 it() for copying from a remote rsync server to the local
63 machine. This is invoked when the source path contains a ::
946347b8 64 separator or a rsync:// URL.
41059f75
AT
65
66 it() for copying from the local machine to a remote rsync
67 server. This is invoked when the destination path contains a ::
8d69d571 68 separator or a rsync:// URL.
039faa86 69
bef49340
WD
70 it() for copying from a remote machine using a remote shell
71 program as the transport, using rsync server on the remote
72 machine. This is invoked when the source path contains a ::
73 separator and the --rsh=COMMAND (aka "-e COMMAND") option is
74 also provided.
75
76 it() for copying from the local machine to a remote machine
77 using a remote shell program as the transport, using rsync
78 server on the remote machine. This is invoked when the
79 destination path contains a :: separator and the
80 --rsh=COMMMAND option is also provided.
81
039faa86
AT
82 it() for listing files on a remote machine. This is done the
83 same way as rsync transfers except that you leave off the
84 local destination.
41059f75
AT
85)
86
14d43f1f
DD
87Note that in all cases (other than listing) at least one of the source
88and destination paths must be local.
41059f75
AT
89
90manpagesection(SETUP)
91
92See the file README for installation instructions.
93
1bbf83c0
WD
94Once installed, you can use rsync to any machine that you can access via
95a remote shell (as well as some that you can access using the rsync
96daemon-mode protocol). For remote transfers, rsync typically uses rsh
97for its communications, but it may have been configured to use a
98different remote shell by default, such as ssh.
41059f75 99
1bbf83c0 100You can also specify any remote shell you like, either by using the -e
41059f75
AT
101command line option, or by setting the RSYNC_RSH environment variable.
102
103One common substitute is to use ssh, which offers a high degree of
104security.
105
8e987130
AT
106Note that rsync must be installed on both the source and destination
107machines.
108
41059f75
AT
109manpagesection(USAGE)
110
111You use rsync in the same way you use rcp. You must specify a source
112and a destination, one of which may be remote.
113
114Perhaps the best way to explain the syntax is some examples:
115
116quote(rsync *.c foo:src/)
117
8a97fc2e 118This would transfer all files matching the pattern *.c from the
41059f75
AT
119current directory to the directory src on the machine foo. If any of
120the files already exist on the remote system then the rsync
121remote-update protocol is used to update the file by sending only the
122differences. See the tech report for details.
123
124quote(rsync -avz foo:src/bar /data/tmp)
125
8a97fc2e 126This would recursively transfer all files from the directory src/bar on the
41059f75
AT
127machine foo into the /data/tmp/bar directory on the local machine. The
128files are transferred in "archive" mode, which ensures that symbolic
129links, devices, attributes, permissions, ownerships etc are preserved
14d43f1f 130in the transfer. Additionally, compression will be used to reduce the
41059f75
AT
131size of data portions of the transfer.
132
133quote(rsync -avz foo:src/bar/ /data/tmp)
134
8a97fc2e
WD
135A trailing slash on the source changes this behavior to avoid creating an
136additional directory level at the destination. You can think of a trailing
137/ on a source as meaning "copy the contents of this directory" as opposed
138to "copy the directory by name", but in both cases the attributes of the
139containing directory are transferred to the containing directory on the
140destination. In other words, each of the following commands copies the
141files in the same way, including their setting of the attributes of
142/dest/foo:
143
144quote(rsync -avz /src/foo /dest)
145quote(rsync -avz /src/foo/ /dest/foo)
41059f75
AT
146
147You can also use rsync in local-only mode, where both the source and
148destination don't have a ':' in the name. In this case it behaves like
149an improved copy command.
150
14d43f1f
DD
151quote(rsync somehost.mydomain.com::)
152
8a97fc2e 153This would list all the anonymous rsync modules available on the host
14d43f1f
DD
154somehost.mydomain.com. (See the following section for more details.)
155
41059f75
AT
156
157manpagesection(CONNECTING TO AN RSYNC SERVER)
158
1bbf83c0 159It is also possible to use rsync without a remote shell as the
41059f75
AT
160transport. In this case you will connect to a remote rsync server
161running on TCP port 873.
162
eb06fa95 163You may establish the connection via a web proxy by setting the
4c3b4b25 164environment variable RSYNC_PROXY to a hostname:port pair pointing to
eb06fa95
MP
165your web proxy. Note that your web proxy's configuration must allow
166proxying to port 873.
4c3b4b25 167
1bbf83c0 168Using rsync in this way is the same as using it with a remote shell except
41059f75
AT
169that:
170
171itemize(
172 it() you use a double colon :: instead of a single colon to
8d69d571 173 separate the hostname from the path or a rsync:// URL.
41059f75
AT
174
175 it() the remote server may print a message of the day when you
14d43f1f 176 connect.
41059f75
AT
177
178 it() if you specify no path name on the remote server then the
179 list of accessible paths on the server will be shown.
14d43f1f 180
f7632fc6 181 it() if you specify no local destination then a listing of the
14d43f1f 182 specified files on the remote server is provided.
41059f75
AT
183)
184
4c3d16be
AT
185Some paths on the remote server may require authentication. If so then
186you will receive a password prompt when you connect. You can avoid the
187password prompt by setting the environment variable RSYNC_PASSWORD to
65575e96
AT
188the password you want to use or using the --password-file option. This
189may be useful when scripting rsync.
4c3d16be 190
3bc67f0c 191WARNING: On some systems environment variables are visible to all
65575e96 192users. On those systems using --password-file is recommended.
3bc67f0c 193
bef49340
WD
194manpagesection(CONNECTING TO AN RSYNC SERVER OVER A REMOTE SHELL PROGRAM)
195
196It is sometimes useful to be able to set up file transfers using rsync
197server capabilities on the remote machine, while still using rsh or
198ssh for transport. This is especially useful when you want to connect
199to a remote machine via ssh (for encryption or to get through a
200firewall), but you still want to have access to the rsync server
201features (see RUNNING AN RSYNC SERVER OVER A REMOTE SHELL PROGRAM,
202below).
203
204From the user's perspective, using rsync in this way is the same as
205using it to connect to an rsync server, except that you must
206explicitly set the remote shell program on the command line with
207--rsh=COMMAND. (Setting RSYNC_RSH in the environment will not turn on
208this functionality.)
209
210In order to distinguish between the remote-shell user and the rsync
211server user, you can use '-l user' on your remote-shell command:
212
213quote(rsync -av --rsh="ssh -l ssh-user" rsync-user@host::module[/path] local-path)
214
215The "ssh-user" will be used at the ssh level; the "rsync-user" will be
216used to check against the rsyncd.conf on the remote host.
217
41059f75
AT
218manpagesection(RUNNING AN RSYNC SERVER)
219
30e8c8e1
DD
220An rsync server is configured using a config file. Please see the
221rsyncd.conf(5) man page for more information. By default the configuration
222file is called /etc/rsyncd.conf, unless rsync is running over a remote
223shell program and is not running as root; in that case, the default name
224is rsyncd.conf in the current directory on the remote computer
225(typically $HOME).
41059f75 226
bef49340
WD
227manpagesection(RUNNING AN RSYNC SERVER OVER A REMOTE SHELL PROGRAM)
228
229See the rsyncd.conf(5) man page for full information on the rsync
230server configuration file.
231
232Several configuration options will not be available unless the remote
233user is root (e.g. chroot, setuid/setgid, etc.). There is no need to
234configure inetd or the services map to include the rsync server port
235if you run an rsync server only via a remote shell program.
236
237To run an rsync server out of a single-use ssh key, use the
238"command=em(COMMAND)" syntax in the remote user's
239authorized_keys entry, where command would be
240
241quote(rsync --server --daemon .)
242
243NOTE: rsync's argument parsing expects the trailing ".", so make sure
244that it's there. If you want to use a rsyncd.conf(5)-style
30e8c8e1 245configuration file other than the default, you can added a
1b887755 246--config option to the em(command):
bef49340 247
1b887755 248quote(rsync --server --daemon --config=em(file) .)
bef49340 249
41059f75
AT
250manpagesection(EXAMPLES)
251
252Here are some examples of how I use rsync.
253
14d43f1f
DD
254To backup my wife's home directory, which consists of large MS Word
255files and mail folders, I use a cron job that runs
41059f75
AT
256
257quote(rsync -Cavz . arvidsjaur:backup)
258
f39281ae 259each night over a PPP connection to a duplicate directory on my machine
41059f75
AT
260"arvidsjaur".
261
262To synchronize my samba source trees I use the following Makefile
263targets:
264
265quote( get:nl()
266 rsync -avuzb --exclude '*~' samba:samba/ .
267
268 put:nl()
269 rsync -Cavuzb . samba:samba/
270
271 sync: get put)
272
273this allows me to sync with a CVS directory at the other end of the
f39281ae 274connection. I then do cvs operations on the remote machine, which saves a
41059f75
AT
275lot of time as the remote cvs protocol isn't very efficient.
276
277I mirror a directory between my "old" and "new" ftp sites with the
278command
279
280quote(rsync -az -e ssh --delete ~ftp/pub/samba/ nimbus:"~ftp/pub/tridge/samba")
281
282this is launched from cron every few hours.
283
c95da96a
AT
284manpagesection(OPTIONS SUMMARY)
285
14d43f1f 286Here is a short summary of the options available in rsync. Please refer
c95da96a
AT
287to the detailed description below for a complete description.
288
289verb(
290 -v, --verbose increase verbosity
b86f0cef 291 -q, --quiet decrease verbosity
c95da96a 292 -c, --checksum always checksum
06891710 293 -a, --archive archive mode, equivalent to -rlptgoD
c95da96a
AT
294 -r, --recursive recurse into directories
295 -R, --relative use relative path names
f177b7cc
WD
296 --no-relative turn off --relative
297 --no-implied-dirs don't send implied dirs with -R
b19fd07c 298 -b, --backup make backups (see --suffix)
5b56cc19 299 --backup-dir make backups into this directory
b19fd07c 300 --suffix=SUFFIX define backup suffix (default ~ w/o --backup-dir)
c95da96a 301 -u, --update update only (don't overwrite newer files)
eb06fa95
MP
302 -l, --links copy symlinks as symlinks
303 -L, --copy-links copy the referent of symlinks
b5313607 304 --copy-unsafe-links copy links outside the source tree
d853783f 305 --safe-links ignore links outside the destination tree
c95da96a
AT
306 -H, --hard-links preserve hard links
307 -p, --perms preserve permissions
308 -o, --owner preserve owner (root only)
309 -g, --group preserve group
310 -D, --devices preserve devices (root only)
311 -t, --times preserve times
312 -S, --sparse handle sparse files efficiently
313 -n, --dry-run show what would have been transferred
314 -W, --whole-file copy whole files, no incremental checks
93689aa5 315 --no-whole-file turn off --whole-file
c95da96a 316 -x, --one-file-system don't cross filesystem boundaries
9ef53907 317 -B, --block-size=SIZE checksum blocking size (default 700)
1bbf83c0 318 -e, --rsh=COMMAND specify the remote shell to use
d9fcc198 319 --rsync-path=PATH specify path to rsync on the remote machine
1347d512 320 --existing only update files that already exist
3d6feada 321 --ignore-existing ignore files that already exist on the receiving side
c95da96a 322 --delete delete files that don't exist on the sending side
b33b791e 323 --delete-excluded also delete excluded files on the receiving side
1347d512 324 --delete-after delete after transferring, not before
ef55c686 325 --ignore-errors delete even if there are IO errors
0b73ca12 326 --max-delete=NUM don't delete more than NUM files
c95da96a
AT
327 --partial keep partially transferred files
328 --force force deletion of directories even if not empty
329 --numeric-ids don't map uid/gid values by user/group name
330 --timeout=TIME set IO timeout in seconds
331 -I, --ignore-times don't exclude files that match length and time
f83f0548 332 --size-only only use file size when determining if a file should be transferred
5b56cc19 333 --modify-window=NUM Timestamp window (seconds) for file match (default=0)
c95da96a 334 -T --temp-dir=DIR create temporary files in directory DIR
375a4556 335 --compare-dest=DIR also compare destination files relative to DIR
59c95e42 336 --link-dest=DIR create hardlinks to DIR for unchanged files
d9fcc198 337 -P equivalent to --partial --progress
c95da96a 338 -z, --compress compress file data
f177b7cc 339 -C, --cvs-exclude auto ignore files in the same way CVS does
2acf81eb 340 --exclude=PATTERN exclude files matching PATTERN
9ef53907 341 --exclude-from=FILE exclude patterns listed in FILE
2acf81eb 342 --include=PATTERN don't exclude files matching PATTERN
9ef53907 343 --include-from=FILE don't exclude patterns listed in FILE
f177b7cc
WD
344 --files-from=FILE read FILE for list of source-file names
345 -0 --from0 file names we read are separated by nulls, not newlines
c95da96a
AT
346 --version print version number
347 --daemon run as a rsync daemon
bbd6f4ba 348 --no-detach do not detach from the parent
2a951cd2 349 --address=ADDRESS bind to the specified address
c95da96a
AT
350 --config=FILE specify alternate rsyncd.conf file
351 --port=PORT specify alternate rsyncd port number
64c704f0 352 --blocking-io use blocking IO for the remote shell
93689aa5 353 --no-blocking-io turn off --blocking-io
c95da96a 354 --stats give some file transfer stats
eb86d661 355 --progress show progress during transfer
b6062654 356 --log-format=FORMAT log file transfers using specified format
9ef53907 357 --password-file=FILE get password from FILE
ef5d23eb 358 --bwlimit=KBPS limit I/O bandwidth, KBytes per second
088aac85
DD
359 --read-batch=PREFIX read batch fileset starting with PREFIX
360 --write-batch=PREFIX write batch fileset starting with PREFIX
c95da96a 361 -h, --help show this help screen
6902ed17
MP
362
363
c95da96a
AT
364)
365
41059f75
AT
366manpageoptions()
367
368rsync uses the GNU long options package. Many of the command line
369options have two variants, one short and one long. These are shown
14d43f1f 370below, separated by commas. Some options only have a long variant.
b5679335
DD
371The '=' for options that take a parameter is optional; whitespace
372can be used instead.
41059f75
AT
373
374startdit()
375dit(bf(-h, --help)) Print a short help page describing the options
376available in rsync
377
378dit(bf(--version)) print the rsync version number and exit
379
380dit(bf(-v, --verbose)) This option increases the amount of information you
14d43f1f 381are given during the transfer. By default, rsync works silently. A
41059f75
AT
382single -v will give you information about what files are being
383transferred and a brief summary at the end. Two -v flags will give you
384information on what files are being skipped and slightly more
385information at the end. More than two -v flags should only be used if
14d43f1f 386you are debugging rsync.
41059f75 387
b86f0cef
DD
388dit(bf(-q, --quiet)) This option decreases the amount of information you
389are given during the transfer, notably suppressing information messages
390from the remote server. This flag is useful when invoking rsync from
391cron.
392
41059f75
AT
393dit(bf(-I, --ignore-times)) Normally rsync will skip any files that are
394already the same length and have the same time-stamp. This option turns
395off this behavior.
396
a7d068ab 397dit(bf(--size-only)) Normally rsync will skip any files that are
f83f0548
AT
398already the same length and have the same time-stamp. With the
399--size-only option files will be skipped if they have the same size,
400regardless of timestamp. This is useful when starting to use rsync
401after using another mirroring system which may not preserve timestamps
402exactly.
403
5b56cc19
AT
404dit(bf(--modify-window)) When comparing two timestamps rsync treats
405the timestamps as being equal if they are within the value of
406modify_window. This is normally zero, but you may find it useful to
407set this to a larger value in some situations. In particular, when
38843171
DD
408transferring to Windows FAT filesystems which cannot represent times
409with a 1 second resolution --modify-window=1 is useful.
5b56cc19 410
41059f75
AT
411dit(bf(-c, --checksum)) This forces the sender to checksum all files using
412a 128-bit MD4 checksum before transfer. The checksum is then
413explicitly checked on the receiver and any files of the same name
414which already exist and have the same checksum and size on the
415receiver are skipped. This option can be quite slow.
416
e7bf3e5e
MP
417dit(bf(-a, --archive)) This is equivalent to -rlptgoD. It is a quick
418way of saying you want recursion and want to preserve almost
419everything.
420
421Note however that bf(-a) bf(does not preserve hardlinks), because
422finding multiply-linked files is expensive. You must separately
423specify bf(-H).
41059f75 424
24986abd
AT
425dit(bf(-r, --recursive)) This tells rsync to copy directories
426recursively. If you don't specify this then rsync won't copy
427directories at all.
41059f75
AT
428
429dit(bf(-R, --relative)) Use relative paths. This means that the full path
430names specified on the command line are sent to the server rather than
431just the last parts of the filenames. This is particularly useful when
14d43f1f
DD
432you want to send several different directories at the same time. For
433example, if you used the command
41059f75
AT
434
435verb(rsync foo/bar/foo.c remote:/tmp/)
436
437then this would create a file called foo.c in /tmp/ on the remote
438machine. If instead you used
439
440verb(rsync -R foo/bar/foo.c remote:/tmp/)
441
442then a file called /tmp/foo/bar/foo.c would be created on the remote
f177b7cc
WD
443machine -- the full path name is preserved.
444
445dit(bf(--no-relative)) Turn off the --relative option. This is only
446needed if you want to use --files-from without its implied --relative
447file processing.
448
449dit(bf(--no-implied-dirs)) When combined with the --relative option, the
450implied directories in each path are not explicitly duplicated as part
451of the transfer. This makes the transfer more optimal and also allows
452the two sides to have non-matching symlinks in the implied part of the
453path. For instance, if you transfer the file "/path/foo/file" with -R,
454the default is for rsync to ensure that "/path" and "/path/foo" on the
455destination exactly match the directories/symlinks of the source. Using
456the --no-implied-dirs option would omit both of these implied dirs,
457which means that if "/path" was a real directory on one machine and a
458symlink of the other machine, rsync would not try to change this.
41059f75 459
b19fd07c
WD
460dit(bf(-b, --backup)) With this option, preexisting destination files are
461renamed as each file is transferred or deleted. You can control where the
462backup file goes and what (if any) suffix gets appended using the
463--backup-dir and --suffix options.
41059f75 464
66203a98
AT
465dit(bf(--backup-dir=DIR)) In combination with the --backup option, this
466tells rsync to store all backups in the specified directory. This is
759ac870
DD
467very useful for incremental backups. You can additionally
468specify a backup suffix using the --suffix option
469(otherwise the files backed up in the specified directory
470will keep their original filenames).
66203a98 471
b5679335 472dit(bf(--suffix=SUFFIX)) This option allows you to override the default
b19fd07c
WD
473backup suffix used with the --backup (-b) option. The default suffix is a ~
474if no --backup-dir was specified, otherwise it is an empty string.
9ef53907 475
41059f75
AT
476dit(bf(-u, --update)) This forces rsync to skip any files for which the
477destination file already exists and has a date later than the source
478file.
479
eb06fa95
MP
480dit(bf(-l, --links)) When symlinks are encountered, recreate the
481symlink on the destination.
41059f75 482
eb06fa95
MP
483dit(bf(-L, --copy-links)) When symlinks are encountered, the file that
484they point to is copied, rather than the symlink.
b5313607 485
eb06fa95
MP
486dit(bf(--copy-unsafe-links)) This tells rsync to copy the referent of
487symbolic links that point outside the source tree. Absolute symlinks
488are also treated like ordinary files, and so are any symlinks in the
489source path itself when --relative is used.
41059f75 490
d310a212
AT
491dit(bf(--safe-links)) This tells rsync to ignore any symbolic links
492which point outside the destination tree. All absolute symlinks are
493also ignored. Using this option in conjunction with --relative may
14d43f1f 494give unexpected results.
d310a212 495
41059f75
AT
496dit(bf(-H, --hard-links)) This tells rsync to recreate hard links on
497the remote system to be the same as the local system. Without this
498option hard links are treated like regular files.
499
500Note that rsync can only detect hard links if both parts of the link
501are in the list of files being sent.
502
503This option can be quite slow, so only use it if you need it.
504
505dit(bf(-W, --whole-file)) With this option the incremental rsync algorithm
a1a440c2
DD
506is not used and the whole file is sent as-is instead. The transfer may be
507faster if this option is used when the bandwidth between the source and
508target machines is higher than the bandwidth to disk (especially when the
509"disk" is actually a networked file system). This is the default when both
510the source and target are on the local machine.
41059f75 511
93689aa5
DD
512dit(bf(--no-whole-file)) Turn off --whole-file, for use when it is the
513default.
514
8dc74608
WD
515dit(bf(-p, --perms)) This option causes rsync to set the destination
516permissions to be the same as the source permissions.
517
518Without this option, each new file gets its permissions set based on the
519source file's permissions and the umask at the receiving end, while all
520other files (including updated files) retain their existing permissions
521(which is the same behavior as other file-copy utilities, such as cp).
41059f75 522
eb06fa95
MP
523dit(bf(-o, --owner)) This option causes rsync to set the owner of the
524destination file to be the same as the source file. On most systems,
fca9a9b0
DD
525only the super-user can set file ownership. Note that if the remote system
526is a daemon using chroot, the --numeric-ids option is implied because the
527remote system cannot get access to the usernames from /etc/passwd.
41059f75 528
eb06fa95
MP
529dit(bf(-g, --group)) This option causes rsync to set the group of the
530destination file to be the same as the source file. If the receiving
531program is not running as the super-user, only groups that the
532receiver is a member of will be preserved (by group name, not group id
533number).
41059f75
AT
534
535dit(bf(-D, --devices)) This option causes rsync to transfer character and
536block device information to the remote system to recreate these
537devices. This option is only available to the super-user.
538
539dit(bf(-t, --times)) This tells rsync to transfer modification times along
baf3e504
DD
540with the files and update them on the remote system. Note that if this
541option is not used, the optimization that excludes files that have not been
542modified cannot be effective; in other words, a missing -t or -a will
543cause the next transfer to behave as if it used -I, and all files will have
544their checksums compared and show up in log messages even if they haven't
545changed.
41059f75
AT
546
547dit(bf(-n, --dry-run)) This tells rsync to not do any file transfers,
548instead it will just report the actions it would have taken.
549
550dit(bf(-S, --sparse)) Try to handle sparse files efficiently so they take
551up less space on the destination.
552
d310a212
AT
553NOTE: Don't use this option when the destination is a Solaris "tmpfs"
554filesystem. It doesn't seem to handle seeks over null regions
555correctly and ends up corrupting the files.
556
41059f75
AT
557dit(bf(-x, --one-file-system)) This tells rsync not to cross filesystem
558boundaries when recursing. This is useful for transferring the
559contents of only one filesystem.
560
1347d512
AT
561dit(bf(--existing)) This tells rsync not to create any new files -
562only update files that already exist on the destination.
563
3d6feada
MP
564dit(bf(--ignore-existing))
565This tells rsync not to update files that already exist on
566the destination.
567
0b73ca12
AT
568dit(bf(--max-delete=NUM)) This tells rsync not to delete more than NUM
569files or directories. This is useful when mirroring very large trees
570to prevent disasters.
571
41059f75 572dit(bf(--delete)) This tells rsync to delete any files on the receiving
b33b791e
DD
573side that aren't on the sending side. Files that are excluded from
574transfer are excluded from being deleted unless you use --delete-excluded.
41059f75 575
24986abd
AT
576This option has no effect if directory recursion is not selected.
577
b33b791e
DD
578This option can be dangerous if used incorrectly! It is a very good idea
579to run first using the dry run option (-n) to see what files would be
580deleted to make sure important files aren't listed.
41059f75 581
3e578a19
AT
582If the sending side detects any IO errors then the deletion of any
583files at the destination will be automatically disabled. This is to
584prevent temporary filesystem failures (such as NFS errors) on the
585sending side causing a massive deletion of files on the
2c5548d2 586destination. You can override this with the --ignore-errors option.
41059f75 587
b33b791e
DD
588dit(bf(--delete-excluded)) In addition to deleting the files on the
589receiving side that are not on the sending side, this tells rsync to also
590delete any files on the receiving side that are excluded (see --exclude).
786c3687 591Implies --delete.
b33b791e 592
57df171b
AT
593dit(bf(--delete-after)) By default rsync does file deletions before
594transferring files to try to ensure that there is sufficient space on
595the receiving filesystem. If you want to delete after transferring
786c3687 596then use the --delete-after switch. Implies --delete.
57df171b 597
2c5548d2
DD
598dit(bf(--ignore-errors)) Tells --delete to go ahead and delete files
599even when there are IO errors.
600
b695d088
DD
601dit(bf(--force)) This options tells rsync to delete directories even if
602they are not empty when they are to be replaced by non-directories. This
603is only relevant without --delete because deletions are now done depth-first.
604Requires the --recursive option (which is implied by -a) to have any effect.
41059f75 605
ad911a7a 606dit(bf(-B , --block-size=BLOCKSIZE)) This controls the block size used in
41059f75
AT
607the rsync algorithm. See the technical report for details.
608
b5679335 609dit(bf(-e, --rsh=COMMAND)) This option allows you to choose an alternative
41059f75 610remote shell program to use for communication between the local and
1bbf83c0
WD
611remote copies of rsync. Typically, rsync is configured to use rsh by
612default, but you may prefer to use ssh because of its high security.
41059f75 613
bef49340
WD
614If this option is used with bf([user@]host::module/path), then the
615remote shell em(COMMMAND) will be used to run an rsync server on the
616remote host, and all data will be transmitted through that remote
617shell connection, rather than through a direct socket connection to a
2d4ca358
DD
618running rsync server on the remote host. See the section "CONNECTING
619TO AN RSYNC SERVER OVER A REMOTE SHELL PROGRAM" above.
bef49340 620
ea7f8108
WD
621Command-line arguments are permitted in COMMAND provided that COMMAND is
622presented to rsync as a single argument. For example:
98393ae2 623
ea7f8108 624quote(-e "ssh -p 2234")
98393ae2
WD
625
626(Note that ssh users can alternately customize site-specific connect
627options in their .ssh/config file.)
628
41059f75 629You can also choose the remote shell program using the RSYNC_RSH
ea7f8108 630environment variable, which accepts the same range of values as -e.
41059f75 631
735a816e
DD
632See also the --blocking-io option which is affected by this option.
633
b5679335 634dit(bf(--rsync-path=PATH)) Use this to specify the path to the copy of
d73ee7b7
AT
635rsync on the remote machine. Useful when it's not in your path. Note
636that this is the full path to the binary, not just the directory that
637the binary is in.
41059f75 638
f177b7cc
WD
639dit(bf(-C, --cvs-exclude)) This is a useful shorthand for excluding a
640broad range of files that you often don't want to transfer between
641systems. It uses the same algorithm that CVS uses to determine if
642a file should be ignored.
643
644The exclude list is initialized to:
645
646quote(RCS/ SCCS/ CVS/ .svn/ CVS.adm RCSLOG cvslog.* tags TAGS .make.state
647.nse_depinfo *~ #* .#* ,* *.old *.bak *.BAK *.orig *.rej .del-*
648*.a *.o *.obj *.so *.Z *.elc *.ln core)
649
650then files listed in a $HOME/.cvsignore are added to the list and any
651files listed in the CVSIGNORE environment variable (space delimited).
652
653Finally, any file is ignored if it is in the same directory as a
654.cvsignore file and matches one of the patterns listed therein. See
655the bf(cvs(1)) manual for more information.
656
b5679335 657dit(bf(--exclude=PATTERN)) This option allows you to selectively exclude
41059f75
AT
658certain files from the list of files to be transferred. This is most
659useful in combination with a recursive transfer.
660
41059f75
AT
661You may use as many --exclude options on the command line as you like
662to build up the list of files to exclude.
663
d1cce1dd 664See the EXCLUDE PATTERNS section for information on the syntax of
43bd68e5 665this option.
41059f75 666
b5679335 667dit(bf(--exclude-from=FILE)) This option is similar to the --exclude
c48b22c8
AT
668option, but instead it adds all exclude patterns listed in the file
669FILE to the exclude list. Blank lines in FILE and lines starting with
670';' or '#' are ignored.
f8a94f0d
DD
671If em(FILE) is bf(-) the list will be read from standard input.
672
b5679335 673dit(bf(--include=PATTERN)) This option tells rsync to not exclude the
43bd68e5
AT
674specified pattern of filenames. This is useful as it allows you to
675build up quite complex exclude/include rules.
676
d1cce1dd 677See the EXCLUDE PATTERNS section for information on the syntax of
43bd68e5
AT
678this option.
679
b5679335 680dit(bf(--include-from=FILE)) This specifies a list of include patterns
43bd68e5 681from a file.
f8a94f0d
DD
682If em(FILE) is bf(-) the list will be read from standard input.
683
f177b7cc
WD
684dit(bf(--files-from=FILE)) Using this option allows you to specify the
685exact list of files to transfer (as read from the specified FILE or "-"
686for stdin). It also tweaks the default behavior of rsync to make
687transferring just the specified files and directories easier. For
688instance, the --relative option is enabled by default when this option
689is used (use --no-relative if you want to turn that off), all
690directories specified in the list are created on the destination (rather
691than being noisily skipped without -r), and the -a (--archive) option's
692behavior does not imply -r (--recursive) -- specify it explicitly, if
693you want it.
694
695The file names that are read from the FILE are all relative to the
696source dir -- any leading slashes are removed and no ".." references are
697allowed to go higher than the source dir. For example, take this
698command:
699
700quote(rsync -a --files-from=/tmp/foo /usr remote:/backup)
701
702If /tmp/foo contains the string "bin" (or even "/bin"), the /usr/bin
703directory will be created as /backup/bin on the remote host (but the
704contents of the /usr/bin dir would not be sent unless you specified -r
705or the names were explicitly listed in /tmp/foo). Also keep in mind
706that the effect of the (enabled by default) --relative option is to
707duplicate only the path info that is read from the file -- it does not
708force the duplication of the source-spec path (/usr in this case).
709
710In addition, the --files-from file can be read from the remote host
711instead of the local host if you specify a "host:" in front of the file
712(the host must match one end of the transfer). As a short-cut, you can
713specify just a prefix of ":" to mean "use the remote end of the
714transfer". For example:
715
716quote(rsync -a --files-from=:/path/file-list src:/ /tmp/copy)
717
718This would copy all the files specified in the /path/file-list file that
719was located on the remote "src" host.
720
721dit(bf(-0, --from0)) This tells rsync that the filenames it reads from a
722file are terminated by a null ('\0') character, not a NL, CR, or CR+LF.
723This affects --exclude-from, --include-from, and --files-from.
41059f75 724
b5679335 725dit(bf(-T, --temp-dir=DIR)) This option instructs rsync to use DIR as a
375a4556 726scratch directory when creating temporary copies of the files
41059f75
AT
727transferred on the receiving side. The default behavior is to create
728the temporary files in the receiving directory.
729
3473b5b4
DD
730dit(bf(--compare-dest=DIR)) This option instructs rsync to use DIR on
731the destination machine as an additional directory to compare destination
d53d7795
DD
732files against when doing transfers if the files are missing in the
733destination directory. This is useful for doing transfers to a new
734destination while leaving existing files intact, and then doing a
3473b5b4
DD
735flash-cutover when all files have been successfully transferred (for
736example by moving directories around and removing the old directory,
d53d7795
DD
737although this skips files that haven't changed; see also --link-dest).
738This option increases the usefulness of --partial because partially
739transferred files will remain in the new temporary destination until they
740have a chance to be completed. If DIR is a relative path, it is relative
741to the destination directory.
375a4556 742
59c95e42
DD
743dit(bf(--link-dest=DIR)) This option behaves like bf(--compare-dest) but
744also will create hard links from em(DIR) to the destination directory for
745unchanged files. Files with changed ownership or permissions will not be
746linked.
d31c09c8
S
747Like bf(--compare-dest) if DIR is a relative path, it is relative
748to the destination directory.
59c95e42 749
41059f75 750dit(bf(-z, --compress)) With this option, rsync compresses any data from
089e73f8 751the files that it sends to the destination machine. This
f39281ae 752option is useful on slow connections. The compression method used is the
41059f75
AT
753same method that gzip uses.
754
755Note this this option typically achieves better compression ratios
756that can be achieved by using a compressing remote shell, or a
757compressing transport, as it takes advantage of the implicit
758information sent for matching data blocks.
759
760dit(bf(--numeric-ids)) With this option rsync will transfer numeric group
761and user ids rather than using user and group names and mapping them
762at both ends.
763
764By default rsync will use the user name and group name to determine
765what ownership to give files. The special uid 0 and the special group
14d43f1f 7660 are never mapped via user/group names even if the --numeric-ids
41059f75
AT
767option is not specified.
768
eb06fa95
MP
769If the source system is a daemon using chroot, or if a user or group
770name does not exist on the destination system, then the numeric id
771from the source system is used instead.
41059f75 772
de2fd20e
AT
773dit(bf(--timeout=TIMEOUT)) This option allows you to set a maximum IO
774timeout in seconds. If no data is transferred for the specified time
775then rsync will exit. The default is 0, which means no timeout.
41059f75 776
eb06fa95
MP
777dit(bf(--daemon)) This tells rsync that it is to run as a daemon. The
778daemon may be accessed using the bf(host::module) or
779bf(rsync://host/module/) syntax.
780
781If standard input is a socket then rsync will assume that it is being
782run via inetd, otherwise it will detach from the current terminal and
783become a background daemon. The daemon will read the config file
30e8c8e1 784(rsyncd.conf) on each connect made by a client and respond to
eb06fa95
MP
785requests accordingly. See the rsyncd.conf(5) man page for more
786details.
41059f75 787
bbd6f4ba
MP
788dit(bf(--no-detach)) When running as a daemon, this option instructs
789rsync to not detach itself and become a background process. This
790option is required when running as a service on Cygwin, and may also
791be useful when rsync is supervised by a program such as
792bf(daemontools) or AIX's bf(System Resource Controller).
793bf(--no-detach) is also recommended when rsync is run under a
794debugger. This option has no effect if rsync is run from inetd or
795sshd.
796
5c9730a4 797dit(bf(--address)) By default rsync will bind to the wildcard address
e30f0657
AT
798when run as a daemon with the --daemon option or when connecting to a
799rsync server. The --address option allows you to specify a specific IP
800address (or hostname) to bind to. This makes virtual hosting possible
801in conjunction with the --config option.
5c9730a4 802
b5679335 803dit(bf(--config=FILE)) This specifies an alternate config file than
30e8c8e1
DD
804the default. This is only relevant when --daemon is specified.
805The default is /etc/rsyncd.conf unless the daemon is running over
806a remote shell program and the remote user is not root; in that case
807the default is rsyncd.conf in the current directory (typically $HOME).
41059f75 808
b5679335 809dit(bf(--port=PORT)) This specifies an alternate TCP port number to use
14d43f1f 810rather than the default port 873.
41059f75 811
735a816e
DD
812dit(bf(--blocking-io)) This tells rsync to use blocking IO when launching
813a remote shell transport. If -e or --rsh are not specified or are set to
814the default "rsh", this defaults to blocking IO, otherwise it defaults to
815non-blocking IO. You may find the --blocking-io option is needed for some
1bbf83c0
WD
816remote shells that can't handle non-blocking IO. (Note that ssh prefers
817non-blocking IO.)
64c704f0 818
93689aa5
DD
819dit(bf(--no-blocking-io)) Turn off --blocking-io, for use when it is the
820default.
821
3a64ad1f 822dit(bf(--log-format=FORMAT)) This allows you to specify exactly what the
14d43f1f 823rsync client logs to stdout on a per-file basis. The log format is
3a64ad1f
DD
824specified using the same format conventions as the log format option in
825rsyncd.conf.
b6062654 826
b72f24c7
AT
827dit(bf(--stats)) This tells rsync to print a verbose set of statistics
828on the file transfer, allowing you to tell how effective the rsync
e19452a9 829algorithm is for your data.
b72f24c7 830
d9fcc198
AT
831dit(bf(--partial)) By default, rsync will delete any partially
832transferred file if the transfer is interrupted. In some circumstances
833it is more desirable to keep partially transferred files. Using the
834--partial option tells rsync to keep the partial file which should
835make a subsequent transfer of the rest of the file much faster.
836
eb86d661
AT
837dit(bf(--progress)) This option tells rsync to print information
838showing the progress of the transfer. This gives a bored user
839something to watch.
e2559dbe 840Implies --verbose without incrementing verbosity.
7b10f91d 841
d9fcc198
AT
842dit(bf(-P)) The -P option is equivalent to --partial --progress. I
843found myself typing that combination quite often so I created an
844option to make it easier.
845
65575e96
AT
846dit(bf(--password-file)) This option allows you to provide a password
847in a file for accessing a remote rsync server. Note that this option
848is only useful when accessing a rsync server using the built in
849transport, not when using a remote shell as the transport. The file
fc7952e7
AT
850must not be world readable. It should contain just the password as a
851single line.
65575e96 852
ef5d23eb
DD
853dit(bf(--bwlimit=KBPS)) This option allows you to specify a maximum
854transfer rate in kilobytes per second. This option is most effective when
855using rsync with large files (several megabytes and up). Due to the nature
856of rsync transfers, blocks of data are sent, then if rsync determines the
857transfer was too fast, it will wait before sending the next data block. The
858result is an average transfer rate equalling the specified limit. A value
859of zero specifies no limit.
860
088aac85
DD
861dit(bf(--write-batch=PREFIX)) Generate a set of files that can be
862transferred as a batch update. Each filename in the set starts with
863PREFIX. See the "BATCH MODE" section for details.
6902ed17 864
088aac85
DD
865dit(bf(--read-batch=PREFIX)) Apply a previously generated change batch,
866using the fileset whose filenames start with PREFIX. See the "BATCH
867MODE" section for details.
6902ed17 868
41059f75
AT
869enddit()
870
43bd68e5
AT
871manpagesection(EXCLUDE PATTERNS)
872
873The exclude and include patterns specified to rsync allow for flexible
14d43f1f 874selection of which files to transfer and which files to skip.
43bd68e5 875
eb06fa95 876rsync builds an ordered list of include/exclude options as specified on
98606687 877the command line. Rsync checks each file and directory
43bd68e5 878name against each exclude/include pattern in turn. The first matching
23489269 879pattern is acted on. If it is an exclude pattern, then that file is
43bd68e5
AT
880skipped. If it is an include pattern then that filename is not
881skipped. If no matching include/exclude pattern is found then the
882filename is not skipped.
883
98606687
S
884The filenames matched against the exclude/include patterns
885are relative to the destination directory, or "top
886directory", so patterns should not include the path elements
887of the source or destination directories. The only way in
888which a pattern will match the absolute path of a file or
889directory is if the source path is the root directory.
d1cce1dd 890
27b9a19b
DD
891Note that when used with -r (which is implied by -a), every subcomponent of
892every path is visited from top down, so include/exclude patterns get
893applied recursively to each subcomponent.
894
895Note also that the --include and --exclude options take one pattern
2fb139c1
AT
896each. To add multiple patterns use the --include-from and
897--exclude-from options or multiple --include and --exclude options.
898
14d43f1f 899The patterns can take several forms. The rules are:
43bd68e5
AT
900
901itemize(
d1cce1dd 902
43bd68e5
AT
903 it() if the pattern starts with a / then it is matched against the
904 start of the filename, otherwise it is matched against the end of
d1cce1dd
S
905 the filename.
906 This is the equivalent of a leading ^ in regular expressions.
98606687 907 Thus "/foo" would match a file called "foo" at the top of the
b7dc46c0 908 transferred tree.
d1cce1dd 909 On the other hand, "foo" would match any file called "foo"
27b9a19b
DD
910 anywhere in the tree because the algorithm is applied recursively from
911 top down; it behaves as if each path component gets a turn at being the
912 end of the file name.
d1cce1dd 913 The leading / does not make the pattern an absolute pathname.
43bd68e5
AT
914
915 it() if the pattern ends with a / then it will only match a
916 directory, not a file, link or device.
917
918 it() if the pattern contains a wildcard character from the set
a8b9d4ed
DD
919 *?[ then expression matching is applied using the shell filename
920 matching rules. Otherwise a simple string match is used.
43bd68e5 921
8a7846f9
WD
922 it() the double asterisk pattern "**" will match slashes while a
923 single asterisk pattern "*" will stop at slashes.
27b9a19b 924
38499c1a
WD
925 it() if the pattern contains a / (not counting a trailing /) or a "**"
926 then it is matched against the full filename, including any leading
927 directory. If the pattern doesn't contain a / or a "**", then it is
928 matched only against the final component of the filename. Again,
929 remember that the algorithm is applied recursively so "full filename" can
8a7846f9 930 actually be any portion of a path below the starting directory.
43bd68e5
AT
931
932 it() if the pattern starts with "+ " (a plus followed by a space)
5a554d5b 933 then it is always considered an include pattern, even if specified as
43bd68e5
AT
934 part of an exclude option. The "+ " part is discarded before matching.
935
936 it() if the pattern starts with "- " (a minus followed by a space)
5a554d5b 937 then it is always considered an exclude pattern, even if specified as
43bd68e5 938 part of an include option. The "- " part is discarded before matching.
de2fd20e
AT
939
940 it() if the pattern is a single exclamation mark ! then the current
eb06fa95 941 include/exclude list is reset, removing all previously defined patterns.
43bd68e5
AT
942)
943
b7dc46c0
WD
944The +/- rules are most useful in a list that was read from a file, allowing
945you to have a single exclude list that contains both include and exclude
946options.
27b9a19b
DD
947
948If you end an exclude list with --exclude '*', note that since the
949algorithm is applied recursively that unless you explicitly include
950parent directories of files you want to include then the algorithm
951will stop at the parent directories and never see the files below
952them. To include all directories, use --include '*/' before the
953--exclude '*'.
43bd68e5 954
328fcf11 955Here are some exclude/include examples:
43bd68e5
AT
956
957itemize(
958 it() --exclude "*.o" would exclude all filenames matching *.o
98606687 959 it() --exclude "/foo" would exclude a file called foo in the top directory
43bd68e5 960 it() --exclude "foo/" would exclude any directory called foo
a8b9d4ed 961 it() --exclude "/foo/*/bar" would exclude any file called bar two
98606687 962 levels below a directory called foo in the top directory
a8b9d4ed 963 it() --exclude "/foo/**/bar" would exclude any file called bar two
98606687 964 or more levels below a directory called foo in the top directory
43bd68e5 965 it() --include "*/" --include "*.c" --exclude "*" would include all
5d5811f7
DD
966 directories and C source files
967 it() --include "foo/" --include "foo/bar.c" --exclude "*" would include
968 only foo/bar.c (the foo/ directory must be explicitly included or
969 it would be excluded by the "*")
43bd68e5
AT
970)
971
6902ed17
MP
972manpagesection(BATCH MODE)
973
2e3c1417 974bf(Note:) Batch mode should be considered experimental in this version
088aac85
DD
975of rsync. The interface or behaviour may change before it stabilizes.
976
977Batch mode can be used to apply the same set of updates to many
978identical systems. Suppose one has a tree which is replicated on a
979number of hosts. Now suppose some changes have been made to this
980source tree and those changes need to be propagated to the other
981hosts. In order to do this using batch mode, rsync is run with the
982write-batch option to apply the changes made to the source tree to one
983of the destination trees. The write-batch option causes the rsync
984client to store the information needed to repeat this operation against
985other destination trees in a batch update fileset (see below). The
986filename of each file in the fileset starts with a prefix specified by
987the user as an argument to the write-batch option. This fileset is
988then copied to each remote host, where rsync is run with the read-batch
989option, again specifying the same prefix, and the destination tree.
990Rsync updates the destination tree using the information stored in the
991batch update fileset.
992
993The fileset consists of 4 files:
2e3c1417 994
088aac85
DD
995itemize(
996it() bf(<prefix>.rsync_argvs) command-line arguments
997it() bf(<prefix>.rsync_flist) rsync internal file metadata
998it() bf(<prefix>.rsync_csums) rsync checksums
999it() bf(<prefix>.rsync_delta) data blocks for file update & change
6902ed17
MP
1000)
1001
088aac85
DD
1002The .rsync_argvs file contains a command-line suitable for updating a
1003destination tree using that batch update fileset. It can be executed
1004using a Bourne(-like) shell, optionally passing in an alternate
1005destination tree pathname which is then used instead of the original
1006path. This is useful when the destination tree path differs from the
1007original destination tree path.
6902ed17 1008
088aac85
DD
1009Generating the batch update fileset once saves having to perform the
1010file status, checksum and data block generation more than once when
1011updating multiple destination trees. Multicast transport protocols can
1012be used to transfer the batch update files in parallel to many hosts at
1013once, instead of sending the same data to every host individually.
1014
1015Example:
1016
1017verb(
8a78bb96 1018$ rsync --write-batch=pfx -a /source/dir/ /adest/dir/
088aac85 1019$ rcp pfx.rsync_* remote:
8a78bb96 1020$ rsh remote rsync --read-batch=pfx -a /bdest/dir/
088aac85
DD
1021# or alternatively
1022$ rsh remote ./pfx.rsync_argvs /bdest/dir/
6902ed17
MP
1023)
1024
088aac85
DD
1025In this example, rsync is used to update /adest/dir/ with /source/dir/
1026and the information to repeat this operation is stored in the files
1027pfx.rsync_*. These files are then copied to the machine named "remote".
1028Rsync is then invoked on "remote" to update /bdest/dir/ the same way as
1029/adest/dir/. The last line shows the rsync_argvs file being used to
1030invoke rsync.
1031
1032Caveats:
1033
1034The read-batch option expects the destination tree it is meant to update
1035to be identical to the destination tree that was used to create the
1036batch update fileset. When a difference between the destination trees
1037is encountered the update will fail at that point, leaving the
1038destination tree in a partially updated state. In that case, rsync can
1039be used in its regular (non-batch) mode of operation to fix up the
1040destination tree.
1041
1042The rsync version used on all destinations should be identical to the
1043one used on the original destination.
1044
1045The -z/--compress option does not work in batch mode and yields a usage
1046error. A separate compression tool can be used instead to reduce the
1047size of the batch update files for transport to the destination.
1048
1049The -n/--dryrun option does not work in batch mode and yields a runtime
1050error.
1051
6902ed17
MP
1052See bf(http://www.ils.unc.edu/i2dsi/unc_rsync+.html) for papers and technical
1053reports.
1054
eb06fa95
MP
1055manpagesection(SYMBOLIC LINKS)
1056
1057Three basic behaviours are possible when rsync encounters a symbolic
1058link in the source directory.
1059
1060By default, symbolic links are not transferred at all. A message
1061"skipping non-regular" file is emitted for any symlinks that exist.
1062
1063If bf(--links) is specified, then symlinks are recreated with the same
1064target on the destination. Note that bf(--archive) implies
1065bf(--links).
1066
1067If bf(--copy-links) is specified, then symlinks are "collapsed" by
1068copying their referent, rather than the symlink.
1069
1070rsync also distinguishes "safe" and "unsafe" symbolic links. An
1071example where this might be used is a web site mirror that wishes
1072ensure the rsync module they copy does not include symbolic links to
1073bf(/etc/passwd) in the public section of the site. Using
1074bf(--copy-unsafe-links) will cause any links to be copied as the file
1075they point to on the destination. Using bf(--safe-links) will cause
1076unsafe links to be ommitted altogether.
1077
7bd0cf5b
MP
1078Symbolic links are considered unsafe if they are absolute symlinks
1079(start with bf(/)), empty, or if they contain enough bf("..")
1080components to ascend from the directory being copied.
1081
d310a212
AT
1082manpagesection(DIAGNOSTICS)
1083
14d43f1f 1084rsync occasionally produces error messages that may seem a little
d310a212
AT
1085cryptic. The one that seems to cause the most confusion is "protocol
1086version mismatch - is your shell clean?".
1087
1088This message is usually caused by your startup scripts or remote shell
1089facility producing unwanted garbage on the stream that rsync is using
14d43f1f 1090for its transport. The way to diagnose this problem is to run your
d310a212
AT
1091remote shell like this:
1092
1093verb(
1094 rsh remotehost /bin/true > out.dat
1095)
1096
1097then look at out.dat. If everything is working correctly then out.dat
2cfeab21 1098should be a zero length file. If you are getting the above error from
d310a212
AT
1099rsync then you will probably find that out.dat contains some text or
1100data. Look at the contents and try to work out what is producing
14d43f1f 1101it. The most common cause is incorrectly configured shell startup
d310a212
AT
1102scripts (such as .cshrc or .profile) that contain output statements
1103for non-interactive logins.
1104
e6c64e79
MP
1105If you are having trouble debugging include and exclude patterns, then
1106try specifying the -vv option. At this level of verbosity rsync will
1107show why each individual file is included or excluded.
1108
55b64e4b
MP
1109manpagesection(EXIT VALUES)
1110
1111startdit()
a73de5f3
WD
1112dit(bf(0)) Success
1113dit(bf(1)) Syntax or usage error
1114dit(bf(2)) Protocol incompatibility
1115dit(bf(3)) Errors selecting input/output files, dirs
1116dit(bf(4)) Requested action not supported: an attempt
8212336a
MP
1117was made to manipulate 64-bit files on a platform that cannot support
1118them; or an option was speciifed that is supported by the client and
1119not by the server.
a73de5f3
WD
1120dit(bf(5)) Error starting client-server protocol
1121dit(bf(10)) Error in socket IO
1122dit(bf(11)) Error in file IO
1123dit(bf(12)) Error in rsync protocol data stream
1124dit(bf(13)) Errors with program diagnostics
1125dit(bf(14)) Error in IPC code
1126dit(bf(20)) Received SIGUSR1 or SIGINT
1127dit(bf(21)) Some error returned by waitpid()
1128dit(bf(22)) Error allocating core memory buffers
1129dit(bf(23)) Partial transfer
1130dit(bf(30)) Timeout in data send/receive
55b64e4b
MP
1131enddit()
1132
de2fd20e
AT
1133manpagesection(ENVIRONMENT VARIABLES)
1134
1135startdit()
1136
1137dit(bf(CVSIGNORE)) The CVSIGNORE environment variable supplements any
1138ignore patterns in .cvsignore files. See the --cvs-exclude option for
1139more details.
1140
1141dit(bf(RSYNC_RSH)) The RSYNC_RSH environment variable allows you to
ea7f8108
WD
1142override the default shell used as the transport for rsync. Command line
1143options are permitted after the command name, just as in the -e option.
de2fd20e 1144
4c3b4b25
AT
1145dit(bf(RSYNC_PROXY)) The RSYNC_PROXY environment variable allows you to
1146redirect your rsync client to use a web proxy when connecting to a
1147rsync daemon. You should set RSYNC_PROXY to a hostname:port pair.
1148
de2fd20e
AT
1149dit(bf(RSYNC_PASSWORD)) Setting RSYNC_PASSWORD to the required
1150password allows you to run authenticated rsync connections to a rsync
1151daemon without user intervention. Note that this does not supply a
1152password to a shell transport such as ssh.
1153
1154dit(bf(USER) or bf(LOGNAME)) The USER or LOGNAME environment variables
1155are used to determine the default username sent to a rsync server.
1156
14d43f1f 1157dit(bf(HOME)) The HOME environment variable is used to find the user's
de2fd20e
AT
1158default .cvsignore file.
1159
1160enddit()
1161
41059f75
AT
1162manpagefiles()
1163
30e8c8e1 1164/etc/rsyncd.conf or rsyncd.conf
41059f75
AT
1165
1166manpageseealso()
1167
1168rsyncd.conf(5)
1169
1170manpagediagnostics()
1171
1172manpagebugs()
1173
1174times are transferred as unix time_t values
1175
38843171
DD
1176When transferring to FAT filesystmes rsync may resync
1177unmodified files.
1178See the comments on the --modify-window option.
1179
41059f75
AT
1180file permissions, devices etc are transferred as native numerical
1181values
1182
a87b3b2a 1183see also the comments on the --delete option
41059f75 1184
38843171
DD
1185Please report bugs! See the website at
1186url(http://rsync.samba.org/)(http://rsync.samba.org/)
41059f75
AT
1187
1188manpagesection(CREDITS)
1189
1190rsync is distributed under the GNU public license. See the file
1191COPYING for details.
1192
41059f75 1193A WEB site is available at
3cd5eb3b
MP
1194url(http://rsync.samba.org/)(http://rsync.samba.org/). The site
1195includes an FAQ-O-Matic which may cover questions unanswered by this
1196manual page.
9e3c856a
AT
1197
1198The primary ftp site for rsync is
1199url(ftp://rsync.samba.org/pub/rsync)(ftp://rsync.samba.org/pub/rsync).
41059f75
AT
1200
1201We would be delighted to hear from you if you like this program.
1202
9e3c856a
AT
1203This program uses the excellent zlib compression library written by
1204Jean-loup Gailly and Mark Adler.
41059f75
AT
1205
1206manpagesection(THANKS)
1207
1208Thanks to Richard Brent, Brendan Mackay, Bill Waite, Stephen Rothwell
7ff701e8
MP
1209and David Bell for helpful suggestions, patches and testing of rsync.
1210I've probably missed some people, my apologies if I have.
1211
1212Especial thanks also to: David Dykstra, Jos Backus, Sebastian Krahmer.
41059f75
AT
1213
1214
1215manpageauthor()
1216
7ff701e8
MP
1217rsync was written by Andrew Tridgell <tridge@samba.org> and Paul
1218Mackerras.
3cd5eb3b 1219
7ff701e8 1220rsync is now maintained by Martin Pool <mbp@samba.org>.
3cd5eb3b 1221
a5d74a18 1222Mailing lists for support and development are available at
7ff701e8
MP
1223url(http://lists.samba.org)(lists.samba.org)
1224
1225If you suspect you have found a security vulnerability in rsync,
1226please send it directly to Martin Pool and Andrew Tridgell. For other
1227enquiries, please use the mailing list.