linux/Mysql/系统运维

Linux 定时备份文件到另一台服务器

daimafengzi · 6月3日 · 2024年 · · · · 本文共1202个字 · 预计阅读5分钟1016次已读

1. 需求

用户要求将 Tomcat 的日志文件定时备份到另一台服务器。同事给我提供了一个写好的 java 框架,但实在不想给用户再维护另一个服务了,所以另寻他法。

2. 问题

使用 scp 等跨服务器传输命令时需要手动输入用户名的密码才可进行文件传输,定时任务会卡在这个节点上。

3. 解决方案

  • 使用 crond 服务设置定时任务。
  • 使用 sshpass 跳过手动输入密码过程。
  • 使用 scp 命令传输文件。
  • 3.1 crond 服务

    3.1.1 cron 表达式

    # Example of job definition:
    # .---------------- minute (0 - 59)
    # |  .------------- hour (0 - 23)
    # |  |  .---------- day of month (1 - 31)
    # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
    # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
    # |  |  |  |  |
    # *  *  *  *  * user-name  command to be executed
    

    3.1.2 crond 服务涉及命令

    # 编辑当前用户的cron表达式文件
    crontab -e
    # 启动服务
    /sbin/service crond start
    # 关闭服务
    /sbin/service crond stop
    # 重启服务
    /sbin/service crond restart
    # 重新载入配置
    /sbin/service crond reload
    # 查看服务状态
    service crond status
    

    3.2 sshpass + scp

    # 工具安装
    yum install sshpass -y
    # 命令格式
    # -p password 提供密码作为参数(安全性不明智)
    sshpass -p password scp -r -o StrictHostKeyChecking=no source_directory username@destination_ip:destination_directory
    # 示例
    sshpass -p 123456 scp -r -o StrictHostKeyChecking=no /root/test.txt [email protected]:/root/
    

    其他问题

    你会发现执行命令之后无反应?
    可以添加下面代码

    可以添加-o StrictHostKeyChecking=no选项【表示远程连接时不提示是否输入yes/no】

    参考

    几种方法来实现scp拷贝时无需输入密码

    附上写的一键备份达梦数据库的脚本

    本地下载

    2024060308552755

    蓝奏网盘

    天翼网盘(访问码:5qie)

    0 条回应