备份
CentOS7以前的备份dump和restore
要把重要文件备份,如/root/目录、/home/目录、/var/spool/mail/目录、/etc/目录、其他目录(如日志目录),对于特别重要的数据,还需要异地备份。
常用服务也有一些需要备份的文件,如日志文件、数据文件、配置文件等。
备份有几种:
1、完全备份,也就是需要的数据整体备份
2、增量备份,先进行一个完全备份,然后将新产生的数据依次备份,如第4天将新产生的数据备份,第5天将新产生的数据备份。。
3、差异备份,先进行一个完全备份,然后将总体差异的数据依次备份,如第4天将数据与备份数据对比,将差异数据备份,第5天将数据与备份数据对比,将差异数据备份。它不一定优于增量备份。
备份可以用dump命令,但是这个命令默认是没有安装的。
执行模式:dump [选项] 备份之后的文件名 原文件或目录
-数字: 就是我们说的0-9十个备份级别,0代表完全备份,1代表增量备份。
-f 文件名: 指定备份之后的文件名
-u: 备份成功之后,把备份时间记录在/etc/dumpdates文件
-v: 显示备份过程中更多的输出信息
-j: 调用bzlib库压缩备份文件,其实就是把备份文件压缩 为.bz2格式,默认压缩等级是2
-W: 显示允许被dump的分区的备份等级及备份时间
注意dump命令只有备份分区时可以采用增量备份,备份目录时只能采用完全备份。
对分区备份:dump -0uj -f /root/boot.bak.bz2 /boot/
再执行增量备份:dump -1uj -f /root/boot.bak1.bz2 /boot/
恢复备份可以用restore命令:restore [模式选项] [选项]
restore命令常用的模式有以下四种,这四个模式不能混用:
-C:比较备份数据和实际数据的变化
-i: 进入交互模式,手工选择需要恢复的文件。
-t: 查看模式,用于查看备份文件中拥有哪些数据。
-r: 还原模式,用于数据还原。
选项有:
-f: 指定备份文件的文件名
比较备份与实际的区别时要指定备份文件名,根据error数来判断。
增量备份恢复时要根据多个备份文件名恢复多次。恢复时最好新建目录然后进入,这样恢复的文件都在该目录下。
XFS文件系统备份命令xfsdump
xfsdump命令可以进行文件系统的完整备份(full backup),还可以进行累积备份(incremental backup),在使用该命令备份文件系统时要注意,该命令只能root执行,且只能备份已挂载的文件系统,且必须是XFS文件系统。
将/boot挂载点处的文件系统备份到/srv/boot.dump:
xfsdump -l 0 -L boot_all -M boot_all -f /srv/boot.dump /boot
其中-l后数字是指定等级,0代表完整备份;-L后跟该文件系统的简单说明;-M后填写媒体的简单说明;-f后接备份产生的备份文件名。
查看备份文件系统的信息:xfsdump -I
,如果之前用过xfsdump会产生备份文件系统的信息,其中有个关键信息是备份资料的level,如果是完整备份则level为0。
如果经过一段时间后/boot文件系统发生了改变,此时就可以进行差异备份:
xfsdump -l 1 -L boot_2 -M boot_2 -f /srv/boot.dump1 /boot
注意生成的备份文件名要改变。
XFS文件系统还原命令xfsrestore
查看备份文件资料:xfsrestore -I
,该命令可以找出所有用xfsdump备份的数据,这个命令的作用和xfsdump -I
相同。
要复原文件系统首先要指定该文件,要用上述命令查看文件的session label name,如果要复原/boot文件系统,备份文件名是/srv/boot.dump,session label name是boot_all,那么还原命令就是:
xfsrestore -f /srv/boot.dump -L boot_all /boot
如果boot文件下还有别的文件,此时复员后同名的文件会被覆盖,其他的文件会被保留,如果想解压出来完全是该文件系统,那么就直接指定一个新目录即可。
如果要复原累积备份的资料,那么就在level0还原的基础上再还原level1:
xfsrestore -f /srv/boot.dump1 /root
用该命令还可以仅还原部分文件,如果备份文件是/srv/boot.dump,预计还原到/tmp/root3中,那么就可以执行命令:xfsrestore -f /srv/boot.dump -i /tmp/root3
,在该命令状态下执行ls命令查看可以复原哪些文件,这些文件都是备份文件中的,然后使用add 文件名
来一个个还原即可。
备份命令dd
之前用过dd命令来生成大文件:dd if=/dev/zero of=/sev/loopdev bs=1M count=512
if是输入文件,意思是一个一直输出0的装置;of是输出文件,也就是即将生成的大文件路径;bs是block的大小;count是block的数量。
执行完毕后就生成了一个512M的大文件。
将一个文件备份到另一个位置:dd if=要备份的文件 of=新文件位置
,这类似于cp。
dd命令来备份是一个一个扇区去读写的,它会将没有用到的扇区也备份,故新备份文件和原来占用的磁盘空间完全相同,它不会因为文件系统的差异出现不同的响应,因此这个if和of可以跟文件系统,也可以跟设备名等等,这个命令也可以用来创造一个完全相同的磁盘分区,无需格式化,因为扇区内的MBR等都会被完整的复制。
备份命令cpio
cpio可以备份任何内容,包括装置设备文件,但是它必须配合find等命令来找到文件,将/boot下所有文件备份到/tmp/boot.cpio:
find boot | cpio -ocvB > /tmp/boot.cpio
,这里一般要进入根目录,然后指定boot文件时用相对路径,这样在以后还原时就不会覆盖boot中的内容了。
还原:cpio -idvc < /tmp/boot.cpio