在设置备份前,需要先规划以下要素:
备份内容:
备份频率:
备份存储:
# 基本语法
rsync -avz --delete /源目录 /目标目录
# 示例:备份到外部硬盘
rsync -avz --delete /home /media/external_disk/backups/home_backup
rsync -avz --delete /etc /media/external_disk/backups/etc_backup
# 远程备份示例
rsync -avz -e ssh /home user@remote_server:/backups/server_home
# 创建压缩备份
tar -cvpzf /backup/system_backup_$(date +%Y%m%d).tar.gz --exclude=/backup --exclude=/proc --exclude=/tmp --exclude=/mnt --exclude=/dev --exclude=/sys /
# 恢复命令
tar -xvpzf /backup/system_backup.tar.gz -C /
# 安装
sudo apt install timeshift # Debian/Ubuntu
sudo dnf install timeshift # Fedora
# 配置为BTRFS快照模式或RSYNC模式
# 安装
sudo apt install borgbackup # Debian/Ubuntu
sudo dnf install borgbackup # Fedora
# 初始化仓库
borg init --encryption=repokey /path/to/repo
# 创建备份
borg create /path/to/repo::system-backup-{now} /home /etc
# 列出备份
borg list /path/to/repo
创建自动化备份脚本 /usr/local/bin/system_backup.sh
:
#!/bin/bash
# 变量定义
BACKUP_DIR="/media/backup_disk"
LOG_FILE="/var/log/backup.log"
DATE=$(date +%Y%m%d)
# 创建备份目录
mkdir -p $BACKUP_DIR/$DATE
# 1. 备份/etc目录
echo "[$(date)] 开始备份/etc目录" >> $LOG_FILE
rsync -avz --delete /etc $BACKUP_DIR/$DATE/etc_backup >> $LOG_FILE 2>&1
# 2. 备份/home目录
echo "[$(date)] 开始备份/home目录" >> $LOG_FILE
rsync -avz --delete /home $BACKUP_DIR/$DATE/home_backup >> $LOG_FILE 2>&1
# 3. 备份MySQL数据库(如果有)
if [ -x "$(command -v mysql)" ]; then
echo "[$(date)] 开始备份MySQL数据库" >> $LOG_FILE
mysqldump -u root -p[password] --all-databases > $BACKUP_DIR/$DATE/mysql_backup.sql 2>> $LOG_FILE
fi
# 4. 打包并压缩备份
echo "[$(date)] 开始打包备份" >> $LOG_FILE
tar -cvpzf $BACKUP_DIR/full_backup_$DATE.tar.gz $BACKUP_DIR/$DATE >> $LOG_FILE 2>&1
# 清理临时文件
rm -rf $BACKUP_DIR/$DATE
echo "[$(date)] 备份完成" >> $LOG_FILE
设置脚本可执行权限:
sudo chmod +x /usr/local/bin/system_backup.sh
使用cron设置自动备份:
sudo crontab -e
添加以下内容实现每周日凌晨2点执行完整备份:
0 2 * * 0 /usr/local/bin/system_backup.sh
每天凌晨1点执行增量备份:
0 1 * * * rsync -avz --delete /home /media/backup_disk/daily_home_backup
定期验证备份完整性:
# 检查备份文件
tar -tzf /backup/full_backup.tar.gz | head
# 对于rsync备份
diff -r /home /media/backup_disk/home_backup
执行恢复演练:
# 创建快照
lvcreate -L 10G -s -n snap_root /dev/vg00/lv_root
# 挂载快照
mkdir /mnt/snap
mount /dev/vg00/snap_root /mnt/snap
# 备份快照内容
rsync -avz /mnt/snap/ /backup/lvm_snapshot_backup/
# 卸载并删除快照
umount /mnt/snap
lvremove /dev/vg00/snap_root
# 安装rclone
sudo apt install rclone
# 配置云存储
rclone config
# 同步备份到云
rclone sync /local/backup remote:backup-bucket
设置备份监控:
# 在备份脚本最后添加邮件通知
if [ $? -eq 0 ]; then
echo "备份成功 $(date)" | mail -s "备份成功通知" admin@example.com
else
echo "备份失败 $(date)" | mail -s "备份失败警告" admin@example.com
fi
通过以上步骤,您可以建立一个全面、可靠的Linux系统备份策略,确保数据安全和系统可恢复性。