rsync输出:左侧字符代表什么意思?

48

我不理解从rsync获取的输出。有人能帮我吗?

输出包含以下行:

<f.st...... somefile.txt
<f+++++++++ someOtherfile.zip
.d..t...... someDir/

我不明白左边的选项是什么意思。


1
对于那些在寻找答案的人,我建议查看以下帖子,其中包括解释位标志输出以及如何在所有情况下获取rsync的输出:https://dev59.com/OW855IYBdhLWcg3wKxHc#36851784 - John Mark Mitchell
5个回答

83
我已经为那些找不到相关部分的人转述了manpage的内容:

第一个字符表示文件正在发生什么:

  • < 表示文件正在传输到远程主机(发送)。
  • > 表示文件正在传输到本地主机(接收)。
  • c 表示正在发生项目的本地更改/创建(例如目录的创建或符号链接的更改等)。
  • h 表示该项是指向另一项的硬链接(需要--hard-links)。
  • . 表示该项未被更新(尽管可能已修改属性)。
  • * 表示项目化输出区域的其余部分包含消息(例如“deleting”)。

第二个字符表示它是什么类型的目录条目。具体来说:

  • f 表示文件
  • d 表示目录
  • L 表示符号链接
  • D 表示设备
  • S 表示特殊文件(例如套接字或fifo)

其余列如下所述:

  • c 表示常规文件具有不同的校验和,或符号链接、设备或特殊文件具有更改的值。
  • s 表示常规文件的大小不同,并将通过文件传输进行更新。
  • tT:
    • t 表示修改时间不同,并将更新为发件人的值
    • T 表示修改时间将设置为传输时间
  • p 表示权限不同,并将更新为发件人的值
  • o 表示所有者不同,并将更新为发件人的值
  • g 表示组不同,并将更新为发件人的值
  • . 未使用

以下列可能不存在,这取决于您的传输选项

  • a 表示ACL信息已更改
  • x 表示扩展属性信息已更改

4
更新类型取代Y的部分-r,--recursive 递归地复制整个目录树。--dirs (-d) 把空目录一并复制。这个选项只对 -r 或 --recursive 有影响。--links (-l) 复制符号链接的目标而非符号链接本身。--copy-links 将指向另一个目录树中文件的符号链接,替换为指向该树中被复制到的相应文件的符号链接。--copy-unsafe-links 与 --copy-links 类似,但是不会将指向不存在的文件或目录的符号链接替换为指向目标目录中相应文件的符号链接。--safe-links (-L) 忽略指向其他文件系统的符号链接。--copy-dirlinks 如果源目录树中存在指向目录的符号链接,则将它们作为目录处理,而不是像默认情况下那样复制它们所指向的内容。--keep-dirlinks 像默认情况下那样,将指向目录的符号链接作为目录处理。--hard-links (-H) 保留硬链接。-p,--perms 保留权限。-o,--owner 保留所有者信息。-g,--group 保留组信息。-D 同 --devices --specials。-t,--times 保留修改时间。--super 在备份时也保留 suid/sgid 等特殊权限。-S,--sparse 使用稀疏文件来优化传输。-n,--dry-run 展示哪些文件将会被复制而不实际复制。--whole-file 对于所有文件使用全文传输而不是增量传输。-x,--one-file-system 不要跨越文件系统边界(即只保留源目录树中的文件)。-B,--block-size=SIZE 覆盖默认块大小。-e,--rsh=COMMAND 指定一个远程 shell 程序。--timeout=TIME 在连接超时之前等待多长时间。--contimeout=TIME 在启动连续性检测之前等待多长时间。--partial 保留部分文件,以方便大文件的续传。 - Alexander Malakhov

5

4
我相信输出来自于'-i'标志,搜索'man'页面中的'itemize'几次(或搜索'cryptic output'),它会显示所有标志的含义:
  • < 表示正在将文件传输到远程主机(发送)。
  • f 表示文件
  • d 表示目录
  • s 表示常规文件的大小不同,并将通过文件传输进行更新。
  • t 表示修改时间不同,并正在更新。

2
"

在rsync的手册中,"+"被解释为:

“上述字符串中的其他字母是与该项相关联的属性正在更新或没有更改时将输出的实际字母。这其中有三个例外:(1)新创建的项用“+”替换每个字母,(2)相同的项用空格替换点,(3)未知属性用“?”替换每个字母(当与较旧的rsync通信时可能会发生这种情况)。"

"

0

我安装在系统上的rsync版本不会提供那种输出(也许您可以澄清使用的选项?),但是rsync尝试通过扫描远程和本地文件以查找相同的“块”数据来减少发送到网络的数据量。这样,只有实际不同的文件部分需要通过线路发送。

我认为你在左侧列中看到的那些字符是块匹配过程的指示器。+可能意味着“相同”(或者,我想),dst可能表示偏移量“移动”的块。


1
在查看变更清单之前,您需要使用“-i”标志运行rsync。 - Nick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接