Linux系统备份与恢复实操指南
一 备份策略与范围
二 常用工具与命令示例
sudo tar cvpzf backup_$(date +%F).tar.gz \
--exclude=/proc --exclude=/sys --exclude=/dev --exclude=/run \
--exclude=/mnt --exclude=/media --exclude=/tmp \
--exclude=/backup_*.tar.gz /
sudo tar xvpfz backup_YYYY-MM-DD.tar.gz -C /
# 首次全量
tar -czvpf full.tar.gz -g snapshot.snar /var
# 后续增量
tar -czvpf inc1.tar.gz -g snapshot.snar /var
find /var -mtime -1 -print > filelist.txt
tar -czvf diff_$(date +%F).tar.gz -T filelist.txt
rsync -aAXv --delete /data/ /backup/data/
rsync -aAXv --delete /data/ user@remote:/backup/data/
sudo dd if=/dev/sda of=/backup/sda_$(date +%F).img bs=4M
sudo dd if=/dev/sda1 of=/backup/sda1_$(date +%F).img bs=4M
sudo dd if=/dev/sda of=/backup/mbr_$(date +%F).img bs=512 count=1
sudo dd if=/backup/mbr_YYYY-MM-DD.img of=/dev/sda bs=512 count=1
mysqldump -u USER -p --single-transaction --routines --triggers DATABASE > db_$(date +%F).sql
# 恢复
mysql -u USER -p DATABASE < db_YYYY-MM-DD.sql
pg_dump -U USER -h localhost -F c -b -v -f db_$(date +%F).dump DATABASE
# 恢复
pg_restore -U USER -d DATABASE -v db_YYYY-MM-DD.dump
以上命令覆盖了系统/文件、增量/差异、整盘镜像与数据库备份的常见场景,参数如 -aAX 可保留权限、ACL、扩展属性,适合生产环境使用。
三 恢复流程与要点
mysql < backup.sql;PostgreSQL 使用 pg_restore 指向目标库。dd if=backup.img of=/dev/sda bs=4M(极度危险,务必核对设备名)。dd if=backup_sda1.img of=/dev/sda1 bs=4M。dd if=mbr.img of=/dev/sda bs=512 count=1。四 自动化与工具选型
# 全量(每日 2:00)
0 2 * * * /usr/bin/tar czvpf /backup/full_$(date +\%F).tar.gz -g /backup/snapshot.snar --exclude=/proc --exclude=/sys --exclude=/dev --exclude=/run --exclude=/mnt --exclude=/media --exclude=/tmp --exclude=/backup_*.tar.gz /
# 增量(每小时)
0 * * * * /usr/bin/tar czvpf /backup/inc_$(date +\%F_%H).tar.gz -g /backup/snapshot.snar /var
五 注意事项与常见坑
--single-transaction),避免备份过程中产生不一致数据。