Home Explore Blog CI



man-pages

47th chunk of `rsync.man`
08772542d661c710ca9acc9335ebbd24fd94b316bb1555c90000000100000ff5
 front
              of the file (the host must match one end of the transfer).  As  a
              short‐cut,  you can specify just a prefix of ":" to mean "use the
              remote end of the transfer".  For example:

                  rsync ‐a ‐‐files‐from=:/path/file‐list src:/ /tmp/copy

              This would copy all the files specified  in  the  /path/file‐list
              file that was located on the remote "src" host.

              If  the --iconv and --secluded‐args options are specified and the
              --files‐from filenames are being sent from one host  to  another,
              the  filenames will be translated from the sending host’s charset
              to the receiving host’s charset.

              NOTE: sorting the list of files in the --files‐from  input  helps
              rsync to be more efficient, as it will avoid re‐visiting the path
              elements  that are shared between adjacent entries.  If the input
              is not sorted, some path elements (implied directories)  may  end
              up  being scanned multiple times, and rsync will eventually undu‐
              plicate them after they get turned into file‐list elements.

       --from0, -0
              This tells rsync that the rules/filenames it reads  from  a  file
              are  terminated  by  a  null  (’\0’)  character, not a NL, CR, or
              CR+LF.  This  affects  --exclude‐from,  --include‐from,  --files‐
              from, and any merged files specified in a --filter rule.  It does
              not  affect --cvs‐exclude (since all names read from a .cvsignore
              file are split on whitespace).

       --old‐args
              This option tells rsync to stop trying to protect the arg  values
              on the remote side from unintended word‐splitting or other misin‐
              terpretation.  It also allows the client to treat an empty arg as
              a "." instead of generating an error.

              The  default  in  a modern rsync is for "shell‐active" characters
              (including spaces) to be backslash‐escaped in the args  that  are
              sent  to  the remote shell.  The wildcard characters *, ?, [, & ]
              are not escaped in filename args (allowing them  to  expand  into
              multiple filenames) while being protected in option args, such as
              --usermap.

              If you have a script that wants to use old‐style arg splitting in
              its filenames, specify this option once.  If the remote shell has
              a  problem with any backslash escapes at all, specify this option
              twice.

              You may also control this setting via the RSYNC_OLD_ARGS environ‐
              ment variable.  If it has the value "1", rsync will default to  a
              single‐option  setting.  If it has the value "2" (or more), rsync
              will default to a repeated‐option setting.  If it is "0",  you’ll
              get  the  default  escaping  behavior.  The environment is always
              overridden by manually specified  positive  or  negative  options
              (the negative is --no‐old‐args).

              Note  that this option also disables the extra safety check added
              in 3.2.5 that ensures that a remote sender isn’t including  extra
              top‐level  items  in the file‐list that you didn’t request.  This
              side‐effect is necessary because we  can’t  know  for  sure  what
              names to expect when the remote shell is interpreting the args.

              This option conflicts with the --secluded‐args option.

       --secluded‐args, -s
              This  option  sends  all filenames and most options to the remote
              rsync via the protocol (not the remote shell command line)  which
              avoids  letting  the remote shell modify them.  Wildcards are ex‐
              panded on the remote host by rsync instead of a shell.

Title: Rsync Options: --from0, --old-args, and --secluded-args
Summary
This section describes three rsync options. --from0 specifies that rules/filenames read from a file are null-terminated, affecting options like --exclude-from, --include-from, and --files-from. --old-args disables rsync's argument protection, allowing for old-style argument splitting, and can be controlled via the RSYNC_OLD_ARGS environment variable; it also disables a safety check for extra top-level items. --secluded-args sends filenames and most options to the remote rsync via the protocol, avoiding shell modification.