如何获取在针对主机的单个 rsync 中调用的所有 rsync 参数?
How can I get all rsync parameters called in a single rsync against a host?
我正在尝试解析当 rsync 运行 针对主机时传递的参数。因此,如果我通过了 --delete --prune-empty-dirs
和 --timeout=60
,我想知道这一点。我知道我可以在我的 rsyncd.conf 文件中使用 pre-xfer exec
,它允许我将参数传递给另一个脚本(例如:$RSYNC_ARG0,$RSYNC_ARG1,...$RSYNC_ARGN
)。我遇到的问题是其中一些作为实际参数返回:
bwlimit=100000
delete
但其他人以奇怪的字符串形式返回:
vOtre.iLsf
有什么方法可以解析这些字符串以确定 arguments/parameters 传递了什么?这些是我传递给同步主机的参数:
--recursive --times --omit-dir-times --timeout=15 --bwlimit=100000 --port=38700 --quiet --exclude='string1' --exclude='string2' --exclude='string3' --exclude='string4' --exclude='string5' --exclude='string6' --exclude='string7' --timeout=60 --delete --prune-empty-dirs
这些是我在 pre-xfer exec
中得到的参数(逗号分隔):
server,mOtre.isf,timeout=60,bwlimit=100000,delete
如有任何帮助,我们将不胜感激。
我不知道这是否重要,但我正在从 Linux 盒子同步到 Windows 盒子上的 cygwin 中的 rsync。我假设 parameters/arguments/values 是相同的,但我认为值得注意。
编辑
mOtr
代表 --prune-empty-dirs --omit-dir-times --times --recursive
,但我不知道 .
后面的任何内容...
在服务器端,您不会直接看到提供给客户端命令的选项。客户端命令解析您的选项,然后生成一组选项以传递给服务器 rsync 进程。
服务器只获取它需要知道的选项来完成它的一部分。例如,排除选项是文件选择过程的一部分,它通过双方网络连接上的 rsync 协议执行。它不会通过命令行传递到服务器端。
随机字符的 blob 是在客户端构建的字符串,它具有服务器需要了解的一组编码标志。其中一些与 rsync 命令行上的短选项具有相同的含义(如您所猜),但其他具有不同的含义或者是服务器操作所特有的。 (下载源码看看options.c里面的函数'server_options'就知道了)
不幸的是,如果您想根据传递给客户端命令的确切命令行做出决定,您可能就不走运了。但是,其他环境变量和 RSYNC_ARG 中传递的内容可能有足够的信息,仍然可以执行您需要的操作。
如果您的目标是通过让 pre-xfer 脚本失败来阻止某些活动,您也可以通过在 rsyncd.conf
中设置其他限制和约束来实现某些目的
祝你好运!
我正在尝试解析当 rsync 运行 针对主机时传递的参数。因此,如果我通过了 --delete --prune-empty-dirs
和 --timeout=60
,我想知道这一点。我知道我可以在我的 rsyncd.conf 文件中使用 pre-xfer exec
,它允许我将参数传递给另一个脚本(例如:$RSYNC_ARG0,$RSYNC_ARG1,...$RSYNC_ARGN
)。我遇到的问题是其中一些作为实际参数返回:
bwlimit=100000
delete
但其他人以奇怪的字符串形式返回:
vOtre.iLsf
有什么方法可以解析这些字符串以确定 arguments/parameters 传递了什么?这些是我传递给同步主机的参数:
--recursive --times --omit-dir-times --timeout=15 --bwlimit=100000 --port=38700 --quiet --exclude='string1' --exclude='string2' --exclude='string3' --exclude='string4' --exclude='string5' --exclude='string6' --exclude='string7' --timeout=60 --delete --prune-empty-dirs
这些是我在 pre-xfer exec
中得到的参数(逗号分隔):
server,mOtre.isf,timeout=60,bwlimit=100000,delete
如有任何帮助,我们将不胜感激。
我不知道这是否重要,但我正在从 Linux 盒子同步到 Windows 盒子上的 cygwin 中的 rsync。我假设 parameters/arguments/values 是相同的,但我认为值得注意。
编辑
mOtr
代表 --prune-empty-dirs --omit-dir-times --times --recursive
,但我不知道 .
后面的任何内容...
在服务器端,您不会直接看到提供给客户端命令的选项。客户端命令解析您的选项,然后生成一组选项以传递给服务器 rsync 进程。
服务器只获取它需要知道的选项来完成它的一部分。例如,排除选项是文件选择过程的一部分,它通过双方网络连接上的 rsync 协议执行。它不会通过命令行传递到服务器端。
随机字符的 blob 是在客户端构建的字符串,它具有服务器需要了解的一组编码标志。其中一些与 rsync 命令行上的短选项具有相同的含义(如您所猜),但其他具有不同的含义或者是服务器操作所特有的。 (下载源码看看options.c里面的函数'server_options'就知道了)
不幸的是,如果您想根据传递给客户端命令的确切命令行做出决定,您可能就不走运了。但是,其他环境变量和 RSYNC_ARG 中传递的内容可能有足够的信息,仍然可以执行您需要的操作。
如果您的目标是通过让 pre-xfer 脚本失败来阻止某些活动,您也可以通过在 rsyncd.conf
中设置其他限制和约束来实现某些目的祝你好运!