• centos 7.9每天定期发送最新备份文件到另外一台服务器


    1.需求

    本地化部署的过程中,为了使系统相对来说高可用,一般情况下,我们都会做一个负载,但是客户又会考虑成本,所以只有可怜巴巴的两台服务器,要全部服务都做负载,这个就实现不了。所以只能把两台服务器的环境都部署成一样,然后每天把数据库备份的数据同步一次到另外一台服务器上。

    2.同步脚本

    两个关键因素:最新的变量名,推送文件脚本。

    同时这边分为两种方式登陆,一种是使用用户名和密码,另外一种是使用密钥登陆。

    这里本地化部署,很多情况下都是使用用户名和密码登陆。

    这里会使用一个工具,可以直接帮助我们输入密码,进行传输文件

    centos 7.9 安装sshpass-CSDN博客

    3.编写脚本

    vi bf.sh
    1. #!/bin/bash
    2. echo '##########################################'
    3. echo '###### 每天凌晨03:00 自动备份传送数据 ######'
    4. echo '##########################################'
    5. # 设置环境变量
    6. DATE=$(date +%Y%m%d)
    7. echo '获取系统日期:' $DATE
    8. /opt/sshpass-1.05/sshpass -p '12345678' scp /datadrive/DB/bak/mgcr_$DATE.sql.gz root@172.22.0.77:/datadrive/DB/bak/zfwbak
    9. echo '备份完成'

     赋予可执行文件:

    chmod +x bf.sh

    4.加入定时任务中,让其每天执行

    crontab -e
    00 3 * * * sh /datadrive/script/bf.sh &>/dev/null 2>&1

     如果发生了错误,可以把日志输到特定的文件,进行查看。如下面命令:

    00 3 * * * sh /datadrive/script/bf.sh &>/tmp/bf.log 2>&1

    每天凌晨3点执行该脚本。

    1. >/dev/null 2>&1 的意思:
    2. 标准输出重定向到空设备文件,也就是不输出任何信息到终端,标准错误输出重定向等同于标准输出,
    3. 因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。
    4. 如果命令执行比较频繁(如每分钟一次),或者命令输出内容较多,会使这个邮件文件不断追加内容,
    5. 文件越来越大。而邮件文件一般存放在根分区,根分区一般相对较小,所以会造成根分区写满而无法
    6. 登录服务器。

    4.1.异常情况

    注意:如果不把输出日志置空,就会调用邮件,这个时候就会报邮件的错误信息。

    MAIL (mailed 68 bytes of output but got status 0x004b#012

    4.2.sshpass报错Host key verification failed

    解决方法:
    由于该远程机器从未连接过,所以就会报这个错误,首次使用,需要手工连接一下。

    ssh -p 22 -o StrictHostKeyChecking=no root@192.168.1.10

    然后按提示,输入一下密码即可。

  • 相关阅读:
    Qt的简单应用:翻金币游戏( 含源码 )
    物流批量查询:一键查询全部物流信息,高效管理快递
    6、Maven的依赖
    Postgresql查询执行模块README笔记
    Optional非空判断
    模型部署与剪枝实践
    STM32出现 Invalid Rom Table 芯片锁死解决方案
    接口api 之Swagger 一次实战探索
    Flutter环境配置遇到的问题
    docker in docker使用方式
  • 原文地址:https://blog.csdn.net/u011442726/article/details/133885511