如何在一行中将文件 scp 到两台服务器?

如何在一行中将文件 scp 到两台服务器?

我使用的是 Mac 10.9.5 和 bash shell。在我们的环境中,我们必须通过代理(一台 CentOS 机器)才能正确地通过 SSH 连接到目标机器(另一台 CentOS 机器)。我想要做的是创建一个快捷方式,这样我就可以快速将文件 scp 到目标服务器,例如

scp localfile.txt davea@server:/home/davea

但是现在,我必须执行多个命令来传输文件……

scp localfile.txt davea@proxy:/home/davea
ssh davea@proxy
scp localfile.txt davea@server:/home/davea

可以将以上内容浓缩为一行吗?

答案1

你体内的一个功能怎么样.bash_profile

scps () {
    if [ -f $1 ] ; then
        scp $1 davea@proxy:/home/davea && ssh davea@proxy && scp $1 davea@server:/home/davea
    else
        echo "'$1' is not a valid file!"
    fi
}

然后您可以使用scps filename复制filenamedavea@server:/home/davea

答案2

考虑使用同步自动将文件从代理复制到目标:

rsync local-file user@remote-host:remote-file

相关内容