Linux 中的“Trigger”通常指两类自动化:时间触发的定时任务与事件触发的文件变更监控。下面给出可落地的配置方法与最佳实践,覆盖定时与实时两类备份场景。
一、方案总览与选型
二、时间触发备份配置
#!/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
[Unit]
Description=Backup Service
[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup.sh
[Unit]
Description=Daily Backup Timer
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.target
systemctl daemon-reload
systemctl enable --now backup.timer
#!/usr/bin/env bash
mysqldump -u USER -p'PASS' --single-transaction --routines --triggers DATABASE \
> "/backup/db_$(date +%F).sql"
将脚本加入 Cron 或 Systemd Timer 即可。三、事件触发备份配置(实时)
sudo apt-get install -y inotify-tools rsyncsudo yum install -y inotify-tools rsync#!/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
# /etc/sysctl.conf
fs.inotify.max_queued_events = 32768
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
# 使配置生效
sysctl -p
四、备份策略与运维要点
五、快速选择建议