如何使用Linux Trigger进行定时备份
导读: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,安装后服务会自动启动。
- 多数发行版默认已安装 cron;如未安装可使用包管理器安装,例如在 Debian/Ubuntu 上:
- 步骤 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
- 文件目录备份脚本(使用 tar)
- 步骤 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 -l、crontab -r
- 编辑当前用户的计划任务:
- 步骤 4 验证与排错
- 查看系统日志以确认任务是否执行:在 Debian/Ubuntu 上查看 /var/log/syslog,或使用
grep CRON /var/log/syslog;在 RHEL/CentOS 上查看 /var/log/cron。
- 查看系统日志以确认任务是否执行:在 Debian/Ubuntu 上查看 /var/log/syslog,或使用
三 远程备份与免密登录
- 使用 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。
- cron 执行环境的 PATH 较精简,脚本中建议使用绝对路径(如
- 避免并发与锁竞争
- 在脚本开始处加锁文件,防止上一次未结束时重复执行:
lock="/var/run/backup.lock" exec 200> "$lock" flock -n 200 || { echo "Another backup is running"; exit 1; }
- 在脚本开始处加锁文件,防止上一次未结束时重复执行:
- 日志与告警
- 统一输出到日志文件,并配合
logrotate做日志轮转;关键任务可增加邮件/企业微信/钉钉告警。
- 统一输出到日志文件,并配合
- 数据库一致性
- 对于 InnoDB,使用
--single-transaction获取一致性快照;如有 MyISAM 表或需要绝对一致性,可在维护窗口短暂锁表或使用主从切换后备份从库。
- 对于 InnoDB,使用
- 安全
- 避免在命令行中明文写密码,可使用 ~/.my.cnf 配置凭据,权限设为 600:
[mysqldump] user=root password=YOUR_PASSWORD - SSH 密钥妥善保管,禁用口令登录;备份目录与日志文件权限最小化。
- 避免在命令行中明文写密码,可使用 ~/.my.cnf 配置凭据,权限设为 600:
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何使用Linux Trigger进行定时备份
本文地址: https://pptw.com/jishu/760642.html
