首页主机资讯如何使用Linux Trigger进行定时备份

如何使用Linux Trigger进行定时备份

时间2025-12-01 23:30:03发布访客分类主机资讯浏览963
导读:Linux 定时备份实操指南 一 核心概念与准备 在 Linux 中,定时触发通常依赖cron 定时调度器;配合 rsync(文件/目录增量同步)、tar(归档压缩)、mysqldump(MySQL 逻辑备份)等工具即可完成大多数备份场景...

Linux 定时备份实操指南

一 核心概念与准备

  • 在 Linux 中,定时触发通常依赖cron 定时调度器;配合 rsync(文件/目录增量同步)、tar(归档压缩)、mysqldump(MySQL 逻辑备份)等工具即可完成大多数备份场景。
  • 建议准备:
    • 备份目录(如:/data/backup),并确保有充足磁盘空间与合适的权限
    • 用于远程备份的SSH 密钥登录(免交互认证),提升稳定性与安全性。
    • 基本日志与保留策略(如保留最近 7/30 天),避免无限增长。

二 快速上手步骤

  • 步骤 1 安装与启动定时服务
    • 多数发行版默认已安装 cron;如未安装可使用包管理器安装,例如在 Debian/Ubuntu 上:sudo apt-get install cron,安装后服务会自动启动。
  • 步骤 2 编写备份脚本(示例)
    • 文件目录备份脚本(使用 tar)
      #!/usr/bin/env bash
      set -Eeuo pipefail
      backup_dir="/data/backup/files"
      src_dir="/var/www"
      ts=$(date +%F_%H-%M-%S)
      mkdir -p "$backup_dir"
      tar -czf "$backup_dir/files_$ts.tar.gz" -C "$src_dir" .
      find "$backup_dir" -name "files_*.tar.gz" -mtime +7 -delete
      
    • MySQL 备份脚本(使用 mysqldump)
      #!/usr/bin/env bash
      set -Eeuo pipefail
      backup_dir="/data/backup/mysql"
      mkdir -p "$backup_dir"
      ts=$(date +%F_%H-%M-%S)
      mysqldump -u root -p'YOUR_PASSWORD' --single-transaction --routines --triggers --default-character-set=utf8mb4 \
        --all-databases | gzip >
           "$backup_dir/mysql_$ts.sql.gz"
      find "$backup_dir" -name "mysql_*.sql.gz" -mtime +7 -delete
      
    • 赋予执行权限:chmod +x /path/to/*.sh
  • 步骤 3 配置定时任务
    • 编辑当前用户的计划任务:crontab -e
    • 常用时间示例(分时日月周):
      # 每天 02:00 执行文件备份
      0 2 * * * /usr/bin/bash /path/to/files_backup.sh >
          >
           /var/log/backup_files.log 2>
          &
          1
      
      # 每天 03:00 执行 MySQL 备份
      0 3 * * * /usr/bin/bash /path/to/mysql_backup.sh >
          >
           /var/log/backup_mysql.log 2>
          &
          1
      
    • 查看/删除任务:crontab -lcrontab -r
  • 步骤 4 验证与排错
    • 查看系统日志以确认任务是否执行:在 Debian/Ubuntu 上查看 /var/log/syslog,或使用 grep CRON /var/log/syslog;在 RHEL/CentOS 上查看 /var/log/cron

三 远程备份与免密登录

  • 使用 rsync + SSH 进行远程增量备份(推荐)
    rsync -a --delete /data/backup/ user@192.168.10.17:/backup/server1/
    
    • 为免密执行,先生成密钥对:ssh-keygen -t rsa -b 4096
    • 将公钥分发到目标主机:ssh-copy-id user@192.168.10.17
    • 在 crontab 中定时调用 rsync(建议将日志重定向,便于审计):
      0 1 * * * /usr/bin/rsync -a --delete /data/backup/ user@192.168.10.17:/backup/server1/ >
          >
           /var/log/backup_rsync.log 2>
          &
          1
      
  • 说明:rsync 的 -a 参数可保留权限、属主、时间戳等;目录结尾的 / 有语义差异,注意源/目的路径写法。

四 进阶工具与策略

  • 常用工具对比与适用场景
    工具 主要特点 典型场景
    rsync 增量、保留属性、支持 SSH 文件/目录定时同步与镜像
    tar 归档与压缩、可排除文件 本地目录打包备份
    BorgBackup 去重、压缩、加密 大量数据长期保留与加密
    Restic 去重、加密、多后端 本地/远程安全备份
    Timeshift 系统级快照、Btrfs 优化 系统还原点管理
  • 备份策略建议
    • 遵循 3-2-1 原则:保留3份副本、使用2种不同介质、至少1份异地/离线副本。
    • 定期做恢复演练完整性校验(如工具自带校验命令),确保可恢复性。

五 常见问题与最佳实践

  • 环境变量与路径问题
    • cron 执行环境的 PATH 较精简,脚本中建议使用绝对路径(如 /usr/bin/mysqldump/usr/bin/tar);必要时在脚本顶部显式设置 PATH
  • 避免并发与锁竞争
    • 在脚本开始处加锁文件,防止上一次未结束时重复执行:
      lock="/var/run/backup.lock"
      exec 200>
      "$lock"
      flock -n 200 || {
           echo "Another backup is running";
           exit 1;
       }
          
      
  • 日志与告警
    • 统一输出到日志文件,并配合 logrotate日志轮转;关键任务可增加邮件/企业微信/钉钉告警。
  • 数据库一致性
    • 对于 InnoDB,使用 --single-transaction 获取一致性快照;如有 MyISAM 表或需要绝对一致性,可在维护窗口短暂锁表或使用主从切换后备份从库。
  • 安全
    • 避免在命令行中明文写密码,可使用 ~/.my.cnf 配置凭据,权限设为 600
      [mysqldump]
      user=root
      password=YOUR_PASSWORD
      
    • SSH 密钥妥善保管,禁用口令登录;备份目录与日志文件权限最小化。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 如何使用Linux Trigger进行定时备份
本文地址: https://pptw.com/jishu/760642.html
Linux Trigger如何管理大量任务 Linux Trigger的调试技巧有哪些

游客 回复需填写必要信息