rsync --config 来自 stdin

rsync --config 来自 stdin

尝试在目标上使用以下模板进行一些 rsync 操作:

rsync --daemon --port=7000 --config=$REALLY_SIMPLE_FILE

然后在 src 上运行:

rsync -aHPv --port=7000 /some/directory dst::$CONFIG_NAME

是否可以让 rsync 从 stdin 读取配置文件(在 dst 上)?或者将其作为某种字符串传递,这样我就不必实际写入文件了?

答案1

这是不可能的,因为当rsync作为守护进程运行时,它会为每个连接派生一个新进程,每个这样的进程都会再次读取配置文件。换句话说,即使文件通过 STDIN 传递并由父进程读取,第一个子进程也没有什么可读的。

自己验证一下。

$ rsync --daemon --port=7000 --config=simplefile
$ cat simplefile
[test1]
path=.
...
$ rsync  rsync://localhost:7000/
test1           
$ sed -i -e s/test1/test2/ simplefile
$ cat simplefile
[test2]
path=.
$ rsync  rsync://localhost:7000/
test2

您可以创建一个命名管道并让一个进程循环将配置写入其中,但这同样糟糕,并且可以说写入文件或写入 fifo 是同一件事。

相关内容