插件窝 干货文章 如何进行Linux系统的备份与恢复

如何进行Linux系统的备份与恢复

备份 exclude backup 恢复 606    来源:    2025-04-10

Linux系统备份与恢复指南

常见备份方法

1. 使用tar命令备份

# 完整系统备份(排除不需要的目录)
sudo tar -cvpzf /backup/backup.tar.gz --exclude=/backup --exclude=/proc --exclude=/tmp --exclude=/mnt --exclude=/dev --exclude=/sys --exclude=/run /

2. 使用rsync命令备份

# 增量备份到外部存储
sudo rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / /mnt/backup/

3. 使用dd命令备份整个磁盘

# 备份整个磁盘到镜像文件
sudo dd if=/dev/sda of=/path/to/backup.img bs=4M status=progress

4. 使用专用备份工具

  • Timeshift: 适用于桌面系统的增量备份
  • BorgBackup: 支持去重和加密的备份工具
  • Duplicity: 支持加密和远程备份

恢复方法

1. 从tar备份恢复

# 从Live CD/USB启动后
mkdir /mnt/sysroot
mount /dev/sda1 /mnt/sysroot
tar -xvpzf /path/to/backup.tar.gz -C /mnt/sysroot --numeric-owner

2. 从rsync备份恢复

# 从Live环境
rsync -aAXv /mnt/backup/ /mnt/sysroot/

3. 从dd镜像恢复

# 警告: 这会覆盖目标磁盘所有数据
dd if=/path/to/backup.img of=/dev/sda bs=4M status=progress

自动化备份方案

使用cron定时备份

# 编辑crontab
sudo crontab -e

# 添加每周日凌晨3点备份
0 3 * * 0 /path/to/backup_script.sh

示例备份脚本

#!/bin/bash
# 定义变量
BACKUP_DIR="/backup"
DATE=$(date +%Y-%m-%d)
LOG_FILE="/var/log/backup.log"

# 创建备份目录
mkdir -p $BACKUP_DIR/$DATE

# 执行备份
echo "$(date) - 开始备份" >> $LOG_FILE
tar -cvpzf $BACKUP_DIR/$DATE/backup.tar.gz \
    --exclude=/backup \
    --exclude=/proc \
    --exclude=/tmp \
    --exclude=/mnt \
    --exclude=/dev \
    --exclude=/sys \
    --exclude=/run \
    / >> $LOG_FILE 2>&1

echo "$(date) - 备份完成" >> $LOG_FILE

注意事项

  1. 备份前验证:确保有足够的存储空间
  2. 定期测试恢复:备份没有定期测试等于没有备份
  3. 异地备份:至少保留一份备份在物理隔离的位置
  4. 加密敏感数据:特别是远程备份时
  5. 记录备份内容:维护备份内容的文档

高级选项

  • LVM快照:在备份前创建LVM快照,确保数据一致性
  • 数据库备份:对于MySQL/PostgreSQL等,使用专用工具(mysqldump, pg_dump)
  • 云备份:考虑使用AWS S3, Google Cloud Storage或Backblaze B2等云存储

通过合理选择备份策略和工具,可以确保Linux系统在出现故障时能够快速恢复。