我正在编写 rsync 命令脚本,目前我正在尝试做类似的事情......
rsync -av -e ssh $DATASTORE/usr/local/somepath $DESTDIR/usr/local/someotherpath/
如果我回显 $DATASTORE 它显示
echo $DATASTORE
[email protected]
如果我运行命令我得到
/vagrant/[email protected]/usr/local/somepath no suck file or diectory
我不太明白,为什么要在其中添加 /vagrant (/vagrant 是我所在的当前目录),以及它来自哪里?我想我不能完全这样做,但我想了解它在做什么以及如何绕过它(如果安全的话)?
答案1
正如其他人指出的那样,您需要使用冒号 ( :
) 将主机规范与路径规范分开 -
rsync -av -e ssh "$DATASTORE":/usr/local/somepath "$DESTDIR"/usr/local/someotherpath/
我还将指出,这将放入somepath
您的目标目录中"$DESTDIR"/usr/local/someotherpath
,以便您最终得到"$DESTDIR"/usr/local/someotherpath/somepath
.如果这不是所需的行为,但您想要内容在somepath
目标someotherpath
目录中,在源路径后面附加一个斜杠:
rsync -av -e ssh "$DATASTORE":/usr/local/somepath/ "$DESTDIR"/usr/local/someotherpath/
答案2
尝试更换
$DATASTORE
经过
${DATASTORE}:
答案3
你做的一切都很好。这里只是缺少一个冒号。尝试这个:
rsync -av -e ssh $DATASTORE:/usr/local/somepath $DESTDIR/usr/local/someotherpath/