Linux系统快照一键备份恢复、不同机器恢复、增量备份恢复

Linux系统快照一键备份恢复、不同机器恢复、增量备份恢复

前言

  • 由于前段时间在做一个自动化部署开发环境的项目需要重复安装多种服务以及中间件,但是生产环境的服务器不像自己的虚拟机可以使用快照,如果直接操作会导致每次测试完就要重装系统,这肯定行不通,于是开始想办法做系统快照备份。

工具对比

  • tar:

    • 保留权限
    • 适合备份整个目录
    • 可以选择不同的压缩方式
    • 如果选择不压缩还能实现增量备份,部份还原,参考man tar
  • dd:

    • 对块进行操作,能备份整个硬盘,包括分区表以及其他Linux不能很好支持的文件系统
    • 可以进行压缩
  • 经过大量测试发现tar最适合我现在的测试场景

  • 以下测试基于Rocky Linux系统 使用tar进行备份恢复操作

系统快照备份

  • 创建备份
# 创建备份目录
mkdir /backup/ 


# 全量系统备份实例
tar -g snapshot -cvpzf 
    /backup/full_backup.tar.gz \
    --exclude=/proc \
    --exclude=/lost+found \
    --exclude=/mnt \
    --exclude=/sys \
    --exclude=/media \
    --exclude=/backup \
    / 


# 增量系统备份实例(改下备份文件名即可)
tar -g snapshot -cvpzf 
    /backup/diff_backup.tar.gz \
    --exclude=/proc \
    --exclude=/lost+found \
    --exclude=/mnt \
    --exclude=/sys \
    --exclude=/media \
    --exclude=/backup \
    / 
    

# 注释
--exclude:忽略备份的目录

系统快照恢复

  • 本机系统备份恢复
# 全量备份恢复
tar -g snapshot -zxvpf /backup/full_backup.tar.gz -C / etc home run usr var root

# 增量备份恢复 
tar -g snapshot -zxvpf /backup/diff_backup.tar.gz -C / etc home run usr var root

# 恢复SELinux文件属性
restorecon -Rv /etc /home /run /usr /var /root

# 保险起见在执行一下
restorecon -Rv /

# 重启电脑
reboot
  • 本机系统备份恢复至其他机器
# 全量备份恢复
tar -g snapshot -zxvpf /backup/full_backup.tar.gz -C / etc home run usr var root

# 增量备份恢复 
tar -g snapshot -zxvpf /backup/diff_backup.tar.gz -C / etc home run usr var root

# 恢复SELinux文件属性
restorecon -Rv /etc /home /run /usr /var /root

# 保险起见在执行一下
restorecon -Rv /

# 查看/boot 挂载位置 
df -h
# 本次测试挂载位置
/dev/sda2           1014M  188M  827M   19% /boot

# 查看/dev/sda2 的 uuid
blkid
# 本次测试 UUID="11e22d15-8d1f-4f12-ae62-7c2048e190f9"
/dev/sda2: UUID="11e22d15-8d1f-4f12-ae62-7c2048e190f9" BLOCK_SIZE="4096" TYPE="xfs" PARTUUID="c21f8a20-b8d8-528d-acab-a2ba9a76115d"


# 修改 /etc/fstab 文件中UUID值修改为上面查到的UUID 可使用vim等编辑工具或者使用sed替换
sed -i "s/old UUID/new UUID/g" /etc/fstab

# 注:仔细观察fstab其他挂载目录是否正确 如不正确修改为本机实际挂载位置

# 如果系统装有mysql,删除以下文件,默认如下
mv /var/lib/mysql/auto.cnf /var/lib/mysql/auto.cnf.back

# 重启电脑
reboot

使用脚本进行备份恢复

  • 备份系统or普通文件目录

    • 执行格式:system_snapshot.sh backup 快照绝对路径 备份文件绝对路径 备份目录 需要过滤的目录(多个目录空格隔开)
    • 执行实例:
    # 备份系统 
    # 快照及备份文件存储到/data/test/
    system_snapshot.sh backup /data/test/snapshot /data/test/systembackup / /proc /lost+found /mnt /sys /media /data
    
    # 备份普通目录或文件
    # 实例:备份/data/整个目录 快照及备份文件存储到/backup/
    system_snapshot.sh backup /backup/snapshot /backup/data-bak /data /backup/
    
  • 恢复系统or普通文件目录

    • 执行格式:system_snapshot.sh restore 快照绝对路径 备份文件绝对路径 恢复目录 需要恢复的文件或目录
    • 执行实例:
    # 恢复系统备份快照 /data/test/systembackup_20221230-175555.tar.gz
    system_snapshot.sh restore /data/test/snapshot /data/test/systembackup_20221230-175555.tar.gz / etc home run usr var root
    
    # 恢复/data/目录备份快照/backup/data-bak_20221230-175720.tar.gz
    system_snapshot.sh restore /backup/snapshot /backup/data-bak_20221230-175720.tar.gz /
    
  • 设置定时备份系统

    # 每天凌晨1点开始备份/data目录 忽略备份full_backup.tar.gz文件
    00 01 * * * system_snapshot.sh backup /backup/snapshot /backup/data-bak /data /backup/ >> /bak/crontab.log 2>&1
    
  • 脚本可实现自动增量备份系统或普通文件目录

结语

  • 以上就是本人测试linux本机系统一键备份恢复、linux本机系统备份、不同机器恢复 的全过程。
  • 如有操作或者其他问题欢迎去我的博客(www.loganjin.cn)留言或者微信公众号(Python技术交流圈)留言交流哦。
  • 4
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值