关于linux:如何通过SSH创建目录,将文件从本地服务器复制到远程?

How can I copy file from local server to remote with creating directories which absent via SSH?

我可以使用如下SCP通过ssh复制文件:

1
2
cd /root/dir1/dir2/
scp filename root@192.168.0.19:$PWD/

但是,如果在远程服务器上缺少某些目录,例如远程服务器只有/root/,并且没有dir1和dir2,那么我就不能这样做,并且会得到一个错误。

我该怎么做呢?通过ssh创建缺少的目录来复制文件,以及如何使其成为最简单的方法?

最简单的方法是,我只能通过$PWD获得当前路径,即脚本必须是可轻松移动的,无需任何更改。


此命令将执行以下操作:

1
rsync -ahHv --rsync-path="mkdir -p $PWD && rsync" filename -e"ssh -v"  root@192.168.0.19:"$PWD/"

我可以在远程服务器上创建相同的目录,并通过ssh使用scp将文件复制到该目录,如下所示:

1
2
3
cd /root/dir1/dir2/
ssh -n root@192.168.0.19"mkdir -p '$PWD'"
scp -p filename root@192.168.0.19:$PWD/