Linux 定时备份实操指南
一 核心概念与准备
二 快速上手步骤
sudo apt-get install cron,安装后服务会自动启动。#!/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
#!/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/*.shcrontab -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 -rgrep CRON /var/log/syslog;在 RHEL/CentOS 上查看 /var/log/cron。三 远程备份与免密登录
rsync -a --delete /data/backup/ user@192.168.10.17:/backup/server1/
ssh-keygen -t rsa -b 4096ssh-copy-id user@192.168.10.170 1 * * * /usr/bin/rsync -a --delete /data/backup/ user@192.168.10.17:/backup/server1/ >> /var/log/backup_rsync.log 2>&1
四 进阶工具与策略
| 工具 | 主要特点 | 典型场景 |
|---|---|---|
| rsync | 增量、保留属性、支持 SSH | 文件/目录定时同步与镜像 |
| tar | 归档与压缩、可排除文件 | 本地目录打包备份 |
| BorgBackup | 去重、压缩、加密 | 大量数据长期保留与加密 |
| Restic | 去重、加密、多后端 | 本地/远程安全备份 |
| Timeshift | 系统级快照、Btrfs 优化 | 系统还原点管理 |
五 常见问题与最佳实践
/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 做日志轮转;关键任务可增加邮件/企业微信/钉钉告警。--single-transaction 获取一致性快照;如有 MyISAM 表或需要绝对一致性,可在维护窗口短暂锁表或使用主从切换后备份从库。[mysqldump]
user=root
password=YOUR_PASSWORD