暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

596

前言

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

工具对比

  • 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普通文件目录

    备份系统 
    快照及备份文件存储到/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/

    复制
    • 执行格式:system_snapshot.sh backup 快照绝对路径 备份文件绝对路径 备份目录 需要过滤的目录(多个目录空格隔开)

    • 执行实例:

  • 恢复系统or普通文件目录

    恢复系统备份快照 /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 /

    复制
    • 执行格式:system_snapshot.sh restore 快照绝对路径 备份文件绝对路径 恢复目录 需要恢复的文件或目录

    • 执行实例:

  • 设置定时备份系统

    每天凌晨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技术交流圈)留言交流哦。

文章转载自Python技术交流圈,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论