目录
Linux系统之备份与恢复
1、概述
Linux的备份和恢复一般有两种方式:
(1)把需要的文件/分区用tar打包,下次需要恢复的时候,再解压开覆盖即可
(2)使用dump和restore命令
2、安装dump和restore
yum -y install dump
yum -y install restore
若在安装dump和restore中遇到为 repo ‘appstream’ 下载元数据失败 : Cannot prepare internal mirrorlist: No URLs in mirrorlist错误,可以尝试如下方法进行解决:
方法一:
运行如下命令
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-Linux-*
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g'
再重新安装包,运行如下:
sudo dnf install centos-release-stream -y
sudo dnf swap centos-{linux,stream}-repos -y
sudo dnf distro-sync -y
方法二:
删除yun.repos.d下所有东西,进行更换
rm -rf /etc/yum.repos.d/*
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.sau.edu.cn/repo/Centos-8.repo
3、使用dump完成备份
dump支持分卷和增量备份。
增量备份指的是上次备份后修改/增加过的文件,也称差异备份。
(1)基本语法
dump [-cu] [-123456789] [-f<备份后文件名>] [-T<日期>] [目录或文件系统]
dump []-wW
说明:
-
-c:创建新的归档文件,并将由一个或多个文件参数所指定的内容写入归档文件的开头。
-
-0123456789:备份的层级。0为最完整备份,会备份所有文件。若指定。以上的层级,则备份至上一次备份以来修改或新增的文件,到9后,可以再次轮替
-
-f<备份后文件名>:指定备份后文件名
-
j:调用bzlib 库压缩备份文件,也就是将备份后的文件压缩成 Bz2格式,让文件更小
-
-T<日期>:指定开始备份的时间与日期
-
-u:备份完毕后,在/ete/dumpdares 中记录备份的文件系统,层级,日期与时间等
-
-t:指定文件名,若该文件己存在备份文件中,则列出名称
-
-W:显示需要备份的文件及其最后一次备份的层级,时间,日期
-
-w:与-W类似,但仅显示需要备份的文件。
示例:
将/boot分区所有内容备份到/opt/boot.bak0.bz2文件中,备份层级为0:dump -0uj -f /opt/boot.bak0.bz2 /boot
在/boot目录下新增文件,备份层级为“1”:dump -1uj -f/opt/boot.bak1.bz2 /boot
使用dump命令配合crontab命令可以实现自动备份。
(2)dump -W
显示需要备份的文件及其最后一次备份的层级,时间,日期。
dump -W
(3)查看备份时间文件
cat /etc/dumpdates
(4)dump备份文件或目录
备份分区时支持增量备份,但备份文件或目录,不支持增量备份,即只能使用0级别的备份。
示例:
备份/etc整个目录:dump -0j -f /opt/etc.bak.ba2 /etc
4、使用restore完成恢复
restore命令用来恢复已备份的文件,可以从dump生成的备份文件中恢复原文件。
语法:
restore [模式选项] [选项]
模式选项:
- -C:使用对比模式,将备份的文件与已存在的文件相互对比
- -i:使用交互模式,在进行还原操作时,restore指令将依序询问用户
- -r:进行还原模式
- -t:查看模式,看备份文件有哪些文件
以上四种模式不能混用,即在一次命令中只能指定一种!
选项:
- -f<备份设备>:从指定的文件中读取备份数据,进行还原操作
示例:
restore命令查看模式,看备份文件有哪些数据/文件:restore -t -f boot.bak0.bz2
restore命令还原模式:mkdir /opt/boottmp;cd /opt/boottmp;restore -r -f /opt/boot.bak0.bz2(恢复到第1次完全备份状态);restore -r -f /opt/boot.bak1.bz2(恢复到第2次完全备份状态)
注意:若有增量备份,需要把增量备份文件也进行恢复,有几个增量备份文件,就要恢复几个,按顺序来恢复即可。
restore命令恢复备份的文件,或整个目录的文件:
语法:restore -r -f 备份好的文件
mkdir etctmp;cd /etctmp;restore -r -f /opt/etc.bak0.bz2