如何强制rsync创建目标文件夹

How to force rsync to create destination folder

例子:

1
rsync /tmp/fol1/fol2/fol3/foln user@addr:/tmp/fol1/fol2/fol3/foln

我的主要问题是文件夹/tmp/fol1在远程计算机上不存在。

我可以使用哪些参数强制rsync创建此树?


我今天碰到了同样的问题,在这里找到了解决办法。

您可以这样做:

1
rsync -avR foo/bar/baz.c remote:/tmp/

或:

1
rsync -avR somedir/./foo/bar/baz.c remote:/tmp/

在远程机器中创建/tmp/foo/bar/baz.c。

更多详情请参见man rsync--relative/-R部分。


一个技巧是使用具有以下值的--rsync-path参数:

1
--rsync-path="mkdir -p /tmp/fol1 && rsync"

通过--rsync路径,您可以指定在远程计算机中使用哪个程序来启动rsync,并在shell的帮助下运行。


您可以通过bash来实现这一点,并打开一个ssh隧道,生成您需要的文件结构,然后rsync数据。每次同步完成后,这些临时文件夹都会更改吗?这是一周中的每一天吗?

1
2
3
4
ssh user@address
mkdir -p tmp/fol1
rsync avz /tmp/fol1/fol2/fol3/foln user@addr:/tmp/fol1/fol2/fol3/foln
fi