我正在编写一个脚本,用于执行用户主目录的每日快照。首先,我使用以下方式进行干运行:
rsync -azvrn --out-format="%M %f" source/dir dest/dir
然后是实际的rsync操作(删除-n
选项)。
我正在尝试解析干运行的输出。具体来说,我有兴趣了解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返回状态?我相信,在传输多个文件时,可能会在每个文件的基础上引发错误,并在最后收集,如上面最后一行代码所示。
答案 0 :(得分:38)
根据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会在顶部。