rsync错误代码的综合列表[关闭]

Posted

技术标签:

【中文标题】rsync错误代码的综合列表[关闭]【英文标题】:Comprehensive list of rsync error codes [closed] 【发布时间】:2014-01-11 07:09:08 【问题描述】:

我正在编写一个脚本,用于对用户的主目录进行每日快照。首先,我使用以下方法进行试运行:

rsync -azvrn --out-format="%M %f" source/dir dest/dir

然后是实际的 rsync 操作(通过删除 -n 选项)。

我正在尝试解析试运行的输出。具体来说,我有兴趣了解 rsync 错误(如果发生)的确切原因。有谁知道

    最常见的 rsync 错误及其代码? 一个全面的 rsync 错误代码页面的链接?

最重要的是,rsync(至少在 CentOs 5 上)不会返回错误代码。而是在内部显示错误并返回 0。就像这样:

sending incremental file list
rsync: link_stat "/data/users/gary/testdi" failed: No such file or directory (2)

sent 18 bytes  received 12 bytes  60.00 bytes/sec
total size is 0  speedup is 0.00 (DRY RUN)

rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1039) [sender=3.0.6]

有没有人必须解析 rsync 错误并对如何存储 rsync 返回状态提出建议?我相信,在传输多个文件时,可能会在每个文件的基础上引发错误,并在最后收集,如上面最后一行代码所示。

【问题讨论】:

【参考方案1】:

根据 rsync “man”页面,以下是它可能返回的错误代码及其含义。如果您在 bash 中编写脚本,您可以查看 $?

 0     Success
 1     Syntax or usage error
 2     Protocol incompatibility
 3     Errors selecting input/output files, dirs
 4     Requested action not supported: an attempt was made to manipulate 64-bit
       files on a platform that cannot support them; or 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

我从未见过全面的“最常见错误”列表,但我敢打赌错误代码 1 会排在首位。

【讨论】:

我没有意识到手册页有这个列表!谢谢安道格拉斯。顺便说一句,我在 Python 上解析它。你碰巧知道'$?'的pythonic等价物是什么吗? 是的,如果您使用的是 subprocess.call,请查看此页面:python.org/doc//current/library/… nutshell:return_code = subprocess.call(...) 我注意到rsync 将错误代码返回给 shell 很有趣。例如,我输入了一个不正确的源目录并在内部 rsync 报告了 2 个错误:rsync: link_stat "/data/users/gary/testdi" failed: No such file or directory (2)rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1039) [sender=3.0.6]。然而,打印 $?在调用返回 0 后立即在 shell 处。 确实很奇怪。如果它总是会在消息中给你(code ##),你可以用正则表达式来处理它,也许。 只是为了确认@Seebiscuit 观察到的内容,这确实很奇怪。如果 rsync 在运行期间由于目标空间不足而失败,则会生成(大量)以 : No space left on device (28) 结尾的消息,但随后会声明 rsync error: error in file IO (code 11) at receiver.c(389) [receiver=3.1.0] 并以退出代码 11 结尾。似乎 man 中的错误代码列表是 ' meta list' 并且还有更多的内部错误代码(例如 28),但不会报告回 shell。

以上是关于rsync错误代码的综合列表[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

FTP错误代码列表

FTP错误代码列表

Flutter 和 Firebase。数据更改时重建小部件。错误的代码或错误的数据库? [关闭]

编程中易犯错误汇总:一个综合案例.md

为啥此代码无法将 lista 识别为列表? [关闭]

尝试在python子进程中运行rsync时出现意外的远程arg错误