我正在为我的一些例程设置文本过滤器。如果我有一个错误和其他消息的列表,正如它们显示在输出中一样,这将使我的过滤输出更加通用。
到目前为止,我有这些模式:
^错误:
^rsync错误:
^跳过非常规文件
任何地方都有这方面的文档或注释吗?
答案1
我想你不会找到这个问题的一个好的、简洁的答案。我对源代码中看起来像错误的字符串进行了强力搜索,但我看不到任何组织或模式。例如,这是一个微小的grep
我用一个简单的for发现的总体错误的采样FERROR
(我假设这是一个文件描述符标准错误或同等学历)...
"ABORTING due to unsafe pathname from sender: %s\n"
"All source args must come from the same machine.\n"
"Batch file %s open error"
"Daemon option(s) used without --daemon.\n"
"ERROR: Skipping sender remove for changed file: %s\n"
"ERROR: buffer overflow in %s [%s]\n"
"FATAL I/O ERROR: dying to avoid a --delete-%s issue with a pre-3.0.7 receiver.\n"
"Failed to close"
"Hlink node data for %d already has path=%s (%s)\n"
"If arg is a remote file/dir, prefix it with a colon (:).\n"
"Impossible error in external-zlib code (1).\n"
"Integer overflow: attempted 64-bit offset\n"
"Internal hashtable error: illegal key supplied!\n"
"Invalid ID number: %s\n"
"Overflow in read_varint()\n"
"Overflow in read_varlong()\n"
"Unexpected remote arg: %s\n"
"Unknown filter rule: `%s'\n"
"[%s] could not find xattr #%d for %s\n"
"[%s] internal abbrev error on %s (%s, len=%ld)!\n"
"rsync error: %s (code %d) at %s(%d) [%s=%s]\n"
"rsync: did not see server greeting\n"
这只是我发现的消息的一小部分grep
和即使整个集合只是整体的一个子集,因为简单的 grep 无法捕获例如不在同一行的消息FERROR
(并且有很多这样的消息)。
答案2
任何成功的文件传输都应具有类似以下形式的传输状态,>f..T......
以便您可以找出其正则表达式并执行反向匹配。
此外,rsync 的日志输出格式是高度可配置的,因此您可以通过更改它来获得您想要的内容。