# 概述
# 备份概述
- linux 系统需要备份的数据,主要有以下几个目录
- /root/ 目录:root 用户的家目录
- /home/ 目录:普通用户的家目录
- /var/spool/mail/ 目录:邮件目录
- /etc/ 目录:重要的配置文件目录
- 其他目录:比如日志目录等
自己安装的服务的数据,如:
- apache 需要备份的数据
- 配置文件
- 网页主目录
- 日志文件
- mysql 需要备份的数据
- 源码包安装的 mysql:/usr/local/mysql/data/
- rpm 包安装的 mysql:/var/lib/mysql/
- 备份策略
- 完全备份:完全备份就是指把所有需要备份的数据全部备份,当然完全备份可以备份整块磁盘,整个分区或某个具体的目录,易恢复,简单,但是耗资源。
- 增量备份:第一天备份原始数据,第二天备份新增数量,第三天备份新增数量,等等等,也就是每天备份新增数据。一般备份后都要压缩。理论上最好。但是这种备份恢复起来较麻烦,要先恢复原始备份,再依次恢复增量备份数据。
- 差异备份:折中办法,第一次完整备份原始数据,第二天备份第二天新增数据,第三天备份第二天和第三天新增数据,第四天备份第二天、第三天、第四天新增数据。比完全备份占用空间稍微少些,比增量备份恢复要方便些。
# dump 和 restore 命令
完全备份完全可以使用 tar 压缩,cp 移动到备份目录即可,然后写个脚本,配合 cron job 每日备份。不过系统准备了一些更好的命令来操作备份。
- 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/ |
- 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 备份 |