mirror of
https://github.com/RsyncProject/rsync.git
synced 2026-02-25 19:06:03 -05:00
More man page and NEWS improvements.
- Add link targets for all option choices, not just the first one. - Tweak cross-link arg format. - Add more links, including some in the latest NEWS. - Split out a few numbered lists.
This commit is contained in:
199
NEWS.md
199
NEWS.md
@@ -6,20 +6,21 @@
|
||||
### BEHAVIOR CHANGES:
|
||||
|
||||
- A new form of arg protection was added that works similarly to the older
|
||||
`--protect-args` (`-s`) option but in a way that avoids breaking things like
|
||||
rrsync (the restricted rsync script): rsync now uses backslash escaping for
|
||||
sending "shell-active" characters to the remote shell. This includes spaces,
|
||||
so fetching a remote file via a simple quoted filename value now works by
|
||||
default without any extra quoting:
|
||||
[`--protect-args`](rsync.1#opt) (`-s`) option but in a way that avoids
|
||||
breaking things like rrsync (the restricted rsync script): rsync now uses
|
||||
backslash escaping for sending "shell-active" characters to the remote
|
||||
shell. This includes spaces, so fetching a remote file via a simple quoted
|
||||
filename value now works by default without any extra quoting:
|
||||
|
||||
```shell
|
||||
rsync -aiv host:'a simple file.pdf' .
|
||||
```
|
||||
|
||||
Wildcards are not escaped in filename args, but they are escaped in options
|
||||
like the `--suffix` and `--usermap` values. If your rsync script depends on
|
||||
the old arg-splitting behavior, either run it with the `--old-args` option
|
||||
or `export RSYNC_OLD_ARGS=1` in the script's environment.
|
||||
like the [`--suffix`](rsync.1#opt) and [`--usermap`](rsync.1#opt) values.
|
||||
If your rsync script depends on the old arg-splitting behavior, either run
|
||||
it with the [`--old-args`](rsync.1#opt) option or `export RSYNC_OLD_ARGS=1`
|
||||
in the script's environment.
|
||||
|
||||
- A long-standing bug was preventing rsync from figuring out the current
|
||||
locale's decimal point character, which made rsync always output numbers
|
||||
@@ -45,62 +46,66 @@
|
||||
|
||||
### BUG FIXES:
|
||||
|
||||
- Fixed a bug with `--inplace` + `--sparse` (and a lack of `--whole-file`)
|
||||
where the destination file could get reconstructed with bogus data. Since
|
||||
the bug can also be avoided by using (the seemingly redundant) `--no-W` on
|
||||
the receiving side, the latest rsync will now send `--no-W` to a remote
|
||||
receiver when this option combination occurs. If your client rsync is not
|
||||
new enough to do this for you (or if you're just paranoid), you can manually
|
||||
specify `--no-W -M--no-W` (when not using `--whole-file`) to make sure the
|
||||
- Fixed a bug with [`--inplace`](rsync.1#opt) + [`--sparse`](rsync.1#opt) (and
|
||||
a lack of [`--whole-file`](rsync.1#opt)) where the destination file could
|
||||
get reconstructed with bogus data. Since the bug can also be avoided by
|
||||
using (the seemingly redundant) [`--no-W`](rsync.1#opt) on the receiving
|
||||
side, the latest rsync will now send `--no-W` to a remote receiver when this
|
||||
option combination occurs. If your client rsync is not new enough to do
|
||||
this for you (or if you're just paranoid), you can manually specify `--no-W
|
||||
-M--no-W` (when not using [`--whole-file`](rsync.1#opt)) to make sure the
|
||||
bug is avoided.
|
||||
|
||||
- Fixed a bug with `--mkpath` if a single-file copy specifies an existing
|
||||
destination dir with a non-existing destination filename.
|
||||
- Fixed a bug with [`--mkpath`](rsync.1#opt) if a single-file copy specifies
|
||||
an existing destination dir with a non-existing destination filename.
|
||||
|
||||
- Fixed `--update -vv` to output "is uptodate" instead of "is newer" messages
|
||||
for files that are being skipped due to an identical modify time. (This
|
||||
was a new output quirk in 3.2.3.)
|
||||
for files that are being skipped due to an identical modify time. (This was
|
||||
a new output quirk in 3.2.3.)
|
||||
|
||||
- When doing an append transfer, the sending side's file must not get shorter
|
||||
or it is skipped. Fixes a crash that could occur when the size changes to 0
|
||||
in the middle of the send negotiations.
|
||||
|
||||
- When dealing with special files (see `--specials`) in an alt-dest hierarchy,
|
||||
rsync now checks the non-permission mode bits to ensure that the 2 special
|
||||
files are really the same before hard-linking them together.
|
||||
- When dealing with special files (see [`--specials`](rsync.1#opt)) in an
|
||||
alt-dest hierarchy, rsync now checks the non-permission mode bits to ensure
|
||||
that the 2 special files are really the same before hard-linking them
|
||||
together.
|
||||
|
||||
- Fixed a bug where `--delay-updates` with stale partial data could cause a
|
||||
file to fail to update.
|
||||
- Fixed a bug where [`--delay-updates`](rsync.1#opt) with stale partial data
|
||||
could cause a file to fail to update.
|
||||
|
||||
- Fixed a few places that would output an INFO message with `--info=NAME` that
|
||||
should only have been output given `--verbose` or `--itemize-changes`.
|
||||
- Fixed a few places that would output an INFO message with
|
||||
[`--info=NAME`](rsync.1#opt) that should only have been output given
|
||||
[`--verbose`](rsync.1#opt) or [`--itemize-changes`](rsync.1#opt).
|
||||
|
||||
- Avoid a weird failure if you run a local copy with a (useless) `--rsh`
|
||||
option that contains a `V` in the command.
|
||||
- Avoid a weird failure if you run a local copy with a (useless)
|
||||
[`--rsh`](rsync.1#opt) option that contains a `V` in the command.
|
||||
|
||||
- Fixed a long-standing compression bug where the compression level of the
|
||||
first file transferred affected the level for all future files. Also, the
|
||||
per-file compression skipping has apparently never worked, so it is now
|
||||
documented as being ineffective.
|
||||
|
||||
- Improved how the `--stop-at`, `--stop-after`, and `--time-limit` options
|
||||
check to see if the allowed time is over, which should make rsync exit more
|
||||
consistently.
|
||||
- Improved how the [`--stop-at`](rsync.1#opt), [`--stop-after`](rsync.1#opt),
|
||||
and (the deprecated) [`--time-limit`](rsync.1#opt) options check to see if
|
||||
the allowed time is over, which should make rsync exit more consistently.
|
||||
|
||||
- Tweak --progress to display "??:??:??" when the time-remaining value is
|
||||
so large as to be meaningless.
|
||||
- Tweak --progress to display "`??:??:??`" when the time-remaining value is so
|
||||
large as to be meaningless.
|
||||
|
||||
### ENHANCEMENTS:
|
||||
|
||||
- Use openssl's `-verify_hostname` option in the rsync-ssl script.
|
||||
|
||||
- Added extra info to the "FILENAME exists" output of `--ignore-existing` when
|
||||
`--info=skip2` is used. The skip message becomes "FILENAME exists (INFO)"
|
||||
where the INFO is one of "type change", "sum change" (requires `-c`), "file
|
||||
change" (based on the quick check), "attr change", or "uptodate". Prior
|
||||
versions only supported `--info=skip1`.
|
||||
- Added extra info to the "FILENAME exists" output of
|
||||
[`--ignore-existing`](rsync.1#opt) when [`--info=skip2`](rsync.1#opt) is
|
||||
used. The skip message becomes "FILENAME exists (INFO)" where the INFO is
|
||||
one of "type change", "sum change" (requires [`--checksum`](rsync.1#opt)),
|
||||
"file change" (based on the quick check), "attr change", or "uptodate".
|
||||
Prior versions only supported `--info=skip1`.
|
||||
|
||||
- Added the `--fsync` option (promoted from the patches repo).
|
||||
- Added the [`--fsync`](rsync.1#opt) option (promoted from the patches repo).
|
||||
|
||||
- Reduced memory usage for an incremental transfer that has a bunch of small
|
||||
directories.
|
||||
@@ -108,37 +113,42 @@
|
||||
- The rsync daemon can now handle a client address with an implied "%scope"
|
||||
suffix.
|
||||
|
||||
- Added support for `--atimes` on macOS and fixed a bug where it wouldn't work
|
||||
without `--times`.
|
||||
- Added support for [`--atimes`](rsync.1#opt) on macOS and fixed a bug where
|
||||
it wouldn't work without [`--times`](rsync.1#opt).
|
||||
|
||||
- Rsync can now update the xattrs on a read-only file when your user can
|
||||
temporarily add user-write permission to the file. (It always worked for a
|
||||
root transfer.)
|
||||
|
||||
- Rsync can now work around an `--inplace` update of a file that is being
|
||||
refused due to the Linux fs.protected_regular sysctl setting.
|
||||
- Rsync can now work around an [`--inplace`](rsync.1#opt) update of a file
|
||||
that is being refused due to the Linux fs.protected_regular sysctl setting.
|
||||
|
||||
- When `--chown`, `--usermap`, or `--groupmap` is specified, rsync now makes
|
||||
sure that the appropriate `--owner` and/or `--group` option is enabled.
|
||||
- When [`--chown`](rsync.1#opt), [`--usermap`](rsync.1#opt), or
|
||||
[`--groupmap`](rsync.1#opt), is specified, rsync now makes sure that the
|
||||
appropriate [`--owner`](rsync.1#opt) and/or [`--group`](rsync.1#opt) options
|
||||
are enabled.
|
||||
|
||||
- Added the `--info=NONREG` setting to control if rsync should warn about
|
||||
non-regular files in the transfer. This is enabled by default (keeping the
|
||||
behavior the same as before), so specifying `--info=nonreg0` can be used to
|
||||
turn the warnings off.
|
||||
- Added the [`--info=NONREG`](rsync.1#opt) setting to control if rsync should
|
||||
warn about non-regular files in the transfer. This is enabled by default
|
||||
(keeping the behavior the same as before), so specifying `--info=nonreg0`
|
||||
can be used to turn the warnings off.
|
||||
|
||||
- More ASM optimizations from Shark64.
|
||||
|
||||
- Transformed rrsync into a python script with improvements:
|
||||
- Security has been beefed up.
|
||||
- The known rsync options were updated to include recent additions.
|
||||
- Make rrsync reject `-L`, `-K`, & `-k` by default to make it harder to
|
||||
- Make rrsync reject [`--copy-links`](rsync.1#opt) (`-L`),
|
||||
[`--copy-dirlinks`](rsync.1#opt) (`-k`), &
|
||||
[`--keep-dirlinks`](rsync.1#opt) (`-K`) by default to make it harder to
|
||||
exploit any out-of-subdir symlinks.
|
||||
- A new rrsync option of `-munge` tells rrsync to always enable rsync's
|
||||
`--munge-links` option on the server side.
|
||||
- A new rrsync option of `-no-lock` disables a new single-use locking idiom
|
||||
that is the default when `-ro` is not used (useful with `-munge`).
|
||||
- A new rrsync option of `-no-del` disables all `--remove*` and `--delete*`
|
||||
options on the server side.
|
||||
- A new rrsync option of [`-munge`](rrsync.1#opt) tells rrsync to always
|
||||
enable rsync's [`--munge-links`](rsync.1#opt) option on the server side.
|
||||
- A new rrsync option of [`-no-lock`](rrsync.1#opt) disables a new
|
||||
single-use locking idiom that is the default when [`-ro`](rrsync.1#opt) is
|
||||
not used (useful with [`-munge`](rrsync.1#opt)).
|
||||
- A new rrsync option of [`-no-del`](rrsync.1#opt) disables all `--remove*`
|
||||
and `--delete*` rsync options on the server side.
|
||||
- The log format has been tweaked slightly to add seconds to the timestamp
|
||||
and to output the command executed as a tuple (making the args clearer).
|
||||
- An rrsync.1 man page was added (in the support dir with rrsync).
|
||||
@@ -226,65 +236,70 @@
|
||||
- Fixed a bug in the xattr code that was not leaving room for the "rsync."
|
||||
prefix in some instances where it needed to be added.
|
||||
|
||||
- Restored the ability to use `--bwlimit=0` to specify no bandwidth limit. (It
|
||||
was accidentally broken in 3.2.2.)
|
||||
- Restored the ability to use [`--bwlimit=0`](rsync.1#opt) to specify no
|
||||
bandwidth limit. (It was accidentally broken in 3.2.2.)
|
||||
|
||||
- Fixed a bug when combining `--delete-missing-args` with `--no-implied-dirs` &
|
||||
`-R` where rsync might create the destination path of a missing arg. The
|
||||
code also avoids some superfluous warnings for nested paths of removed args.
|
||||
- Fixed a bug when combining [`--delete-missing-args`](rsync.1#opt) with
|
||||
[`--no-implied-dirs`](rsync.1#opt) & [`-R`](rsync.1#opt) where rsync might
|
||||
create the destination path of a missing arg. The code also avoids some
|
||||
superfluous warnings for nested paths of removed args.
|
||||
|
||||
- Fixed an issue where hard-linked devices could cause the rdev_major value to
|
||||
get out of sync between the sender and the receiver, which could cause a
|
||||
device to get created with the wrong major value in its major,minor pair.
|
||||
|
||||
- Rsync now complains about a missing `--temp-dir` before starting any file
|
||||
transfers.
|
||||
- Rsync now complains about a missing [`--temp-dir`](rsync.1#opt) before
|
||||
starting any file transfers.
|
||||
|
||||
- A completely empty source arg is now a fatal error. This doesn't change
|
||||
the handling of implied dot-dir args such as "localhost:" and such.
|
||||
|
||||
### ENHANCEMENTS:
|
||||
|
||||
- Allow `--max-alloc=0` to specify no limit to the alloc sanity check.
|
||||
- Allow [`--max-alloc=0`](rsync.1#opt) to specify no limit to the alloc sanity
|
||||
check.
|
||||
|
||||
- Allow `--block-size=SIZE` to specify the size using units (e.g. "100K").
|
||||
- Allow [`--block-size=SIZE`](rsync.1#opt) to specify the size using units
|
||||
(e.g. "100K").
|
||||
|
||||
- The name of the id-0 user & group are now sent to the receiver along with
|
||||
the other user/group names in the transfer (instead of assuming that both
|
||||
sides have the same id-0 names).
|
||||
|
||||
- Added the `--stop-after=MINS` and `--stop-at=DATE_TIME` options (with the
|
||||
`--time-limit=MINS` option accepted as an alias for `--stop-after`). This
|
||||
is an enhanced version of the time-limit patch from the patches repo.
|
||||
- Added the [`--stop-after`](rsync.1#opt) and [`--stop-at`](rsync.1#opt)
|
||||
options (with a [`--time-limit`](rsync.1#opt) alias for `--stop-after`).
|
||||
This is an enhanced version of the time-limit patch from the patches repo.
|
||||
|
||||
- Added the `name converter` daemon parameter to make it easier to convert
|
||||
user & group names inside a chrooted daemon module. This is based on the
|
||||
nameconverter patch with some improvements, including a tweak to the request
|
||||
protocol (so if you used this patch in the past, be sure to update your
|
||||
converter script to use newlines instead of null chars).
|
||||
- Added the [`name converter`](rsyncd.conf.5#opt) daemon parameter to make it
|
||||
easier to convert user & group names inside a chrooted daemon module. This
|
||||
is based on the nameconverter patch with some improvements, including a
|
||||
tweak to the request protocol (so if you used this patch in the past, be
|
||||
sure to update your converter script to use newlines instead of null chars).
|
||||
|
||||
- Added `--crtimes` (`-N`) option for preserving the file's create time (I
|
||||
believe that this is macOS only at the moment).
|
||||
- Added [`--crtimes`](rsync.1#opt) (`-N`) option for preserving the file's
|
||||
create time (I believe that this is macOS only at the moment).
|
||||
|
||||
- Added `--mkpath` option to tell rsync that it should create a non-existing
|
||||
path component of the destination arg.
|
||||
- Added [`--mkpath`](rsync.1#opt) option to tell rsync that it should create a
|
||||
non-existing path component of the destination arg.
|
||||
|
||||
- Added `--stderr=errors|all|client` to replace the `--msgs2stderr` and
|
||||
`--no-msgs2stderr` options (which are still accepted). The default use of
|
||||
stderr was changed to be `--stderr=errors` where all the processes that have
|
||||
stderr available output directly to stderr, which should help error messages
|
||||
get to the user more quickly, especially when doing a push (which includes
|
||||
local copying). This also allows rsync to exit quickly when a receiver
|
||||
failure occurs, since rsync doesn't need to try to keep the connection alive
|
||||
long enough for the fatal error to go from the receiver to the generator to
|
||||
the sender. The old default can be requested via `--stderr=client`. Also
|
||||
changed is that a non-default stderr mode is conveyed to the remote rsync
|
||||
(using the older option names) instead of requiring the user to use
|
||||
`--remote-option` (`-M`) to tell the remote rsync what to do.
|
||||
- Added [`--stderr=errors|all|client`](rsync.1#opt) to replace the
|
||||
`--msgs2stderr` and `--no-msgs2stderr` options (which are still accepted).
|
||||
The default use of stderr was changed to be `--stderr=errors` where all the
|
||||
processes that have stderr available output directly to stderr, which should
|
||||
help error messages get to the user more quickly, especially when doing a
|
||||
push (which includes local copying). This also allows rsync to exit quickly
|
||||
when a receiver failure occurs, since rsync doesn't need to try to keep the
|
||||
connection alive long enough for the fatal error to go from the receiver to
|
||||
the generator to the sender. The old default can be requested via
|
||||
`--stderr=client`. Also changed is that a non-default stderr mode is
|
||||
conveyed to the remote rsync (using the older option names) instead of
|
||||
requiring the user to use [`--remote-option`](rsync.1#opt) (`-M`) to tell
|
||||
the remote rsync what to do.
|
||||
|
||||
- Added the ability to specify "@netgroup" names to the `hosts allow` and
|
||||
`hosts deny` daemon parameters. This is a finalized version of the
|
||||
netgroup-auth patch from the patches repo.
|
||||
- Added the ability to specify "@netgroup" names to the [`hosts
|
||||
allow`](rsyncd.conf.5#opt) and [`hosts deny`](rsyncd.conf.5#opt) daemon
|
||||
parameters. This is a finalized version of the netgroup-auth patch from the
|
||||
patches repo.
|
||||
|
||||
- Rsync can now hard-link symlinks on FreeBSD due to it making use of the
|
||||
linkat() function when it is available.
|
||||
|
||||
81
md-convert
81
md-convert
@@ -32,6 +32,8 @@
|
||||
import os, sys, re, argparse, subprocess, time
|
||||
from html.parser import HTMLParser
|
||||
|
||||
VALID_PAGES = 'README INSTALL COPYING rsync.1 rrsync.1 rsync-ssl.1 rsyncd.conf.5'.split()
|
||||
|
||||
CONSUMES_TXT = set('h1 h2 h3 p li pre'.split())
|
||||
|
||||
HTML_START = """\
|
||||
@@ -120,7 +122,7 @@ BIN_CHARS_RE = re.compile(r'[\1-\7]+')
|
||||
SPACE_DOUBLE_DASH_RE = re.compile(r'\s--(\s)')
|
||||
NON_SPACE_SINGLE_DASH_RE = re.compile(r'(^|\W)-')
|
||||
WHITESPACE_RE = re.compile(r'\s')
|
||||
CODE_BLOCK_RE = re.compile(r'[%s](.+?)[=%s].*' % (BOLD_FONT[0], NORM_FONT[0]))
|
||||
CODE_BLOCK_RE = re.compile(r'[%s]([^=%s]+)[=%s]' % (BOLD_FONT[0], NORM_FONT[0], NORM_FONT[0]))
|
||||
NBR_DASH_RE = re.compile(r'[%s]' % NBR_DASH[0])
|
||||
INVALID_TARGET_CHARS_RE = re.compile(r'[^-A-Za-z0-9._]')
|
||||
INVALID_START_CHAR_RE = re.compile(r'^([^A-Za-z0-9])')
|
||||
@@ -148,7 +150,7 @@ def parse_md_file(mdfn):
|
||||
if fi.want_manpage:
|
||||
fi.title = fi.prog + '(' + fi.sect + ') man page'
|
||||
else:
|
||||
fi.title = fi.prog
|
||||
fi.title = fi.prog + ' for rsync'
|
||||
|
||||
if fi.want_manpage:
|
||||
if not env_subs:
|
||||
@@ -268,7 +270,7 @@ class TransformHtml(HTMLParser):
|
||||
derived_hashtags = set(),
|
||||
referenced_hashtags = set(),
|
||||
bad_hashtags = set(),
|
||||
prior_target = None,
|
||||
latest_targets = [ ],
|
||||
opt_prefix = 'opt',
|
||||
a_txt_start = None,
|
||||
target_suf = '',
|
||||
@@ -294,11 +296,11 @@ class TransformHtml(HTMLParser):
|
||||
fi.man_out = ''.join(st.man_out)
|
||||
st.man_out = None
|
||||
|
||||
for href, txt in st.derived_hashtags:
|
||||
derived = txt2target(txt, href[1:])
|
||||
for tgt, txt in st.derived_hashtags:
|
||||
derived = txt2target(txt, tgt)
|
||||
if derived not in st.created_hashtags:
|
||||
txt = BIN_CHARS_RE.sub('', txt.replace(NBR_DASH[0], '-').replace(NBR_SPACE[0], ' '))
|
||||
warn('Unknown derived hashtag link in', self.fn, 'based on:', (href, txt))
|
||||
warn('Unknown derived hashtag link in', self.fn, 'based on:', (tgt, txt))
|
||||
|
||||
for bad in st.bad_hashtags:
|
||||
if bad in st.created_hashtags:
|
||||
@@ -380,13 +382,19 @@ class TransformHtml(HTMLParser):
|
||||
st.a_href = None
|
||||
for var, val in attrs_list:
|
||||
if var == 'href':
|
||||
if val in ('#', '#opt', '#daemon-opt'):
|
||||
st.a_href = val
|
||||
elif val.startswith('#'):
|
||||
st.referenced_hashtags.add(val[1:])
|
||||
if val[1:] == st.prior_target:
|
||||
warn('Found link to the current section in', self.fn + ':', val)
|
||||
elif not val.startswith(('https://', 'http://', 'mailto:', 'ftp:', './')):
|
||||
if val.startswith(('https://', 'http://', 'mailto:', 'ftp:')):
|
||||
pass # nothing to check
|
||||
elif '#' in val:
|
||||
pg, tgt = val.split('#', 2)
|
||||
if pg and pg not in VALID_PAGES or '#' in tgt:
|
||||
st.bad_hashtags.add(val)
|
||||
elif tgt in ('', 'opt', 'dopt'):
|
||||
st.a_href = val
|
||||
elif pg == '':
|
||||
st.referenced_hashtags.add(tgt)
|
||||
if tgt in st.latest_targets:
|
||||
warn('Found link to the current section in', self.fn + ':', val)
|
||||
elif val not in VALID_PAGES:
|
||||
st.bad_hashtags.add(val)
|
||||
st.a_txt_start = len(st.txt)
|
||||
st.html_out.append('<' + tag + ''.join(' ' + var + '="' + htmlify(val) + '"' for var, val in attrs_list) + '>')
|
||||
@@ -411,20 +419,20 @@ class TransformHtml(HTMLParser):
|
||||
if m:
|
||||
tgt = m.group(1)
|
||||
st.target_suf = '-' + tgt
|
||||
self.add_target(tgt)
|
||||
self.add_targets(tgt)
|
||||
elif tag == 'h2':
|
||||
st.man_out.append(st.p_macro + '.SH "' + manify(txt) + '"\n')
|
||||
self.add_target(txt, st.target_suf)
|
||||
st.opt_prefix = 'daemon-opt' if txt == 'DAEMON OPTIONS' else 'opt'
|
||||
self.add_targets(txt, st.target_suf)
|
||||
st.opt_prefix = 'dopt' if txt == 'DAEMON OPTIONS' else 'opt'
|
||||
elif tag == 'h3':
|
||||
st.man_out.append(st.p_macro + '.SS "' + manify(txt) + '"\n')
|
||||
self.add_target(txt, st.target_suf)
|
||||
self.add_targets(txt, st.target_suf)
|
||||
elif tag == 'p':
|
||||
if st.dt_from == 'p':
|
||||
tag = 'dt'
|
||||
st.man_out.append('.IP "' + manify(txt) + '"\n')
|
||||
if txt.startswith(BOLD_FONT[0]):
|
||||
self.add_target(txt)
|
||||
self.add_targets(txt)
|
||||
st.dt_from = None
|
||||
elif txt != '':
|
||||
st.man_out.append(manify(txt) + "\n")
|
||||
@@ -466,11 +474,13 @@ class TransformHtml(HTMLParser):
|
||||
find = 'href="' + st.a_href + '"'
|
||||
for j in range(len(st.html_out)-1, 0, -1):
|
||||
if find in st.html_out[j]:
|
||||
derived = txt2target(atxt, st.a_href[1:])
|
||||
if derived == st.prior_target:
|
||||
warn('Found link to the current section in', self.fn + ':', derived)
|
||||
st.derived_hashtags.add((st.a_href, atxt))
|
||||
st.html_out[j] = st.html_out[j].replace(find, 'href="#' + derived + '"')
|
||||
pg, tgt = st.a_href.split('#', 2)
|
||||
derived = txt2target(atxt, tgt)
|
||||
if pg == '':
|
||||
if derived in st.latest_targets:
|
||||
warn('Found link to the current section in', self.fn + ':', st.a_href)
|
||||
st.derived_hashtags.add((tgt, atxt))
|
||||
st.html_out[j] = st.html_out[j].replace(find, 'href="' + pg + '#' + derived + '"')
|
||||
break
|
||||
else:
|
||||
die('INTERNAL ERROR: failed to find href in html data:', find)
|
||||
@@ -509,10 +519,16 @@ class TransformHtml(HTMLParser):
|
||||
st.txt += txt
|
||||
|
||||
|
||||
def add_target(self, txt, suf=None):
|
||||
def add_targets(self, txt, suf=None):
|
||||
st = self.state
|
||||
txt = txt2target(txt, st.opt_prefix)
|
||||
if txt:
|
||||
targets = CODE_BLOCK_RE.findall(txt)
|
||||
if not targets:
|
||||
targets = [ txt ]
|
||||
first_one = True
|
||||
for txt in targets:
|
||||
txt = txt2target(txt, st.opt_prefix)
|
||||
if not txt:
|
||||
continue
|
||||
if suf:
|
||||
txt += suf
|
||||
if txt in st.created_hashtags:
|
||||
@@ -522,9 +538,13 @@ class TransformHtml(HTMLParser):
|
||||
print('Made link target unique:', chk)
|
||||
txt = chk
|
||||
break
|
||||
st.html_out.append('<a id="' + txt + '" href="#' + txt + '" class="tgt"></a>')
|
||||
if first_one:
|
||||
st.html_out.append('<a id="' + txt + '" href="#' + txt + '" class="tgt"></a>')
|
||||
first_one = False
|
||||
else:
|
||||
st.html_out.append('<span id="' + txt + '"></span>')
|
||||
st.created_hashtags.add(txt)
|
||||
st.prior_target = txt
|
||||
st.latest_targets = targets
|
||||
|
||||
|
||||
def output_debug(self, event, extra):
|
||||
@@ -541,7 +561,10 @@ class TransformHtml(HTMLParser):
|
||||
|
||||
|
||||
def txt2target(txt, opt_prefix):
|
||||
txt = CODE_BLOCK_RE.sub(r'\1', txt.strip().rstrip(':'))
|
||||
txt = txt.strip().rstrip(':')
|
||||
m = CODE_BLOCK_RE.search(txt)
|
||||
if m:
|
||||
txt = m.group(1)
|
||||
txt = NBR_DASH_RE.sub('-', txt)
|
||||
txt = BIN_CHARS_RE.sub('', txt)
|
||||
txt = INVALID_TARGET_CHARS_RE.sub('_', txt)
|
||||
|
||||
@@ -96,7 +96,7 @@ The ssl helper scripts are affected by the following environment variables:
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
[**rsync**(1)](./rsync.1), [**rsyncd.conf**(5)](./rsyncd.conf.5)
|
||||
[**rsync**(1)](rsync.1), [**rsyncd.conf**(5)](rsyncd.conf.5)
|
||||
|
||||
## CAVEATS
|
||||
|
||||
@@ -122,7 +122,7 @@ This man page is current for version @VERSION@ of rsync.
|
||||
## CREDITS
|
||||
|
||||
Rsync is distributed under the GNU General Public License. See the file
|
||||
[COPYING](./COPYING) for details.
|
||||
[COPYING](COPYING) for details.
|
||||
|
||||
A web site is available at <https://rsync.samba.org/>. The site includes an
|
||||
FAQ-O-Matic which may cover questions unanswered by this manual page.
|
||||
|
||||
241
rsync.1.md
241
rsync.1.md
@@ -92,7 +92,7 @@ protocol). For remote transfers, a modern rsync uses ssh for its
|
||||
communications, but it may have been configured to use a different remote shell
|
||||
by default, such as rsh or remsh.
|
||||
|
||||
You can also specify any remote shell you like, either by using the [`-e`](#opt--rsh)
|
||||
You can also specify any remote shell you like, either by using the [`-e`](#opt)
|
||||
command line option, or by setting the RSYNC_RSH environment variable.
|
||||
|
||||
Note that rsync must be installed on both the source and destination machines.
|
||||
@@ -270,7 +270,7 @@ In order to connect to an rsync daemon, the remote system needs to have a
|
||||
daemon already running (or it needs to have configured something like inetd to
|
||||
spawn an rsync daemon for incoming connections on a particular port). For full
|
||||
information on how to start a daemon that will handling incoming socket
|
||||
connections, see the [**rsyncd.conf**(5)](./rsyncd.conf.5) man page -- that is
|
||||
connections, see the [**rsyncd.conf**(5)](rsyncd.conf.5) man page -- that is
|
||||
the config file for the daemon, and it contains the full details for how to run
|
||||
the daemon (including stand-alone and inetd configurations).
|
||||
|
||||
@@ -512,11 +512,11 @@ your home directory (remove the '=' for that).
|
||||
|
||||
[comment]: # (An OL starting at 0 is converted into a DL by the parser.)
|
||||
|
||||
0. `--help`, `-h` `(*)`
|
||||
0. `--help`
|
||||
|
||||
Print a short help page describing the options available in rsync and exit.
|
||||
(*) The `-h` short option will only invoke `--help` when used without other
|
||||
options since it normally means [`--human-readable`](#opt).
|
||||
You can also use `-h` for `--help` when it is used without any other
|
||||
options (since it normally means [`--human-readable`](#opt)).
|
||||
|
||||
0. `--version`, `-V`
|
||||
|
||||
@@ -734,28 +734,28 @@ your home directory (remove the '=' for that).
|
||||
crtimes (`-N`), nor the finding and preserving of hardlinks (`-H`).
|
||||
|
||||
The only exception to the above equivalence is when [`--files-from`](#opt)
|
||||
is specified, in which case [`-r`](#opt--recursive) is not implied.
|
||||
is specified, in which case [`-r`](#opt) is not implied.
|
||||
|
||||
0. `--no-OPTION`
|
||||
|
||||
You may turn off one or more implied options by prefixing the option name
|
||||
with "no-". Not all options may be prefixed with a "no-": only options that
|
||||
are implied by other options (e.g. `--no-D`, `--no-perms`) or have
|
||||
different defaults in various circumstances (e.g. `--no-whole-file`,
|
||||
`--no-blocking-io`, `--no-dirs`). You may specify either the short or the
|
||||
long option name after the "no-" prefix (e.g. `--no-R` is the same as
|
||||
`--no-relative`).
|
||||
with "no-". Not all positive options have a negated opposite, but a lot
|
||||
do, including those that can be used to disable an implied option (e.g.
|
||||
`--no-D`, `--no-perms`) or have different defaults in various circumstances
|
||||
(e.g. [`--no-whole-file`](#opt), `--no-blocking-io`, `--no-dirs`). Every
|
||||
valid negated option accepts both the short and the long option name after
|
||||
the "no-" prefix (e.g. `--no-R` is the same as `--no-relative`).
|
||||
|
||||
For example: if you want to use [`--archive`](#opt) (`-a`) but don't want
|
||||
As an example, if you want to use [`--archive`](#opt) (`-a`) but don't want
|
||||
[`--owner`](#opt) (`-o`), instead of converting `-a` into `-rlptgD`, you
|
||||
could specify `-a --no-o` (or `-a --no-owner`).
|
||||
can specify `-a --no-o` (aka `--archive --no-owner`).
|
||||
|
||||
The order of the options is important: if you specify `--no-r -a`, the `-r`
|
||||
option would end up being turned on, the opposite of `-a --no-r`. Note
|
||||
also that the side-effects of the [`--files-from`](#opt) option are NOT
|
||||
positional, as it affects the default state of several options and slightly
|
||||
changes the meaning of [`-a`](#opt--archive) (see the
|
||||
[`--files-from`](#opt) option for more details).
|
||||
changes the meaning of [`-a`](#opt) (see the [`--files-from`](#opt) option
|
||||
for more details).
|
||||
|
||||
0. `--recursive`, `-r`
|
||||
|
||||
@@ -892,16 +892,20 @@ your home directory (remove the '=' for that).
|
||||
what (if any) suffix gets appended using the [`--backup-dir`](#opt) and
|
||||
[`--suffix`](#opt) options.
|
||||
|
||||
Note that if you don't specify [`--backup-dir`](#opt), (1) the
|
||||
[`--omit-dir-times`](#opt) option will be forced on, and (2) if
|
||||
[`--delete`](#opt) is also in effect (without [`--delete-excluded`](#opt)),
|
||||
rsync will add a "protect" filter-rule for the backup suffix to the end of
|
||||
all your existing excludes (e.g. `-f "P *~"`). This will prevent
|
||||
previously backed-up files from being deleted. Note that if you are
|
||||
supplying your own filter rules, you may need to manually insert your own
|
||||
exclude/protect rule somewhere higher up in the list so that it has a high
|
||||
enough priority to be effective (e.g., if your rules specify a trailing
|
||||
inclusion/exclusion of `*`, the auto-added rule would never be reached).
|
||||
If you don't specify [`--backup-dir`](#opt):
|
||||
|
||||
1. the [`--omit-dir-times`](#opt) option will be forced on
|
||||
2. the use of [`--delete`](#opt) (without [`--delete-excluded`](#opt)),
|
||||
causes rsync to add a "protect" [filter-rule](#FILTER_RULES) for the
|
||||
backup suffix to the end of all your existing filters that looks like
|
||||
this: `-f "P *~"`. This rule prevents previously backed-up files from
|
||||
being deleted.
|
||||
|
||||
Note that if you are supplying your own filter rules, you may need to
|
||||
manually insert your own exclude/protect rule somewhere higher up in the
|
||||
list so that it has a high enough priority to be effective (e.g. if your
|
||||
rules specify a trailing inclusion/exclusion of `*`, the auto-added rule
|
||||
would never be reached).
|
||||
|
||||
0. `--backup-dir=DIR`
|
||||
|
||||
@@ -1480,11 +1484,11 @@ your home directory (remove the '=' for that).
|
||||
This tells rsync to transfer modification times along with the files and
|
||||
update them on the remote system. Note that if this option is not used,
|
||||
the optimization that excludes files that have not been modified cannot be
|
||||
effective; in other words, a missing `-t` (or [`-a`](#opt--archive)) will
|
||||
cause the next transfer to behave as if it used [`--ignore-times`](#opt)
|
||||
(`-I`), causing all files to be updated (though rsync's delta-transfer
|
||||
algorithm will make the update fairly efficient if the files haven't
|
||||
actually changed, you're much better off using `-t`).
|
||||
effective; in other words, a missing `-t` (or [`-a`](#opt)) will cause the
|
||||
next transfer to behave as if it used [`--ignore-times`](#opt) (`-I`),
|
||||
causing all files to be updated (though rsync's delta-transfer algorithm
|
||||
will make the update fairly efficient if the files haven't actually
|
||||
changed, you're much better off using `-t`).
|
||||
|
||||
0. `--atimes`, `-U`
|
||||
|
||||
@@ -1572,7 +1576,7 @@ your home directory (remove the '=' for that).
|
||||
|
||||
This option is overridden by both [`--super`](#opt) and `--no-super`.
|
||||
|
||||
See also the [`fake super`](./rsyncd.conf.5#fake_super) setting in the
|
||||
See also the [`fake super`](rsyncd.conf.5#fake_super) setting in the
|
||||
daemon's rsyncd.conf file.
|
||||
|
||||
0. `--sparse`, `-S`
|
||||
@@ -1631,6 +1635,15 @@ your home directory (remove the '=' for that).
|
||||
source and destination are specified as local paths, but only if no
|
||||
batch-writing option is in effect.
|
||||
|
||||
0. `--no-whole-file`, `--no-W`
|
||||
|
||||
Disable whole-file updating when it is enaled by default for a local
|
||||
transfer. This usually slows rsync down, but it can be useful if you are
|
||||
trying to minimize the writes to the destination file (if combined with
|
||||
[`--inplace`](#opt)) or for testing the checksum-based update algorithm.
|
||||
|
||||
See also the [`--whole-file`](#opt) option.
|
||||
|
||||
0. `--checksum-choice=STR`, `--cc=STR`
|
||||
|
||||
This option overrides the checksum algorithms. If one algorithm name is
|
||||
@@ -1730,10 +1743,10 @@ your home directory (remove the '=' for that).
|
||||
|
||||
When [`--info=skip2`](#opt) is used rsync will output "FILENAME exists
|
||||
(INFO)" messages where the INFO indicates one of "type change", "sum
|
||||
change" (requires [`-c`](#opt--checksum)), "file change" (based on the
|
||||
quick check), "attr change", or "uptodate". Using [`--info=skip1`](#opt)
|
||||
(which is also implied by 2 [`-v`](#opt--verbose) options) outputs the
|
||||
exists message without the INFO suffix.
|
||||
change" (requires [`-c`](#opt)), "file change" (based on the quick check),
|
||||
"attr change", or "uptodate". Using [`--info=skip1`](#opt) (which is also
|
||||
implied by 2 [`-v`](#opt) options) outputs the exists message without the
|
||||
INFO suffix.
|
||||
|
||||
0. `--remove-source-files`
|
||||
|
||||
@@ -2219,8 +2232,8 @@ your home directory (remove the '=' for that).
|
||||
[`--recursive`](#opt) (`-r`), so specify it explicitly, if you want it.
|
||||
- These side-effects change the default state of rsync, so the position of
|
||||
the `--files-from` option on the command-line has no bearing on how other
|
||||
options are parsed (e.g. [`-a`](#opt--archive) works the same before or
|
||||
after `--files-from`, as does `--no-R` and all other options).
|
||||
options are parsed (e.g. [`-a`](#opt) works the same before or after
|
||||
`--files-from`, as does `--no-R` and all other options).
|
||||
|
||||
The filenames that are read from the FILE are all relative to the source
|
||||
dir -- any leading slashes are removed and no ".." references are allowed
|
||||
@@ -2233,13 +2246,12 @@ your home directory (remove the '=' for that).
|
||||
contains "bin/" (note the trailing slash), the immediate contents of the
|
||||
directory would also be sent (without needing to be explicitly mentioned in
|
||||
the file -- this began in version 2.6.4). In both cases, if the
|
||||
[`-r`](#opt--recursive) option was enabled, that dir's entire hierarchy
|
||||
would also be transferred (keep in mind that [`-r`](#opt--recursive) needs
|
||||
to be specified explicitly with `--files-from`, since it is not implied by
|
||||
[`-a`](#opt--archive). Also note that the effect of the (enabled by
|
||||
default) [`-r`](#opt--relative) option is to duplicate only the path info
|
||||
that is read from the file -- it does not force the duplication of the
|
||||
source-spec path (/usr in this case).
|
||||
[`-r`](#opt) option was enabled, that dir's entire hierarchy would also be
|
||||
transferred (keep in mind that [`-r`](#opt) needs to be specified
|
||||
explicitly with `--files-from`, since it is not implied by [`-a`](#opt).
|
||||
Also note that the effect of the (enabled by default) [`-r`](#opt) option
|
||||
is to duplicate only the path info that is read from the file -- it does
|
||||
not force the duplication of the source-spec path (/usr in this case).
|
||||
|
||||
In addition, the `--files-from` file can be read from the remote host
|
||||
instead of the local host if you specify a "host:" in front of the file
|
||||
@@ -2741,7 +2753,7 @@ your home directory (remove the '=' for that).
|
||||
|
||||
If a user or group has no name on the source system or it has no match on
|
||||
the destination system, then the numeric ID from the source system is used
|
||||
instead. See also the [`use chroot`](./rsyncd.conf.5#use_chroot) setting
|
||||
instead. See also the [`use chroot`](rsyncd.conf.5#use_chroot) setting
|
||||
in the rsyncd.conf manpage for some comments on how the chroot setting
|
||||
affects rsync's ability to look up the names of the users and groups and
|
||||
what you can do about it.
|
||||
@@ -2799,7 +2811,7 @@ your home directory (remove the '=' for that).
|
||||
0. `--chown=USER:GROUP`
|
||||
|
||||
This option forces all files to be owned by USER with group GROUP. This is
|
||||
a simpler interface than using [`--usermap` & `--groupmap`](#opt--usermap)
|
||||
a simpler interface than using [`--usermap`](#opt) & [`--groupmap`](#opt)
|
||||
directly, but it is implemented using those options internally so they
|
||||
cannot be mixed. If either the USER or GROUP is empty, no mapping for the
|
||||
omitted user/group will occur. If GROUP is empty, the trailing colon may
|
||||
@@ -2831,8 +2843,7 @@ your home directory (remove the '=' for that).
|
||||
rsync daemon. The `--address` option allows you to specify a specific IP
|
||||
address (or hostname) to bind to.
|
||||
|
||||
See also [the daemon version of the `--address`
|
||||
option](#daemon-opt--address).
|
||||
See also [the daemon version of the `--address` option](#dopt--address).
|
||||
|
||||
0. `--port=PORT`
|
||||
|
||||
@@ -2841,7 +2852,7 @@ your home directory (remove the '=' for that).
|
||||
to connect with an rsync daemon (since the URL syntax has a way to specify
|
||||
the port as a part of the URL).
|
||||
|
||||
See also [the daemon version of the `--port` option](#daemon-opt--port).
|
||||
See also [the daemon version of the `--port` option](#dopt--port).
|
||||
|
||||
0. `--sockopts=OPTIONS`
|
||||
|
||||
@@ -2852,8 +2863,7 @@ your home directory (remove the '=' for that).
|
||||
able to set. By default no special socket options are set. This only
|
||||
affects direct socket connections to a remote rsync daemon.
|
||||
|
||||
See also [the daemon version of the `--sockopts`
|
||||
option](#daemon-opt--sockopts).
|
||||
See also [the daemon version of the `--sockopts` option](#dopt--sockopts).
|
||||
|
||||
0. `--blocking-io`
|
||||
|
||||
@@ -2955,11 +2965,10 @@ your home directory (remove the '=' for that).
|
||||
user on a per-update basis. The format is a text string containing
|
||||
embedded single-character escape sequences prefixed with a percent (%)
|
||||
character. A default format of "%n%L" is assumed if either
|
||||
[`--info=name`](#opt) or [`-v`](#opt--verbose) is specified (this tells you
|
||||
just the name of the file and, if the item is a link, where it points).
|
||||
For a full list of the possible escape characters, see the
|
||||
[`log format`](./rsyncd.conf.5#log_format) setting in the rsyncd.conf
|
||||
manpage.
|
||||
[`--info=name`](#opt) or [`-v`](#opt) is specified (this tells you just the
|
||||
name of the file and, if the item is a link, where it points). For a full
|
||||
list of the possible escape characters, see the [`log
|
||||
format`](rsyncd.conf.5#log_format) setting in the rsyncd.conf manpage.
|
||||
|
||||
Specifying the `--out-format` option implies the [`--info=name`](#opt)
|
||||
option, which will mention each file, dir, etc. that gets updated in a
|
||||
@@ -2994,8 +3003,7 @@ your home directory (remove the '=' for that).
|
||||
This is very useful if you need to debug why a connection is closing
|
||||
unexpectedly.
|
||||
|
||||
See also [the daemon version of the `--log-file`
|
||||
option](#daemon-opt--log-file).
|
||||
See also [the daemon version of the `--log-file` option](#dopt--log-file).
|
||||
|
||||
0. `--log-file-format=FORMAT`
|
||||
|
||||
@@ -3003,23 +3011,22 @@ your home directory (remove the '=' for that).
|
||||
file specified by the [`--log-file`](#opt) option (which must also be
|
||||
specified for this option to have any effect). If you specify an empty
|
||||
string, updated files will not be mentioned in the log file. For a list of
|
||||
the possible escape characters, see the [`log format`](./rsyncd.conf.5#log_format)
|
||||
the possible escape characters, see the [`log format`](rsyncd.conf.5#log_format)
|
||||
setting in the rsyncd.conf manpage.
|
||||
|
||||
The default FORMAT used if [`--log-file`](#opt) is specified and this
|
||||
option is not is '%i %n%L'.
|
||||
|
||||
See also [the daemon version of the `--log-file-format`
|
||||
option](#daemon-opt--log-file-format).
|
||||
option](#dopt--log-file-format).
|
||||
|
||||
0. `--stats`
|
||||
|
||||
This tells rsync to print a verbose set of statistics on the file transfer,
|
||||
allowing you to tell how effective rsync's delta-transfer algorithm is for
|
||||
your data. This option is equivalent to [`--info=stats2`](#opt) if
|
||||
combined with 0 or 1 [`-v`](#opt--verbose) options, or
|
||||
[`--info=stats3`](#opt) if combined with 2 or more [`-v`](#opt--verbose)
|
||||
options.
|
||||
combined with 0 or 1 [`-v`](#opt) options, or [`--info=stats3`](#opt) if
|
||||
combined with 2 or more [`-v`](#opt) options.
|
||||
|
||||
The current statistics are as follows:
|
||||
|
||||
@@ -3080,12 +3087,14 @@ your home directory (remove the '=' for that).
|
||||
|
||||
0. `--human-readable`, `-h`
|
||||
|
||||
Output numbers in a more human-readable format. There are 3 possible
|
||||
levels: (1) output numbers with a separator between each set of 3 digits
|
||||
(either a comma or a period, depending on if the decimal point is
|
||||
represented by a period or a comma); (2) output numbers in units of 1000
|
||||
(with a character suffix for larger units -- see below); (3) output
|
||||
numbers in units of 1024.
|
||||
Output numbers in a more human-readable format. There are 3 possible levels:
|
||||
|
||||
1. output numbers with a separator between each set of 3 digits (either a
|
||||
comma or a period, depending on if the decimal point is represented by a
|
||||
period or a comma).
|
||||
2. output numbers in units of 1000 (with a character suffix for larger
|
||||
units -- see below).
|
||||
3. output numbers in units of 1024.
|
||||
|
||||
The default is human-readable level 1. Each `-h` option increases the
|
||||
level by one. You can take the level down to 0 (to output numbers as pure
|
||||
@@ -3141,14 +3150,17 @@ your home directory (remove the '=' for that).
|
||||
rules.
|
||||
|
||||
If you are supplying your own exclude rules, you may need to add your own
|
||||
exclude/hide/protect rule for the partial-dir because (1) the auto-added
|
||||
rule may be ineffective at the end of your other rules, or (2) you may wish
|
||||
to override rsync's exclude choice. For instance, if you want to make
|
||||
rsync clean-up any left-over partial-dirs that may be lying around, you
|
||||
should specify [`--delete-after`](#opt) and add a "risk" filter rule, e.g.
|
||||
`-f 'R .rsync-partial/'`. (Avoid using [`--delete-before`](#opt) or
|
||||
[`--delete-during`](#opt) unless you don't need rsync to use any of the
|
||||
left-over partial-dir data during the current run.)
|
||||
exclude/hide/protect rule for the partial-dir because:
|
||||
|
||||
1. the auto-added rule may be ineffective at the end of your other rules, or
|
||||
2. you may wish to override rsync's exclude choice.
|
||||
|
||||
For instance, if you want to make rsync clean-up any left-over partial-dirs
|
||||
that may be lying around, you should specify [`--delete-after`](#opt) and
|
||||
add a "risk" filter rule, e.g. `-f 'R .rsync-partial/'`. Avoid using
|
||||
[`--delete-before`](#opt) or [`--delete-during`](#opt) unless you don't
|
||||
need rsync to use any of the left-over partial-dir data during the current
|
||||
run.
|
||||
|
||||
IMPORTANT: the `--partial-dir` should not be writable by other users or it
|
||||
is a security risk. E.g. AVOID "/tmp".
|
||||
@@ -3161,9 +3173,11 @@ your home directory (remove the '=' for that).
|
||||
set RSYNC_PARTIAL_DIR=.rsync-tmp in your environment and then just use the
|
||||
[`-P`](#opt) option to turn on the use of the .rsync-tmp dir for partial
|
||||
transfers. The only times that the [`--partial`](#opt) option does not
|
||||
look for this environment value are (1) when [`--inplace`](#opt) was
|
||||
specified (since [`--inplace`](#opt) conflicts with `--partial-dir`), and
|
||||
(2) when [`--delay-updates`](#opt) was specified (see below).
|
||||
look for this environment value are:
|
||||
|
||||
1. when [`--inplace`](#opt) was specified (since [`--inplace`](#opt)
|
||||
conflicts with `--partial-dir`), and
|
||||
2. when [`--delay-updates`](#opt) was specified (see below).
|
||||
|
||||
When a modern rsync resumes the transfer of a file in the partial-dir, that
|
||||
partial file is now updated in-place instead of creating yet another
|
||||
@@ -3197,11 +3211,13 @@ your home directory (remove the '=' for that).
|
||||
This option uses more memory on the receiving side (one bit per file
|
||||
transferred) and also requires enough free disk space on the receiving side
|
||||
to hold an additional copy of all the updated files. Note also that you
|
||||
should not use an absolute path to [`--partial-dir`](#opt) unless (1) there
|
||||
is no chance of any of the files in the transfer having the same name
|
||||
(since all the updated files will be put into a single directory if the
|
||||
path is absolute) and (2) there are no mount points in the hierarchy (since
|
||||
the delayed updates will fail if they can't be renamed into place).
|
||||
should not use an absolute path to [`--partial-dir`](#opt) unless:
|
||||
|
||||
1. there is no chance of any of the files in the transfer having the same
|
||||
name (since all the updated files will be put into a single directory if
|
||||
the path is absolute), and
|
||||
2. there are no mount points in the hierarchy (since the delayed updates
|
||||
will fail if they can't be renamed into place).
|
||||
|
||||
See also the "atomic-rsync" python script in the "support" subdir for an
|
||||
update algorithm that is even more atomic (it uses [`--link-dest`](#opt)
|
||||
@@ -3346,12 +3362,16 @@ your home directory (remove the '=' for that).
|
||||
|
||||
This option will cause the source files to be listed instead of
|
||||
transferred. This option is inferred if there is a single source arg and
|
||||
no destination specified, so its main uses are: (1) to turn a copy command
|
||||
that includes a destination arg into a file-listing command, or (2) to be
|
||||
able to specify more than one source arg (note: be sure to include the
|
||||
destination). Caution: keep in mind that a source arg with a wild-card is
|
||||
expanded by the shell into multiple args, so it is never safe to try to
|
||||
list such an arg without using this option. For example:
|
||||
no destination specified, so its main uses are:
|
||||
|
||||
1. to turn a copy command that includes a destination arg into a
|
||||
file-listing command, or
|
||||
2. to be able to specify more than one source arg. Note: be sure to
|
||||
include the destination.
|
||||
|
||||
CAUTION: keep in mind that a source arg with a wild-card is expanded by the
|
||||
shell into multiple args, so it is never safe to try to list such an arg
|
||||
without using this option. For example:
|
||||
|
||||
> rsync -av --list-only foo* dest/
|
||||
|
||||
@@ -3397,22 +3417,21 @@ your home directory (remove the '=' for that).
|
||||
quickly buffered, while other can show up as very slow when the flushing of
|
||||
the output buffer occurs. This may be fixed in a future version.
|
||||
|
||||
See also [the daemon version of the `--bwlimit`
|
||||
option](#daemon-opt--bwlimit).
|
||||
See also [the daemon version of the `--bwlimit` option](#dopt--bwlimit).
|
||||
|
||||
0. `--stop-after=MINS`
|
||||
0. `--stop-after=MINS`, (`--time-limit=MINS`)
|
||||
|
||||
This option tells rsync to stop copying when the specified number of
|
||||
minutes has elapsed.
|
||||
|
||||
Rsync also accepts an earlier version of this option: `--time-limit=MINS`.
|
||||
|
||||
For maximal flexibility, rsync does not communicate this option to the
|
||||
remote rsync since it is usually enough that one side of the connection
|
||||
quits as specified. This allows the option's use even when only one side
|
||||
of the connection supports it. You can tell the remote side about the time
|
||||
limit using [`--remote-option`](#opt) (`-M`), should the need arise.
|
||||
|
||||
The `--time-limit` version of this option is deprecated.
|
||||
|
||||
0. `--stop-at=y-m-dTh:m`
|
||||
|
||||
This option tells rsync to stop copying when the specified point in time
|
||||
@@ -3534,7 +3553,7 @@ your home directory (remove the '=' for that).
|
||||
the "`--rsh SHELL -4`" option directly (or whatever ipv4/ipv6 hint options
|
||||
it uses).
|
||||
|
||||
See also [the daemon version of these options](#daemon-opt--ipv4).
|
||||
See also [the daemon version of these options](#dopt--ipv4).
|
||||
|
||||
If rsync was compiled without support for IPv6, the `--ipv6` option will
|
||||
have no effect. The `rsync --version` output will contain "`no IPv6`" if
|
||||
@@ -3566,7 +3585,7 @@ The options allowed when starting an rsync daemon are as follows:
|
||||
background daemon. The daemon will read the config file (rsyncd.conf) on
|
||||
each connect made by a client and respond to requests accordingly.
|
||||
|
||||
See the [**rsyncd.conf**(5)](./rsyncd.conf.5) man page for more details.
|
||||
See the [**rsyncd.conf**(5)](rsyncd.conf.5) man page for more details.
|
||||
|
||||
0. `--address=ADDRESS`
|
||||
|
||||
@@ -3575,7 +3594,7 @@ The options allowed when starting an rsync daemon are as follows:
|
||||
specific IP address (or hostname) to bind to. This makes virtual hosting
|
||||
possible in conjunction with the `--config` option.
|
||||
|
||||
See also the [address](./rsyncd.conf.5#address) global option in the
|
||||
See also the [address](rsyncd.conf.5#address) global option in the
|
||||
rsyncd.conf manpage and the [client version of the `--address`
|
||||
option](#opt--address).
|
||||
|
||||
@@ -3591,7 +3610,7 @@ The options allowed when starting an rsync daemon are as follows:
|
||||
0. `--config=FILE`
|
||||
|
||||
This specifies an alternate config file than the default. This is only
|
||||
relevant when [`--daemon`](#daemon-opt) is specified. The default is
|
||||
relevant when [`--daemon`](#dopt) is specified. The default is
|
||||
/etc/rsyncd.conf unless the daemon is running over a remote shell program
|
||||
and the remote user is not the super-user; in that case the default is
|
||||
rsyncd.conf in the current directory (typically $HOME).
|
||||
@@ -3621,7 +3640,7 @@ The options allowed when starting an rsync daemon are as follows:
|
||||
rather than the default of 873.
|
||||
|
||||
See also [the client version of the `--port` option](#opt--port) and the
|
||||
[port](./rsyncd.conf.5#port) global setting in the rsyncd.conf manpage.
|
||||
[port](rsyncd.conf.5#port) global setting in the rsyncd.conf manpage.
|
||||
|
||||
0. `--log-file=FILE`
|
||||
|
||||
@@ -3642,7 +3661,7 @@ The options allowed when starting an rsync daemon are as follows:
|
||||
|
||||
0. `--sockopts`
|
||||
|
||||
This overrides the [`socket options`](./rsyncd.conf.5#socket_options)
|
||||
This overrides the [`socket options`](rsyncd.conf.5#socket_options)
|
||||
setting in the rsyncd.conf file and has the same syntax.
|
||||
|
||||
See also [the client version of the `--sockopts` option](#opt--sockopts).
|
||||
@@ -3780,8 +3799,8 @@ forms:
|
||||
had been specified). This behavior was added in version 2.6.7.
|
||||
|
||||
Note that, when using the [`--recursive`](#opt) (`-r`) option (which is implied
|
||||
by [`-a`](#opt--archive)), every subdir component of every path is visited left
|
||||
to right, with each directory having a chance for exclusion before its content.
|
||||
by [`-a`](#opt)), every subdir component of every path is visited left to
|
||||
right, with each directory having a chance for exclusion before its content.
|
||||
In this way include/exclude patterns are applied recursively to the pathname of
|
||||
each node in the filesystem's tree (those inside the transfer). The exclude
|
||||
patterns short-circuit the directory traversal stage as rsync finds the files
|
||||
@@ -4175,10 +4194,10 @@ already) or the file-update may be attempted and then, if the file fails to
|
||||
verify, the update discarded with an error. This means that it should be safe
|
||||
to re-run a read-batch operation if the command got interrupted. If you wish
|
||||
to force the batched-update to always be attempted regardless of the file's
|
||||
size and date, use the [`-I`](#opt--ignore-times) option (when reading the
|
||||
batch). If an error occurs, the destination tree will probably be in a
|
||||
partially updated state. In that case, rsync can be used in its regular
|
||||
(non-batch) mode of operation to fix up the destination tree.
|
||||
size and date, use the [`-I`](#opt) option (when reading the batch). If an
|
||||
error occurs, the destination tree will probably be in a partially updated
|
||||
state. In that case, rsync can be used in its regular (non-batch) mode of
|
||||
operation to fix up the destination tree.
|
||||
|
||||
The rsync version used on all destinations must be at least as new as the one
|
||||
used to generate the batch file. Rsync will die with an error if the protocol
|
||||
@@ -4368,7 +4387,7 @@ file is included or excluded.
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
[**rsync-ssl**(1)](./rsync-ssl.1), [**rsyncd.conf**(5)](./rsyncd.conf.5), [**rrsync**(1)](./rrsync.1)
|
||||
[**rsync-ssl**(1)](rsync-ssl.1), [**rsyncd.conf**(5)](rsyncd.conf.5), [**rrsync**(1)](rrsync.1)
|
||||
|
||||
## BUGS
|
||||
|
||||
@@ -4396,7 +4415,7 @@ that can be used with a restricted ssh login.
|
||||
## CREDITS
|
||||
|
||||
Rsync is distributed under the GNU General Public License. See the file
|
||||
[COPYING](./COPYING) for details.
|
||||
[COPYING](COPYING) for details.
|
||||
|
||||
An rsync web site is available at <https://rsync.samba.org/>. The site
|
||||
includes an FAQ-O-Matic which may cover questions unanswered by this manual
|
||||
|
||||
@@ -1210,7 +1210,7 @@ The /etc/rsyncd.secrets file would look something like this:
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
[**rsync**(1)](./rsync.1), [**rsync-ssl**(1)](./rsync-ssl.1)
|
||||
[**rsync**(1)](rsync.1), [**rsync-ssl**(1)](rsync-ssl.1)
|
||||
|
||||
## BUGS
|
||||
|
||||
@@ -1224,7 +1224,7 @@ This man page is current for version @VERSION@ of rsync.
|
||||
## CREDITS
|
||||
|
||||
Rsync is distributed under the GNU General Public License. See the file
|
||||
[COPYING](./COPYING) for details.
|
||||
[COPYING](COPYING) for details.
|
||||
|
||||
An rsync web site is available at <https://rsync.samba.org/> and its github
|
||||
project is <https://github.com/WayneD/rsync>.
|
||||
|
||||
@@ -8,6 +8,9 @@ rrsync - a script to setup restricted rsync users via ssh logins
|
||||
rrsync [-ro|-rw] [-munge] [-no-del] [-no-lock] DIR
|
||||
```
|
||||
|
||||
The single non-option argument specifies the restricted _DIR_ to use. It can be
|
||||
relative to the user's home directory or an absolute path.
|
||||
|
||||
The online version of this man page (that includes cross-linking of topics)
|
||||
is available at <https://download.samba.org/pub/rsync/rrsync.1>.
|
||||
|
||||
@@ -30,7 +33,7 @@ ssh-key line that should be restricted:
|
||||
Then, ensure that the rrsync script has your desired option restrictions. You
|
||||
may want to copy the script to a local bin dir with a unique name if you want
|
||||
to have multiple configurations. One or more rrsync options can be specified
|
||||
prior to the `DIR` if you want to further restrict the transfer.
|
||||
prior to the _DIR_ if you want to further restrict the transfer.
|
||||
|
||||
To use an rsync daemon setup, edit the user's `~/.ssh/authorized_keys` file and
|
||||
add a prefix like one of the following (followed by a space) in front of each
|
||||
@@ -43,9 +46,8 @@ ssh-key line that should be restricted:
|
||||
|
||||
Then, ensure that the rsyncd.conf file is created with one or more module names
|
||||
with the appropriate path and option restrictions. If rsync's
|
||||
[`--config`](./rsync.1#daemon-opt--config) option is omitted, it defaults to
|
||||
`~/rsyncd.conf`. See the `rsyncd.conf` man page for details of how to
|
||||
configure an rsync daemon.
|
||||
[`--config`](rsync.1#dopt) option is omitted, it defaults to `~/rsyncd.conf`.
|
||||
See the `rsyncd.conf` man page for details of how to configure an rsync daemon.
|
||||
|
||||
When using rrsync, there can be just one restricted dir per authorized key. A
|
||||
daemon setup, on the other hand, allows multiple module names inside the config
|
||||
@@ -53,33 +55,46 @@ file, each one with its own path setting.
|
||||
|
||||
The remainder of this man page is dedicated to using the rrsync script.
|
||||
|
||||
## OPTION SUMMARY
|
||||
## OPTIONS
|
||||
|
||||
```
|
||||
-ro Allow only reading from the DIR. Implies -no-del and -no-lock.
|
||||
-wo Allow only writing to the DIR.
|
||||
-munge Enable rsync's --munge-links on the server side.
|
||||
-no-del Disable rsync's --delete* and --remove* options.
|
||||
-no-lock Avoid the single-run (per-user) lock check.
|
||||
-help, -h Output this help message and exit.
|
||||
```
|
||||
0. `-ro`
|
||||
|
||||
A single non-option argument specifies the restricted DIR to use. It can be
|
||||
relative to the user's home directory or an absolute path.
|
||||
Allow only reading from the DIR. Implies [`-no-del`](#opt) and
|
||||
[`-no-lock`](#opt).
|
||||
|
||||
0. `-wo`
|
||||
|
||||
Allow only writing to the DIR.
|
||||
|
||||
0. `-munge`
|
||||
|
||||
Enable rsync's [`--munge-links`](rsync.1#opt) on the server side.
|
||||
|
||||
0. `-no-del`
|
||||
|
||||
Disable rsync's `--delete*` and `--remove*` options.
|
||||
|
||||
0. `-no-lock`
|
||||
|
||||
Avoid the single-run (per-user) lock check. Useful with [`-munge`](#opt).
|
||||
|
||||
0. `-help`, `-h`
|
||||
|
||||
Output this help message and exit.
|
||||
|
||||
## SECURITY RESTRICTIONS
|
||||
|
||||
The rrsync script validates the path arguments it is sent to try to restrict
|
||||
them to staying within the specified DIR.
|
||||
|
||||
The rrsync script rejects rsync's [`--copy-links`](./rsync.1#opt--copy-links)
|
||||
option (by default) so that a copy cannot dereference a symlink within the DIR
|
||||
to get to a file outside the DIR.
|
||||
The rrsync script rejects rsync's [`--copy-links`](rsync.1#opt) option (by
|
||||
default) so that a copy cannot dereference a symlink within the DIR to get to a
|
||||
file outside the DIR.
|
||||
|
||||
The rrsync script rejects rsync's
|
||||
[`--protect-args`](./rsync.1#opt--protect-args) (`-s`) option because it would
|
||||
allow options to be sent to the server-side that the script cannot check. If
|
||||
you want to support `--protect-args`, use a daemon-over-ssh setup.
|
||||
The rrsync script rejects rsync's [`--protect-args`](rsync.1#opt) (`-s`) option
|
||||
because it would allow options to be sent to the server-side that the script
|
||||
cannot check. If you want to support `--protect-args`, use a daemon-over-ssh
|
||||
setup.
|
||||
|
||||
The rrsync script accepts just a subset of rsync's options that the real rsync
|
||||
uses when running the server command. A few extra convenience options are also
|
||||
@@ -104,7 +119,7 @@ The `~/.ssh/authorized_keys` file might have lines in it like this:
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
[**rsync**(1)](./rsync.1)
|
||||
[**rsync**(1)](rsync.1)
|
||||
|
||||
## VERSION
|
||||
|
||||
@@ -113,7 +128,7 @@ This man page is current for version @VERSION@ of rsync.
|
||||
## CREDITS
|
||||
|
||||
rsync is distributed under the GNU General Public License. See the file
|
||||
[COPYING](./COPYING) for details.
|
||||
[COPYING](COPYING) for details.
|
||||
|
||||
An rsync web site is available at <https://rsync.samba.org/> and its github
|
||||
project is <https://github.com/WayneD/rsync>.
|
||||
|
||||
Reference in New Issue
Block a user