美文网首页
Rsync:一个支持按优先级排序传输文件且支持向多台主机传输文件

Rsync:一个支持按优先级排序传输文件且支持向多台主机传输文件

作者: robot_test_boy | 来源:发表于2022-06-18 19:17 被阅读0次

    更多信息 参考 Rsync命令介绍,本文仅介绍功能概要(特性)、按优先级排序的文件传输列表、批处理模式,退出码,配置文件。

    命令格式

    Local:  rsync [OPTION...] SRC... [DEST]

    Access via remote shell:

        Pull:  rsync [OPTION...]  [USER@]HOST:SRC... [DEST]

        Push: rsync [OPTION...]  SRC... [USER@]HOST:DEST

    Access via rsync daemon:

        Pull: rsync [OPTION...]  [USER@]HOST::SRC... [DEST]

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

        Push:  rsync [OPTION...] SRC...  [USER@]HOST::DEST

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

    功能概要

    Rsync是一个快速且用途广泛的文件复制工具(file copying tool)。

    可以本地复制,可以通过远程shell或rsync后台程序向另外主机复制,可以通过远程shell或rsync后台程序从另外主机拷贝到本地主机。

    Rsync提供大量参数选项来控制其行为的各个方面,同时允许以非常灵活的方式来指定文件集来复制。

    Rsync以增量传输算法(delta-transfer  algorithm)出名,仅传输源文件SRC和目的地DST已有文件的差异,这样可以减少网络上大量数据的传输。

    Rsync广泛用于备份和镜像传输,并做为日常使用的不断改进的复制命令。


    Rsync默认情况下采用一个“快速检查”算法("quick check" algorithm)找到需要传输的文件。该算法通过文件大小或最后一次更改的时间来快速找到文件

    当快速检查算法显示文件数据不需要传输,根据Rsync的参数配置项,可以直接在目的文件上进行其它保留属性的任何更改。

    Rsync其它的一些特性:

    1) 支持链接拷贝,设备拷贝,文件属主及其用户组拷贝,权限拷贝。(support for copying links, devices, owners, groups, and permissions)

    2) 支持类似于GNU tar的exclude and exclude-from参数

    --exclude=PATTERN    排除匹配模式的文件exclude files matching PATTERN

    --exclude-from=FILE  从文件读取排除模式read exclude patterns from FILE

    --include=PATTERN    不排除匹配模式的文件don't exclude files matching PATTERN

    --include-from=FILE    从文件读取包含模式read include patterns from FILE

    3) 支持CVS排除模式,自动忽略文件传输

    -cvs-exclude, -C    像CVS同样的方式来自动忽略文件  auto-ignore files in the  same way CVS does

    4) 支持使用任何透明的远程shell,包括ssh or rsh

    5) 不需要超级用户特权

    6) 文件传输以最小化延迟传输成本

    7) 支持匿名或经过认证的rsync后台守护进程(理想状态是镜像)

    Rsync连接一个远程系统的方式

    有两种连接方式:1) 使用一个远程shell程序(ssh获rsh);2) 通过TCP连接一个rsync守护进程。

    传输列表按优先级排序SORTED TRANSFER ORDER

    Rsync在自己内部的传输列表中指定文件排序。将同名目录的文件内容合并,可以轻松移除重复的文件。然而当文件传输的顺序和命令中配置的不同时使某些人感到困惑。

    如果你需要在另外一个文件传输前传输一个特殊文件,可以将文件分成不同的rsync调用,或者使用--delay-updates参数。

    --delay-updates延迟更新参数,不影响排序的传输顺序,但会更快进入最终的文件更新阶段。

    --delay-updates延迟更新参数,将每一个更新的文件的临时文件放入一个保存目录,直到传输结束,在这期间所有文件被快速重命名后放入这个保持目录。试图将文件的更新操作更加原子化。默认情况下,文件将放入一个叫.~tmp~ 的目录,每个文件传输后的目的目录。除非指定 --partial-dir参数,变更传输的目的目录名。

    --partial-dir的评论章节,详细讨论如何将.~tmp~目录将被排除在传输列表中,以及如何通过Rsync对可能存在老的.~tmp~进行清理的方法。

    This option puts the temporary file from each updated file into a holding directory until the end of the transfer, at which time all the files are renamed into place in rapid succession. This attempts to make the updating of the files a little more atomic.

    By default the files are placed into a directory named .~tmp~ in each file's destination directory, but if you've specified the --partial-dir option, that directory will be used instead.

    --no-inc-recursive参数  Rsync需要内存中文件的完整列表为了能够在最后对其进行迭代(--no-inc-recursive : it needs the full file list in memory in order to be able to iterate over it at the end) 。这个参数选项需要在对端需要更多的内存(每个传输文件一个bit位),并在对端需要足够的磁盘空间来保存所有更新文件的附加副本。注意不应该使用绝对路径来指定--partial-dir参数,除非传输中的任何文件都没有相同的名字(假如路径是绝对的,所有同步的文件将放入到同一个的目录中),并且层次结构中没有挂载点(假如不能在保存目录中重命名,将导致延迟更新的文件将传输失败)。

    批处理模式BATCH MODE

    批处理模式Batch mode可以将更新文件以相同组的方式传输复制到其它很多远程主机中。想象下源文件有一些变更,这些变更将传输到其它主机上。Rsync可以运行在写批量处理模式(write-batch ),将源文件的变更传输到其中一个目的主机。write-batch 参数选项会让Rsync客户端存储“批处理文件”所有信息,也会让其它Rsync客户端做同样的操作。

    当更新多个目的文件时,一次生成批处理文件相关信息无需多次执行文件状态,校验和,数据块生成(Generating the batch file  once saves having to perform the file status, checksum, and data block generation  more than once when updating multiple  destination trees)。多播传输协议可用于一次将批量更新文件并行传输到许多主机,而不是单独向每个主机发送相同的数据(Multicast transport protocols can be used to transfer the batch update files in parallel to many hosts at once, instead of sending  the same data to every host individually)。

    read-batch参数,指定相同批处理文件名和目的主机路径,Rsync可以将记录的更改应用到其它的目的主机(To apply the  recorded changes to another destination  tree, run rsync with the read-batch option,  specifying the name of the same batch file, and the destination tree)。Rsync使用批处理文件中存储的信息来更新目的树。

    退出码 EXIT VALUES

    0 -⁠ Success

    1 -⁠ Syntax or usage error

    2 -⁠ Protocol incompatibility

    3 -⁠ Errors selecting input/output files, dirs

    4 -⁠ Requested action not supported. Either:

    an attempt was made to manipulate 64-bit files on a platform that cannot support them

    an option was specified that is supported by the client and not by the server

    5 -⁠ Error starting client-server protocol

    6 -⁠ Daemon unable to append to log-file

    10 -⁠ Error in socket I/O

    11 -⁠ Error in file I/O

    12 -⁠ Error in rsync protocol data stream

    13 -⁠ Errors with program diagnostics

    14 -⁠ Error in IPC code

    20 -⁠ Received SIGUSR1 or SIGINT

    21 -⁠ Some error returned by waitpid()

    22 -⁠ Error allocating core memory buffers

    23 -⁠ Partial transfer due to error

    24 -⁠ Partial transfer due to vanished source files

    25 -⁠ The -⁠-⁠max-delete limit stopped deletions

    30 -⁠ Timeout in data send/receive

    35 -⁠ Timeout waiting for daemon connection

    配置文件FILES

    /etc/rsyncd.conf or rsyncd.conf

    相关文章

      网友评论

          本文标题:Rsync:一个支持按优先级排序传输文件且支持向多台主机传输文件

          本文链接:https://www.haomeiwen.com/subject/ekjamrtx.html