一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Linux 环境自动化备份策略及 Crontab 配置关键技术

时间:2026-07-26 08:36:59 编辑:袖梨 来源:一聚教程网

真正起作用的是脚本设计和环境适配:脚本须写死解释器、显式声明完整PATH、关键命令用绝对路径、时间戳%转义;MySQL备份需安全配置文件认证并加四参数;定时任务必须重定向日志、加随机延迟防IO峰值、检查磁盘空间与目录存在性,清理策略应独立于备份脚本。

Linux 自动化备份靠 crontab 调度,但真正起作用的是脚本设计和环境适配。单纯加一条 0 2 * * * /path/backup.sh 很容易静默失败——不是没执行,而是执行了却找不到命令、连不上数据库、日志全丢进黑洞。

备份脚本必须自包含、路径全显式

crond 启动时环境极简,PATH 常只有 /usr/bin:/binmysqldumprsyncdate 等命令可能根本不在路径里。

  • 脚本第一行写死解释器:#!/bin/bash
  • 开头立即声明完整 PATH:PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin; export PATH
  • 所有关键命令用绝对路径:/usr/bin/mysqldump/bin/tar/usr/bin/find
  • 时间戳变量中 % 字符需转义,例如:date +%Y%m%d_%H%M

数据库备份务必安全+一致

MySQL 备份不能只 dump 数据,更不能把密码写在命令行里。

  • 密码存进 ~/.my.cnf(权限必须 chmod 600),内容如下:
    [client]
    user = backup_user
    password = YourStr0ngP@ss!
  • mysqldump 必加四参数:--single-transaction --routines --triggers --events,缺一不可
  • 备份文件名含日期与数据库名,例如:mysql_app_$(date +%F_%H%M).sql.gz
  • gzip 压缩后立即校验:gzip -t $FILE,失败则退出并记录错误

定时任务要可追踪、防冲突、有容错

多个节点或多个任务共用同一时间点,容易打满 I/O;没日志等于没备份。

  • crontab 条目末尾必须重定向输出:0 2 * * * /home/app/backup.sh >> /var/log/backup.log 2>&1
  • 集群多节点备份,用 sleep $((RANDOM % 300)) 随机延后最多 5 分钟,避免峰值叠加
  • 脚本内检查目标目录是否存在、磁盘剩余空间是否低于 20%,不满足则中止并写日志
  • 用软链接维护最新备份:ln -sf $FILENAME latest.sql.gz,方便快速定位

清理策略与保留逻辑要独立可控

备份不清理,三个月后磁盘告警;清理太狠,恢复时发现只剩昨天一份。

  • 清理动作不要和备份写在一个脚本里,单独拆出 cleanup.sh
  • 全量备份保留最近 7 天:find /backup -name "mysql_*_*.sql.gz" -mtime +7 -delete
  • 增量日志保留 30 天,加 -maxdepth 1 防误删子目录
  • 清理前先 echo 即将删除的文件列表到日志,留痕可查

热门栏目