通过SSH属性传输文件夹的脚本

时间:2018-02-14 22:46:35

标签: linux ssh sh

我想通过SSH将文件夹从客户端传输到服务器,也从服务器传输到客户端。文件夹的名称始终相同。在传输之前,我需要创建我想要覆盖的文件夹的备份。 所以我创建了两个sripts,一个用于下载(服务于客户端),另一个用于上载(客户端到服务器)。

down_src.sh

#!/bin/bash

rm -rf ~/Projects/GeoPump/project_bk
mv ~/Projects/GeoPump/project ~/Projects/GeoPump/project_bk
rsync --delete -azvv --rsync-path="mkdir -p ~/Projects/GeoPump/ && rsync" -e ssh pi@25.30.116.202:~/Projects/GeoPump/project ~/Projects/GeoPump/

up_src.sh

#!/bin/bash

ssh pi@25.30.116.202 'rm -rf ~/Projects/GeoPump/project_bk'
ssh pi@25.30.116.202 'mv ~/Projects/GeoPump/project ~/Projects/GeoPump/project_bk'
rsync --delete -azvv --rsync-path="mkdir -p ~/Progetti/GeoPump/ && rsync" -e ssh ~/Projects/GeoPump/project pi@25.30.116.202:~/Projects/GeoPump/

例如,当我运行up_src.sh时,我需要三次插入服务器密码

andrea@andrea-GL552VW:~/Projects/GeoPump$ sudo ./up_src.sh 
pi@25.30.116.202's password: 
pi@25.30.116.202's password: 
opening connection using: ssh -l pi 25.30.116.202 "mkdir -p ~/Projects/GeoPump/ && rsync" --server -vvlogDtprze.iLsfx --delete . "~/Projects/GeoPump/"  (10 args)
pi@25.30.116.202's password: 
sending incremental file list

现在我的问题是:

这是进行此类转移的正确方法吗?

有人可以建议我在没有多次插入密码的情况下创建这些脚本的正确方法吗?

1 个答案:

答案 0 :(得分:0)

要使up_src.sh脚本生效,您必须确保25.30.116.202上的用户具有权限而不使用... && sudo rsync