linux 命令:rsync 详解

南门英飙
2023-12-01

rsync 是一个能够高效远程更新的文件传输程序,使用快速差分算法。

用法

        rsync [OPTION]... SRC [SRC]... DEST
        rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST
        rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST
        rsync [OPTION]... SRC [SRC]... rsync://[USER@]HOST[:PORT]/DEST
        rsync [OPTION]... [USER@]HOST:SRC [DEST]
        rsync [OPTION]... [USER@]HOST::SRC [DEST]
        rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]

':' 用法通过远程 shell 连接,而 '::' 和 'rsync://' 用法连接到 rsync 守护程序,并要求 SRC 或 DEST 以模块名称开头。

选项

        -v,--verbose

                详细模式

        --info=FLAGS

                细粒度的详细信息

        --debug=FLAGS

                细粒度的详细调试信息

        --msgs2stderr

                用于调试的特殊输出处理

        -q,--quiet

                不显示非报错信息

        -c,--checksum

                基于校验而不是修改时间和大小来跳转

        -a,--archive

                归档模式,等于 -rlptgoD(不是 -H,-A,-X)

        --no-OPTION

                关闭一个已使用的选项(例如 --no-D)

        -r,--recursive

                递归目录

        -R,--relative

                使用关联路径名

        --no-implied-dirs

                不使用 --relative 发送隐含目录

        -b,--backup

                创建备份(参考 --suffix 和 --backup-dir)

        --backup-dir=DIR

                创建备份 DIR

        --suffix=SUFFIX

                设置备份的后缀

        -u,--update

                接收端较新的文件不进行同步

        --inplace

                rsync 默认创建新副本,并在完成后放到新位置。但这个选项会直接将数据写到新                  位置。

        --append

                使用将数据追加到文件末尾的方式更新文件,这是假设前边的数据都一致。如果                    接收端的文件比发送端的大小更大或一样,则跳过这个文件。

        --append-verify

                和 --append 选项类似,但接收端的现有数据包含在完整文件校验和验证步骤中,                  如果最终验证步骤失败,这将导致重新发送文件。

        -d,--dirs

                不递归目录。

        -l,--links

                将软链作为软链同步。

        -L,--copy-links

                同步软链指向的文件或目录,而不是软链本身。

        --copy-unsafe-links

                只同步“不安全的”软链。

        --safe-links

                忽略指向资源树以外的软链。

        --munge-links

                munge 软链接使它们更安全(但无法使用)。

        -k,--copy-dirlinks

                将指向目录的软链接转换为所指目录。

        -K,--keep-dirlinks

                将接收端的软链目录视为普通目录。

        -H,--hard-links

                保留硬链接。

        -p,--perms

                保留权限。

        -E,--executability

                保留文件的执行能力。

        --chmod=CHMOD

                影响文件和/或目录的权限。

        -A,--acls

                保留ACL(隐含 --perms)。

        -X,--xattrs

                保留扩展参数。

        -o,--owner

                保留属主(超级用户专享)。

        -g,--group

                保留属组。

        --devices

                保留设备文件(超级用户专享)。

        --copy-devices

                作为标准文件复制设备内容。

        --specials

                保留特殊文件。

        -D

                等于 --devices --specials

        -t,--times

                保留修改时间。

        -O,--omit-dir-times

                忽略从 --times 得到的目录。

        -J,--omit-link-times

                忽略从 --times 得到的软链。

        --super

                接收端尝试以超级用户执行。

        --fake-super

                保存/恢复在使用 --xattrs 时的权限。

        -S,--sparse

                有效地处理稀疏文件。

        --preallocate

                写入目标文件之前预分配。

        -n,--dry-run

                执行不做更改的试运行。

        -W,--whole-file

                使用此选项,不使用 rsync 的 delta-transfer 算法,而是按原样发送整个文件。

        -x,--one-file-system

                在当前文件系统中。

        -B,--block-size=SIZE

                强制固定的校验和的 block-size。

        -e,--rsh=COMMAND

                指定要使用的远程的 shell。

        --rsync-path=PROGRAM

                指定在远程机器上运行的 rsync。

        --existing

                不在接收端创建新文件。

        --ignore-existing

                不更新接收端存在的文件。

        --remove-source-files

                删除发送端的已同步的文件。

        --del

                --delete-during 的别名。

        --delete

                在接收端删除发送端没有的文件。

        --delete-before

                接收端在同步前删除。

        --delete-during

                接收端在同步时删除。

        --delete-delay

                在传输期间计算接收方的文件删除(如 --delete-during),然后在传输完成后删                      除。

        --delete-after

                接收端在同步之后删除。

        --delete-excluded

                从接收端删除排除的文件。

        --ignore-missing-args

                忽略因找不到源参数的报错。

        --delete-missing-args

                从接收端删除找不到的源参数。

        --ignore-errors

                即使是I/O报错也删除。

        --force

                即使是非空目录也强制删除。

        --max-delete=NUM

                删除最多 NUM 个文件。

        --max-size=SIZE

                大于 SIZE 的文件不删除。

        --min-size=SIZE

                小于 SIZE 的文件不删除。

        --partial

                保留部分(未完成)传输的文件。

        --partial-dir=DIR

                将部分(未完成)传输的文件放到 DIR 中。

        --delay-updates

                将所有更新的文件放到传输的最后。

        -m,--prune-empty-dirs

                从文件列表中去掉空目录。

        --numeric-ids

                不要按用户/组名映射 uid/gid 值。

        --usermap=STRING

                设置用户名映射。

        --groupmap=STRING

                设置组名映射。

        --chown=USER:GROUP

                单用户名/组名映射。

        --timeout=SECONDS

                以秒为单位设置I/O超时。

        --contimeout=SECONDS

                以秒为单位设置守护连接超时。

        -I,--ignore-times

                不跳过匹配大小和修改时间的文件。

        -M,--remote-option=OPTION

                只把 OPTION 发给远端。

        --size-only

                跳过匹配大小的文件。

        --modify-window=NUM

                使用降低的精度比较修改时间。

        -T,--temp-dir=DIR

                在 DIR 目录中创建临时文件。

        -y,--fuzzy

                如果接收端找不到对应文件,找一个相似文件做基准。

        --compare-dest=DIR

                比较相对于 DIR 的接收端文件。

        --copy-dest=DIR

                类似 --compare-dest,包括将不变的文件从 DIR 拷贝到接收端目录。

        --link-dest=DIR

                类似 --copy-dest,包括将不变的文件从 DIR 硬链接到接收端目录。

        -z,--compress

                传输时压缩文件数据。

        --compress-level=NUM

                设置压缩等级。

        --skip-compress=LIST

                以 LIST 作为后缀的文件不压缩。

        -C,--cvs-exclude

                自动忽略和 CVS 相同算法的文件。

        -f,--filter=RULE

                设置文件过滤规则。

        -F

                等于 --filter='dir-merge /.rsync-filter',第二次使用等于 --filter='exclude .rsync-filter'

        --exclude=PATTERN

                排除匹配 PATTERN 的文件。

        --exclude-from=FILE

                从 FILE 读取排除规则。

        --include=PATTERN

                包括匹配 PATTERN 的文件。

        --include-from=FILE

                从 FILE 读取包括规则。

        --files-from=FILE

                从 FILE 中读取源文件列表。

        -0,--from0

                所有 *-from/filter 文件用 0 分隔。

        -s,--protect-args

                没有空间分割,只有通配符特殊字符。

        --address=ADDRESS

                将传出套接字的地址绑定到守护进程。

        --port=PORT

                指定双冒号备用端口号。

        --sockopts=OPTIONS

                指定设置 TCP 选项。

        --blocking-io

                使用块 I/O 作为远程 shell。

        --stats

                设置文件传输 stats。

        -8,--8-bit-output

                使输出中的高位字符不转义。

        -h,--human-readable

                可读性好的方式输出数字。

        --progress

                展示传输进度。

        -P

                等于 --partial --progress

        -i,--itemize-changes

                输出一个源端和目的端的文件的区别的一个报告。有区别的文件会展示文件名和                    一个11位的字符串(YXcstpoguax)标示出具体区别。

                Y代表更新方式:

                        <        发送到远端

                        >        从远端发来

                        c        改变或创建

                        h        硬链接

                        .         未更新

                        *         列表其余部分包括一个消息

                X代表文件类型:

                        f         文件

                        d        目录

                        L         软链

                        D        设备

                        S         特殊文件(命名套接字或管道)

                其他位每位只有两个值,字母或'.':

                        c 表示常规文件具有不同的校验和(需要 --checksum)或符号链接、设备或                          特殊文件具有更改的值。

                        s 表示常规文件的大小不同,将通过文件传输进行更新。

                        t 表示修改时间不同,正在更新为发送端的值(需要 --times)。t 的另一个                              值意味着修改时间将设置为传输时间,这发生在没有 --times 的情况下更新文                          件/符号链接/设备以及更改符号链接并且接收者无法设置其时间时。

                        p 表示权限不同,正在更新为发送端的值(需要 --perms)。

                        o 表示所有者不同并且正在更新为发送端的值(需要 --owner 和超级用户权                            限)。

                        g 表示组不同并且正在更新为发送端的值(需要 --group 和设置组的权限)。

                        u 暂时用不到。

                        a 表示ACL信息发生了变化。

                        x 表示扩展参数信息发生了变化。

        --out-format=FORMAT

                使用格式 FORMAT 输出更新。

        --log-file=FILE

                输出日志到 FILE。

        --log-file-format=FMT

                使用格式 FMT 记录更新。

        --password-file=FILE

                从 FILE 中读取可访问传输守护进程的密码。

        --list-only

                只列出文件,不复制。

        --bwlimit=RATE

                限制套接字I/O带宽。

        --outbuf=N|L|B

                设置输出缓冲区为 None,Line或Block。

        --write-batch=FILE

                向 FILE 写入批量更新。

        --only-write-batch=FILE

                类似 --write-batch,但排除在创建批量任务时接收端没有更新的情况。

        --read-batch=FILE

                从 FILE 读取批量更新。

        --protocol=NUM

                强制使用较老的协议版本。

        --iconv=CONVERT_SPEC

                请求文件名的字符集转化。

        --checksum-seed=NUM

                设置块/文件校验和种子(高级)。

        -4,--ipv4

                优先使用ipv4。

        -6,--ipv6

                优先使用ipv6。

        --version

                打印版本号。

        --help

                展示帮助文档。

使用示例:

1. rsync -av

最常用的选项,表示递归模式,保留软链接、文件权限、修改时间戳、属主、属组、设备文件、特殊文件,详细显示执行过程。

2. rsync -avu

不覆盖已修改的文件。

3. rsync -dv

只同步目录结构。

4. rsync -av --progress

展示同步的进度。

5. rsync -av --delete

删除目的端存在,但远端不存在的内容。

6. rsync -av --existing

目的端不创建新内容,就是只同步目的端有的内容。

7. rsync -i

输出一个源端和目的端的文件的区别的一个报告。

8. rsync -av --include/--exclude '通配符'

包括或排除某些文件,使用通配符描述。

 类似资料: