无法让 rsync 在 rsync 路径参数中接受 `mkdir -p` (--parents)?

Cannot get rsync to accept `mkdir -p` (--parents) in rsync-path argument?

我在 rsync - create all missing parent directories? :

这样的帖子里看到过
rsync -aq --rsync-path='mkdir -p /tmp/imaginary/ && rsync' file user@remote:/tmp/imaginary/

我想 - 太好了,让我试试看:

$ rsync -aP --remove-source-files --rsync-path="mkdir -p /home/pi/ARCHIVE/2020/01/24 && rsync" a1.test a1.json a1.pdf /home/pi/ARCHIVE/2020/01/24/
sending incremental file list
rsync: mkdir "/home/pi/ARCHIVE/2020/01/24" failed: No such file or directory (2)
rsync error: error in file IO (code 11) at main.c(675) [Receiver=3.1.2]

嗯,当然 mkdir "/home/pi/ARCHIVE/2020/01/24" failed - 但我没有发布 mkdir,我发布了 mkdir -p

那么为什么rsync忽略了这个呢?我应该为它设置任何其他设置吗?或者 rsync-path 可以严格用于 ssh 连接(这里不是这种情况)?

--rsync-path 仅适用于远程机器:

--rsync-path=PROGRAM    specify the rsync to run on remote machine

这是因为您在进行本地复制时不需要调用 rsync 的第二个实例。复制将简单地由您 运行 的过程完成。

由于技术上是 you 在目标机器上调用 rsync,因此 you 应该添加 mkdir .. && rsync 前面:

mkdir -p /home/pi/ARCHIVE/2020/01/24 &&
    rsync -aP --remove-source-files a1.test a1.json a1.pdf /home/pi/ARCHIVE/2020/01/24/