首页主机资讯Linux Trigger如何实现数据备份

Linux Trigger如何实现数据备份

时间2025-12-11 19:38:03发布访客分类主机资讯浏览1060
导读:Linux 中实现“Trigger”式数据备份的实用方案 一、概念与目标 在 Linux 中,“Trigger”式备份通常指由事件触发的备份,例如文件变更、定时到达或系统信号。常见实现路径包括: 事件触发:利用 inotify 监听目录...

Linux 中实现“Trigger”式数据备份的实用方案

一、概念与目标

  • 在 Linux 中,“Trigger”式备份通常指由事件触发的备份,例如文件变更、定时到达或系统信号。常见实现路径包括:
    • 事件触发:利用 inotify 监听目录变化,实时调用 rsync 做增量同步。
    • 时间触发:使用 cron 按计划执行备份脚本(全量/增量)。
    • 数据库:用 mysqldump/pgBackRest/Percona XtraBackup 配合定时任务或工具内置调度。
    • 传输与认证:优先使用 SSH 密钥 免密,结合 rsync/SSH 安全传输。

二、事件触发实时备份 inotify + rsync

  • 适用场景:目录内容频繁变更,需要近实时把变更同步到备份机(如 /data0/htdocs)。
  • 思路:在“源端”用 inotifywait 监听 create、modify、delete、attrib 等事件,触发 rsync 增量同步到“备份端”;备份端运行 rsync 守护进程(模块方式)或 SSH 方式接收。
  • 关键步骤与示例:
    1. 备份端准备(rsync 模块方式)
      • 安装 rsync;编辑 /etc/rsyncd.conf(示例)
        • port=873;address=备份机IP;uid=root;gid=root;use chroot=no;readonly=no
        • hosts allow=源端网段;max connections=5
        • [htdocs] path=/data0/htdocs;auth users=root;secrets file=/etc/rsyncd/rsyncd.secrets
      • 创建密码文件(权限 600):echo “root:YourPass” > /etc/rsyncd/rsyncd.secrets
      • 启动 rsync 服务(以 systemd 为例):systemctl enable --now rsyncd
    2. 源端监听与同步脚本(示例)
      • 安装 inotify-tools;创建脚本 /root/rsync_inotify.sh
        • #!/bin/bash host=备份机IP src=/data0/htdocs/ /usr/bin/inotifywait -mrq --timefmt ‘%d/%m/%y %H:%M’ --format ‘%T %w%f%e’
          -e modify,delete,create,attrib “$src” | while read files; do /usr/bin/rsync -avz --delete --password-file=/etc/rsyncd/rsyncd.secrets
          “$src” “root@$host::htdocs” > > /var/log/rsync.log 2> & 1 echo “$files was rsynced” > > /var/log/rsync.log done
      • 后台运行:setsid /root/rsync_inotify.sh &
      • 防火墙放行:iptables -A INPUT -p tcp --dport 873 -j ACCEPT
    3. 安全与优化
      • 建议用 SSH 方式替代模块方式:rsync -avz -e ssh user@host:/src/ /dst/(需配置 SSH 免密登录)。
      • 避免事件风暴:合并短时间多次事件(节流/排队),仅在稳定后同步。
      • 谨慎使用 –delete,建议先演练或改为“备份端保留历史”。

三、时间触发定时备份 cron + tar/rsync

  • 适用场景:对实时性要求一般、更重视可控性与可审计性的备份(如每日全量、每周全量+每日增量)。
  • 文件/目录备份示例(tar 归档 + 保留策略)
    • 备份脚本 /usr/local/bin/backup_home.sh
      • #!/bin/bash set -e BACKDIR=“/backup/home/$(date +%F)” mkdir -p “$BACKDIR” tar czf “$BACKDIR/home_$(date +%F).tar.gz” -C /home .

        删除 30 天前的备份

        find /backup/home -type f -name “*.tar.gz” -mtime +30 -delete echo “$(date) Backup finished: $BACKDIR” > > /var/log/backup.log
    • 定时执行(每天 02:00):crontab -e 添加
      • 0 2 * * * /usr/local/bin/backup_home.sh
  • 远程增量备份示例(rsync over SSH)
    • 前提:配置 SSH 免密登录 到备份机。
    • 命令示例:rsync -avz --delete -e ssh /data/ user@backup:/backup/data/
    • 定时(每 6 小时):0 */6 * * * rsync -avz --delete -e ssh /data/ user@backup:/backup/data/
  • 数据库定时备份示例(MySQL)
    • 备份脚本 /usr/local/bin/backup_mysql.sh
      • #!/bin/bash mysqldump -u USER -p’PASS’ --single-transaction --routines --triggers DATABASE \

        “/backup/mysql/DATABASE_$(date +%F).sql” find /backup/mysql -type f -name “*.sql” -mtime +7 -delete

    • 定时(每天 02:30):30 2 * * * /usr/local/bin/backup_mysql.sh
  • 说明
    • 选择策略:全量(恢复快、占用大)、增量(省时省空间、恢复链复杂)、差异(折中)。
    • 建议将备份与清理分离到不同任务,便于排错与回滚。

四、数据库专用工具与策略

  • MySQL
    • 逻辑备份:mysqldump(适合中小规模、可移植性强),配合定时任务与保留策略。
    • 物理热备:Percona XtraBackup(支持 InnoDB 热备、增量、压缩与加密),适合大表与大库。
  • PostgreSQL
    • 推荐:pgBackRest(支持全量/增量/差异、并行、压缩与加密),通过配置文件管理策略与存储后端。
  • 通用建议
    • 明确 RPO/RTO,组合“全量+增量/差异”,定期做恢复演练与校验(如校验和、抽样导入)。

五、安全加固与运维要点

  • 传输与认证
    • 优先 SSH 密钥(禁用口令登录)、限制备份用户权限(最小权限原则)、备份目录 600/700 权限。
  • 日志与监控
    • 统一日志路径(如 /var/log/backup.log),记录开始/结束时间、文件列表、耗时与错误;接入 Zabbix/Nagios 做“备份是否生成/是否按时”的告警。
  • 保留与容量
    • 采用“按时间/数量”的保留策略(如保留 7/30 天),定期清理过期备份,监控磁盘使用率。
  • 恢复演练
    • 定期从备份恢复至测试环境,验证可用性与完整性;关键业务建议自动化演练与报告归档。

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


若转载请注明出处: Linux Trigger如何实现数据备份
本文地址: https://pptw.com/jishu/769695.html
如何利用Linux Trigger进行系统监控 Ubuntu清理垃圾文件有哪些方法

游客 回复需填写必要信息