当前位置:  开发笔记 > 编程语言 > 正文

如果没有ssh-ing,它如何在远程主机上创建目录?

如何解决《如果没有ssh-ing,它如何在远程主机上创建目录?》经验,为你挑选了5个好方法。

我不确定这是否可行.基本上,我正在编写一个脚本,允许我将文件scp到我的主机.到目前为止这是它.参数1是文件,参数2是我希望它放在远程服务器上的文件夹:

function upload {
    scp $1 myusername@ssh.myhost.net:$2
}

您可能/可能不知道,如果我在调用函数时指定的目录不存在,则传输失败.有没有办法检查函数中是否存在该目录,如果没有,则创建它.

我宁愿不必每次都使用ssh并创建目录,但如果我别无选择,那么我别无选择.



1> Peter Morten..:

您可以使用rsync.

例如,

rsync -ave ssh fileToCopy ssh.myhost.net:/some/nonExisting/dirToCopyTO

关于rsync的注意事项:

rsync是Unix的实用程序软件和网络协议,它将文件和目录从一个位置同步到另一个位置,同时在适当时使用delta编码最小化数据传输,使用比其他工具更快的rsync算法.


这对我不起作用(它只是抱怨目标目录不存在) - 它是否需要一个异常新版本的rsync?然而,`RSYNC -R`可用于实现期望的效果,如果本地文件处于适当命名的目录,例如:`rsync的-Rave SSH一些/不存在的/ dirToCopyTo/fileToCopy ssh.myhost.net:/`
啊,如果它只需要创建一个级别的目录来复制,看起来这样可行.我尝试部署到/ var/www/myapp/test /.当服务器只有/ var/www /时,它失败了.当我创建/ var/www/myapp /时,它创建了测试文件夹并将所有内容复制到其中.因此,如果您需要创建多个级别的目录结构,则需要像下面的@ire_and_curses这样的解决方案.

2> ire_and_curs..:

我假设你的意思是你不想交互式登录并手动创建目录,而不是你想要ssh完全避免使用,因为你仍然需要密码或公钥scp.

如果使用ssh非交互方式是可以接受的,那么你可以使用流文件catssh:

cat $1 | ssh $2 "mkdir $3;cat >> $3/$1"

哪里

$1 = filename 
$2 = user@server
$3 = dir_on_server

如果该目录已存在,mkdir则会抱怨,但文件仍会被复制.现有目录不会被覆盖.如果目录不存在,mkdir将创建它.


`mkdir -p $ 3`避免mkdir在已有的目录上抱怨.此外,它允许您创建多个级别目录.

3> Matthias Wan..:

如果你做一个递归的scp(-r),它也会复制目录.因此,如果您在本地远程主机上创建所需名称的目录,将文件复制到其中,然后递归复制,将创建目录,其中包含文件.

有点尴尬,但它会做的工作.



4> Sarang..:

这是一个两步过程

ssh myusername@ssh.myhost.net "mkdir -p $2"

这可确保创建目录结构.然后,你复制

scp $1 myusername@ssh.myhost.net:$2



5> Rico Chen..:

例如,怎么样
ssh remote_user@remote.host '[ -d /tmp/nonexist/dir ] || mkdir -p /tmp/nonexist/dir ]'; scp test.txt remote_user@remote.host:/tmp/nonexist/dir

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有