如何配置Linux Trigger进行备份
导读:Linux 中的“Trigger”通常指两类自动化:时间触发的定时任务与事件触发的文件变更监控。下面给出可落地的配置方法与最佳实践,覆盖定时与实时两类备份场景。 一、方案总览与选型 时间触发:使用 Cron 或 Systemd Time...
Linux 中的“Trigger”通常指两类自动化:时间触发的定时任务与事件触发的文件变更监控。下面给出可落地的配置方法与最佳实践,覆盖定时与实时两类备份场景。
一、方案总览与选型
- 时间触发:使用 Cron 或 Systemd Timers,适合按天/周/月的固定频率备份,稳定、易维护。
- 事件触发:使用 inotify + rsync,对目录的创建、修改、删除等事件实时响应,适合高变更频率的数据(如网站目录、代码仓库)。
- 数据库备份:在定时或事件触发脚本中调用 mysqldump/Percona XtraBackup/pgBackRest 等工具,形成端到端备份链。
- 桌面与系统级:可用 Timeshift(系统快照)、Deja Dup(用户数据)快速完成备份配置。
- 自动化与监控:脚本化封装 + 日志留存 + 告警(如 Zabbix/Nagios)可显著提升可用性。
二、时间触发备份配置
- Cron 方式
- 编写备份脚本(示例为目录打包):
#!/usr/bin/env bash set -Eeuo pipefail SRC="/data" DEST="/backup" TS=$(date +"%Y%m%d_%H%M%S") mkdir -p "$DEST" tar -czf "$DEST/backup_$TS.tar.gz" -C "$SRC" . echo "$(date) Backup finished: $DEST/backup_$TS.tar.gz" > > /var/log/backup.log- 赋权并配置定时任务:
chmod +x /usr/local/bin/backup.sh crontab -e # 每天 02:00 执行 0 2 * * * /usr/local/bin/backup.sh > > /var/log/backup.log 2> & 1 - Systemd Timer 方式
- 服务单元:/etc/systemd/system/backup.service
[Unit] Description=Backup Service [Service] Type=oneshot ExecStart=/usr/local/bin/backup.sh- 定时器单元:/etc/systemd/system/backup.timer
[Unit] Description=Daily Backup Timer [Timer] OnCalendar=daily Persistent=true [Install] WantedBy=timers.target- 启用:
systemctl daemon-reload systemctl enable --now backup.timer - 数据库定时备份示例(MySQL)
将脚本加入 Cron 或 Systemd Timer 即可。#!/usr/bin/env bash mysqldump -u USER -p'PASS' --single-transaction --routines --triggers DATABASE \ > "/backup/db_$(date +%F).sql"
三、事件触发备份配置(实时)
- 适用场景:目录变更频繁,需要“改动即备份”。
- 核心思路:用 inotifywait 监听目录事件,触发 rsync 增量同步到备份目标(本地或远端)。
- 步骤
- 安装工具:
- Debian/Ubuntu:
sudo apt-get install -y inotify-tools rsync - CentOS/RHEL:
sudo yum install -y inotify-tools rsync
- Debian/Ubuntu:
- 基本监听脚本(避免并发执行):
#!/usr/bin/env bash SRC="/var/www/html" DEST="user@192.168.1.100:/data/backup/html" LOCK="/tmp/rsync_inotify.lock" inotifywait -mrq -e create,delete,modify,move,attrib "$SRC" | while read -r dir ev file; do # 简单防并发 flock -n "$LOCK" -c " rsync -azH --delete \"$SRC/\" \"$DEST\" > > /var/log/rsync_inotify.log 2> & 1 echo \"\$(date) \$ev \$file synced\" > > /var/log/rsync_inotify.log " done- 提升 inotify 监控规模(大量文件时):
# /etc/sysctl.conf fs.inotify.max_queued_events = 32768 fs.inotify.max_user_instances = 1024 fs.inotify.max_user_watches = 1048576 # 使配置生效 sysctl -p- 远端备份建议用 SSH 密钥认证,免交互登录;如需更高吞吐,可结合 rsync daemon 模式与模块配置。
- 安装工具:
四、备份策略与运维要点
- 策略组合:按 RPO/RTO 选择 全量/增量/差异;常见做法是“每日全量 + 每小时增量/日志备份”。
- 保留与清理:脚本内实现按 天数/数量 清理旧备份,避免磁盘被占满。
- 加密与权限:对备份数据启用 加密(传输与静态),备份目录仅授予必要权限(如 700)。
- 异地与多副本:本地盘 + 远端/云存储 双写,提升容灾能力。
- 监控与告警:记录 执行日志,用 Zabbix/Nagios 检查备份文件是否生成、任务是否失败,并配置 邮件/短信 告警。
- 定期验证:定期做 恢复演练 与 完整性校验(如校验和/恢复测试),确保备份可用。
五、快速选择建议
- 变更不频繁、以周期性为主:优先 Cron/Systemd Timers + tar/rsync。
- 变更频繁、需要近实时:使用 inotify + rsync,必要时配合 队列/锁 控制并发。
- 数据库:在定时/事件脚本中调用 mysqldump/Percona XtraBackup/pgBackRest。
- 桌面系统或系统快照:使用 Timeshift/Deja Dup 快速配置。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何配置Linux Trigger进行备份
本文地址: https://pptw.com/jishu/782946.html
