尝试在目标上使用以下模板进行一些 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 是同一件事。