miv*_*ivk 135
如果您要创建的是最后一个叶子目录,则可以ssh ... mkdir -p先单独运行,也可以使用此处说明的--rsync-path技巧:
rsync -a --rsync-path="mkdir -p /tmp/x/y/z/ && rsync" $source user@remote:/tmp/x/y/z/
Run Code Online (Sandbox Code Playgroud)
或者使用--relativeTony建议的选项.在这种情况下,您只需指定必须存在的目标的根,而不是将创建的源的目录结构:
rsync -a --relative /new/x/y/z/ user@remote:/pre_existing/dir/
Run Code Online (Sandbox Code Playgroud)
这样,你最终会得到/ pre_existing/dir/new/x/y/z /
如果你想创建"y/z /",但不想在"new/x /"里面,你可以添加./你想要--relative开始的地方:
rsync -a --relative /new/x/./y/z/ user@remote:/pre_existing/dir/
Run Code Online (Sandbox Code Playgroud)
会创建/ pre_existing/dir/y/z /.
小智 32
假设您使用ssh连接rsync,那么在发送ssh命令之前:
ssh user@server mkdir -p existingdir/newdir
Run Code Online (Sandbox Code Playgroud)
如果已经存在,则没有任何反应
Ton*_*ony 16
该-R, --relative选项将执行此操作.
例如:如果要/var/named/chroot在远程服务器上备份并创建相同的目录结构,那么-R就可以做到这一点.
kdu*_*ubs 13
这对我有用:
rsync /dev/null node:existing-dir/new-dir/
Run Code Online (Sandbox Code Playgroud)
我收到这条消息:
skipping non-regular file "null"
Run Code Online (Sandbox Code Playgroud)
但我不必担心有一个空目录.
Igo*_*gor 10
从rsync手册页(man rsync):
--mkpath create the destination's path component
Run Code Online (Sandbox Code Playgroud)
我不认为你可以用一个 rsync 命令来做到这一点,但你可以像这样先“预创建”额外的目录:
rsync --recursive emptydir/ destination/newdir
Run Code Online (Sandbox Code Playgroud)
其中 'emptydir' 是本地空目录(您可能必须先将其创建为临时目录)。
这有点黑客,但它对我有用。
干杯
克里斯
| 归档时间: |
|
| 查看次数: |
138522 次 |
| 最近记录: |