美文网首页互联网科技
linux下A服务器文件自动备份到B服务器(SCP+EXPECT

linux下A服务器文件自动备份到B服务器(SCP+EXPECT

作者: PM回忆录 | 来源:发表于2019-01-23 12:55 被阅读23次

    大纲:

    1.备份原理

    2.expect安装和说明

    3.具体代码

    4.crontab定时运行脚本

    1.备份原理

    本人小白,复杂的shell不会写,所以只能利用几种简单的代码加上一定的逻辑,来实现服务器的文件备份。

    A服务器对文件夹和数据库进行备份

    A服务器通过scp命令进行发送备份

    B服务器每天清理一次备份(为了节约空间)

    B服务器每月1日进行备份的存储(在删除之前复制一份出来)

    2.expect安装和说明

    expect时用与提供自动交互的工具。比如如果想要用ssh登陆服务器,每次都输入密码你觉得麻烦,那你就可以使用expect来做自动交互,这样的话就不用每次都输入密码了。

    本文利用expect来进行scp运行时的密码输入(使用密钥进行传输无需密码,也就无需expect,本文暂不涉及密钥)

    yum install expect -y  #安装expect

    #以下是expect的用法:

    spawn 命令  #这个命令是你在linux命令行要执行的命令

    expect "*password:" send "123\r"  #如果弹出*password,则自动输入123\r

    expect eof  #结束expect匹配

    3.具体代码

    少废话,上代码:

    A服务器:vim cpaliyun.sh (网站和数据库备份)

    #!/bin/bash   
    mysqldump -uroot -p数据库密码@ wordpress | gzip > /backup/aliyun/sql_pmhuiyilu_$(date +%Y%m%d_%H%M%S).sql.gz
    zip -r /backup/aliyun/web_pmhuiyilu_$(date +%Y%m%d_%H%M%S).zip /web/pmhuiyilu/
    workdir="/backup/aliyun/"
    do_delete()
    {
    find $workdir -name '*.sql.gz' -and -mtime +1 -type f -delete
    if [ $? -eq 0 ];then
    echo $date delete $dir success!
    else
    echo $date delete $dir FAILD!
    fi
    find $workdir -name '*.zip' -and -mtime +1 -type f -delete
    if [ $? -eq 0 ];then
    echo $date delete $dir success!
    else
    echo $date delete $dir FAILD!
    fi
    }
    do_delete

    A服务器:vim scp.sh (利用scp进行文件夹的发送,第一次运行可能要输入yes/no,本脚本并未做处理,可手动运行一遍手动输入yes)

    #!/usr/bin/env expect
    /usr/bin/expect <<-EOF
    set time 300
    spawn scp -r /backup/aliyun/  root@B服务器IP:/home/pmhuiyilutoday
    expect {
    "root@B服务器IP's password:" { send "B服务器root密码\r" }
    }
    set timeout 5000
    expect eof
    EOF

    B服务器:copy.sh

    cp -rf /home/pmhuiyilutoday/* /home/pmhuiyilutomonth

    B服务器:remove.sh

    rm -rf /home/pmhuiyilutoday/*

    4.crontab定时运行脚本

    crontab -e  #打开crontab定时器(关于crontab之前有文章写过,可参考)

    A服务器每天4点运行cpaliyun.sh脚本进行打包,每天4点10分运行scp.sh脚本进行发送

    B服务器每个月1号6点运行copy脚本将备份复制一份出来,每天3点50对接受发送的文件夹进行清理

    A服务器crontab B服务器crontab

    相关文章

      网友评论

        本文标题:linux下A服务器文件自动备份到B服务器(SCP+EXPECT

        本文链接:https://www.haomeiwen.com/subject/kdujjqtx.html