# 概述

# 备份概述

  1. linux 系统需要备份的数据,主要有以下几个目录
  • /root/ 目录:root 用户的家目录
  • /home/ 目录:普通用户的家目录
  • /var/spool/mail/ 目录:邮件目录
  • /etc/ 目录:重要的配置文件目录
  • 其他目录:比如日志目录等

自己安装的服务的数据,如:

  • apache 需要备份的数据
    • 配置文件
    • 网页主目录
    • 日志文件
  • mysql 需要备份的数据
    • 源码包安装的 mysql:/usr/local/mysql/data/
    • rpm 包安装的 mysql:/var/lib/mysql/
  1. 备份策略
  • 完全备份:完全备份就是指把所有需要备份的数据全部备份,当然完全备份可以备份整块磁盘,整个分区或某个具体的目录,易恢复,简单,但是耗资源。
  • 增量备份:第一天备份原始数据,第二天备份新增数量,第三天备份新增数量,等等等,也就是每天备份新增数据。一般备份后都要压缩。理论上最好。但是这种备份恢复起来较麻烦,要先恢复原始备份,再依次恢复增量备份数据。
  • 差异备份:折中办法,第一次完整备份原始数据,第二天备份第二天新增数据,第三天备份第二天和第三天新增数据,第四天备份第二天、第三天、第四天新增数据。比完全备份占用空间稍微少些,比增量备份恢复要方便些。

# dump 和 restore 命令

完全备份完全可以使用 tar 压缩,cp 移动到备份目录即可,然后写个脚本,配合 cron job 每日备份。不过系统准备了一些更好的命令来操作备份。

  1. dump 命令
    命令是 dump [选项] 备份之后的文件名 原文件或目录 。选项:
  • -level: 就是我们说的 0-9 十个备份级别。0 就是完全备份,1 就是第一次增量备份,2 是第二次,...
  • -f 文件名:指定备份之后的文件名
  • -u:备份成功之后,把备份时间记录在 /etc/dumpdates 文件
  • -v:显示备份过程中更多的数据信息
  • -j:调用 bzlib 库压缩备份文件,其实就是把备份文件压缩为.bz2 格式
  • -W:显示允许被 dump 的分区的备份等级及备份时间
# 安装 dump
[root@core-pods-3 grub2]# rpm -qa | grep dump
[root@core-pods-3 grub2]# yum -y install dump
[root@core-pods-3 grub2]# rpm -qa|grep dump
dump-0.4-0.23.b44.el7.x86_64
# 备份分区
[root@core-pods-3 ~]# dump -0uj -f /root/boot.bak.bz2 /boot/   # 首次完全备份
  DUMP: Date of this level 0 dump: Tue Aug 16 10:51:06 2022
  DUMP: Dumping /dev/sda1 (/boot) to /root/boot.bak.bz2
  DUMP: Label: none
  DUMP: Writing 10 Kilobyte records
  DUMP: Compressing output at compression level 2 (bzlib)
  DUMP: mapping (Pass I) [regular files]
  ... ...
[root@core-pods-3 ~]# cat /etc/dumpdates        # 查看备份时间文件
[root@core-pods-3 ~]# cp install.log/boot/    # 赋值日志文件到 boot 分区
[root@core-pods-3 ~]# dump -1uj -f /root/boot.bak1.bz2 /boot/     # 增量备份 /boot 分区,并压缩
[root@core-pods-3 ~]# dump -W   # 查询分区的备份时间及备份级别
# 备份文件或目录
# 完全备份 /ect/ 目录,只能使用 0 级别进行完全备份,而不再支持增量备份
[root@core-pods-3 ~]# dump -0j -f /root/etc.dump.bz2 /etc/
  1. restore 命令

命令是 restore [模式选项] [选项]

模式选项:restore 命令常用的模式有以下四种,这四个模式不能混用。

  • -C:比较备份数据和实际数据的变化
  • -i:进入交互模式,手工选择需要恢复的文件。
  • -t:查看模式,用于查看备份文件中拥有哪些数据。
  • -r:还原模式,用于数据还原。

选项有

  • -f:指定备份文件的文件名

比较备份数据和实际数据的变化

[root@core-pods-3 ~]# mv /boot/vmlinuz-3.10.0-514.el7.x86_64 /boot/vmlinuz-3.10.0-514.el7.x86_64.bak   # 把 boot 目录中内核镜像文件改个名字
# 比较模式
[root@core-pods-3 ~]# restore -C -f /root/boot.bak.bz2    # restore 发现内核镜像文件丢失
# 查看模式
[root@core-pods-3 ~]# restore -t -f boot.bak.bz2 
# 还原模式:还原 boot.bak.bz2 分区备份,先还原完全备份的数据
[root@core-pods-3 ~]# mkdir boot.test  
[root@core-pods-3 ~]# cd boot.test/
[root@core-pods-3 ~]# restore -r -f /root/boot.bak.bz2   # 解压缩
[root@core-pods-3 ~]# restore -r -f /root/boot.bak1.bz2  # 恢复增量备份数据
# 还原 /etc/ 目录的备份 etc.dump.bz2
[root@core-pods-3 ~]# restore -r -f etc.dump.bz2    # 还原 etc.dump.bz2 备份