您的位置:首页 > 运维架构 > Shell

通过scp命令下载备份文件的shell脚本实现——使用sshpass

2018-03-13 15:41 841 查看
        近期,搭建的应用系统,做了一个shell定时备份,想要从各个数据库里,将数据定时备份到另一台备份机。
        mysql数据库备份在前面博客(http://blog.csdn.net/ruijiao_ren/article/details/79517086)中已做了说明,hbase和es备份,策略是每天将数据备份到本地,在备份机上定时下载。
        这时,我想使用scp命令在备份机上执行命令,通过远程下载将备份文件下载到备份机上,但是发现scp命令手动执行的时候如下:
scp root@172.29.xx.xx:/usr/local/workspaces/hbase_back/xhs_hbase_20180313* /usr/local/backDatas/hbase        可以成功执行,在对应目录下可以获得下载的文件,但是在执行命令过程中,会提示需要手动输入对方服务器密码,来进行验证。这一步骤在手动操作时,没有问题,但是把下载命令作为shell脚本的话,这就会成为一个问题,所以我的想法是将交互式输入密码方式改为在shell脚本中直接写入,为了实现它,我查看了scp的命令,发现它并不支持在命令中直接写入密码。
        所以为了解决上面的问题,需要借助其他工具,我使用了sshpass工具来解决。
        1、下载这个安装包:

        https://sourceforge.net/projects/sshpass/files/sshpass/1.05/sshpass-1.05.tar.gz

        下载的时候需要打开此链接后,稍等一会儿,就会开始下载任务。

        2、下载好后,需要上传到服务器(备份机),解压并编译安装:

        进入解压目录     cd /usr/local/backDatas/sshpass/sshpass-1.05执行编译,然后进行安装,命令如下:./configure
make && make install        3、在命令行查看是否安装成功:
             


        表示,安装成功。
       4、 测试一下是否可以用sshpass命令成功使用密码进入其他服务器:
sshpass -p 'xxxxxxxx' ssh root@172.29.xx.xx        其中,'xxxxxxxx'表示需要访问的服务器的密码,172.29.xx.xx表示需要访问的服务器ip
        若是可以成功进入对应服务器,则表示成功。
        5、测试scp命令在语句中写入密码是否可以成功下载文件:
sshpass -p 'xxxxxxxx' scp -r root@172.29.xx.xx:/usr/local/workspaces/hbase_back/xhs_hbase_201803* /usr/local/backDatas/hbase        上面命令的意思就是,从172.29.xx.xx这个服务器的目录/usr/local/workspaces/hbase_back/中将xhs_hbase_201803*这个文件下载到本地(备份机)服务器的/usr/local/backDatas/hbase目录下,其中xhs_hbase_201803*这个表示与只要是xhs_hbase_201803开头的,就符合需求。若是下载的文件是个文件夹,文件夹里面还有层及目录,就需要使用 -r参数进行全部拷贝下载。
        测试成功后,在对应目录可以看到成功下载文件,则表示命令测试成功。
         经过上面的测试,就表示可以将scp下载命令写入shell脚本,在将shell脚本设置定时执行任务。此问题解决。
        shell脚本data_back.sh如下:#!/bin/bash
#hbase's back
DATETODAY=`date +%Y%m%d`
sshpass -p 'xxxxxx' scp -r root@172.29.xx.xx:/usr/local/workspaces/hbase_back/xhs_hbase_${DATETODAY}* /usr/local/backDatas/hbase
#es's back
sshpass -p 'xxxxxx' scp -r root@172.xx.xx.xx:/usr/local/workspaces/back_es/data.${DATETODAY}* /usr/local/backDatas/es上面表示下载当天备份的数据文件到备份服务器。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: