我在网上找到了一篇文章,其中介绍了如何使用 rsync 备份您的专用服务器。
在本文的步骤之一中,我应该创建一个名为“rsync”的用户并为其添加 sudo 权限。一切都很顺利,但“rsync”用户的 visudo 选项很难理解。“/usr/bin/rsync”命令的一些选项在 Internet 上几乎没有文档。
以下是我所指的 visudo 行:
rsync ALL=(ALL) NOPASSWD: /usr/bin/rsync --server --sender -logDtprze.iLsf --numeric-ids . /
Run Code Online (Sandbox Code Playgroud)
首先,我有点了解“--server --sender”属性。真正困扰我的是选项“-logDtprze.iLsf”。
我有一个 CentOS 服务器,当我运行命令“man rsync”时,rsync 文档中没有此选项。实际上,每次我尝试在 visudo 中使用此选项时,都没有任何效果。
我最终发现对“-logDtprze.iLsf”的模糊引用是 Debian 中 rsync 的一个新功能。我不确定。
我只是想知道这个选项有什么作用,以及是否可以在我的备份设置中忽略它。
我还想了解“./”行末尾的句号和斜杠的用途
编辑:谢谢博吉特!我觉得自己像个白痴!:)
小智 5
正如其他评论中指出的那样,-logDtprze.iLsf它是简短选项的组合,但微妙之处在于该-e.部分。因为-e需要一个参数,所以它后面的所有内容都是选项的值-e。这是 Unix 命令短选项的常见行为,我们可以通过查看popt (3) POPT_ARG_STRING(rsync 用于解析选项的库)来确认此行为。所以它相当于:
-l -o -g -D -t -p -r -z -e '.iLsf'
Run Code Online (Sandbox Code Playgroud)
虽然在 rsync客户端-e上记录为“指定要使用的远程 shell”的简短版本,但作为远程 shell 没有多大意义。该选项实际上被内部 rsync 客户端/服务器协议劫持以传递兼容性标志: https: //github.com/WayneD/rsync/blob/13c4019e94015b234697c75d9d3624862e962d3c/compat.c#L160--rsh.iLsf-e
maybe_add_e_option您可以在此处的函数中查看其构造方式的源代码options.c: https: //github.com/WayneD/rsync/blob/f44e76b65c5819edb1a5b2fbbe732d5d214b35de/options.c#L2951
它在以下位置解析compat.c:https://github.com/WayneD/rsync/blob/13c4019e94015b234697c75d9d3624862e962d3c/compat.c#L134
.iLsf意思是:
.:rsync 使用的是该协议的最终版本。如果它使用预发布(其中SUBPROTOCOL_VERSION != 0),它将发送<PROTOCOL_VERSION>.<SUBPROTOCOL_VERSION>而不是仅仅发送.然后是一些行为标志,如下client_info所示compat.c:
i:allow_inc_recurseL:符号链接时间设置支持s: 符号链接 iconv 翻译支持f:flist I/O 错误安全支持| 归档时间: |
|
| 查看次数: |
2064 次 |
| 最近记录: |