目录
1、数据备份简介
1.Linux服务器中哪些数据需要备份
1)Linux系统重要数据
2)安装服务的数据
配置文件:
网页主目录:
日志文件:
二、备份策略(方式)
1.完全备份
2.增量备份
3.差异备份
三、备份工具dd
1.命令格式:
2.列题
例1:只备份文件
例2:备份分区为一个文件:
例3:备份分区到另一个新分区
例4:整盘备份:
3.dd缺点
四、XFS文件系统备份
XFSdump使用注意事项:
选项:
1、备份整个分区。
2、 指定备份时免交互操作,方便后期做定时备份
3、指定只备份分区中某个目录
4、查看备份信息与内容
xfsrestore文件系统恢复
五、增量备份
1、对上面的内容进行第一次全备
2、增加一些内容,然后进行第1次增量备份
3、再次增加内容,然后进行level 2级别的增量备
/root/目录:
/root目录是管理员的家目录,很多管理员会习惯于在这个目录中保存一些相关数据,那么当进行数据备份时,需要备份此目录。
/home/目录:
/home目录是普通用户家目录,如果是生产环境的服务器,这个目录中也会保存大量的重要数据,应该备份。
/etc/目录:
系统重要的配置文件保存目录。
我们的Linux服务器中会安装各种各样的应用程序,这些程序当然也有重要数据需要备份。不过应用程序是多种多样的,每种应用程序到底应该备份什么数据,也不尽相同,要具体情况具体对待。我们这里拿最常见的apache服务和mysql服务举例:
apache需要备份如下内容:
RPM包安装了apache,需要备份/etc/httpd/conf/httpd.conf。源码包安装的apache则备份/usr/local/apache2/conf/httpd.conf。
RPM包安装的apache需要备份/var/www/html/目录中所有数据。源码包安装的apache需要备份/usr/local/apache2/htdocs/目录中所有数据。
RPM包安装的apache需要备份/var/log/httpd/目录中所有日志。源码包安装的apache需要备份/usr/local/apache2/logs/目录中所有日志。
完全备份就是指把所有需要备份的数据全部备份,当然完全备份可以备份整块硬盘,整个分区或某个具体的目录。完全备份的好处就是数据恢复方便,因为所有的数据都在同一个备份中,所以只要恢复完全备份,所有的数据就会被恢复。如果完全备份的是整块硬盘,那么甚至都不需要数据恢复,只要把备份硬盘安装上,服务器就会恢复正常。可是完全备份的缺点也很明显,那就是需要备份的数据量较大,备份时间较长,占用的空间较多,所以完全备份不可能每天执行。
我们一般会对关键的服务器进行整盘完全备份,如果出现问题,可以很快的使用备份硬盘进行替换,从而减少损失。甚至会对关键服务器搭设一台一模一样的服务器,这样只要远程几个命令(或使用shell脚本自动检测,自动进行服务器替换。)备份服务器就会解体原本的服务器,使我们的故障响应时间缩短为最短。
完全备份随着数据量的加大,备份耗费的时间和占用的空间会越来越多,所以完全备份不会也不能每天进行。这时增量备份的作用就体现出来了。增量备份是指先进行一次完全备份,服务器运行一段时间之后,比较当前系统和完全备份数据之间的差异,只备份有差异的数据而已。服务器继续运行,再经过一段时间运行之后,进行第二次增量备份,第二次增量备份时,当前系统是和第一次增量备份的数据进行比较,也是只备份有差异的数据。而第三次增量备份是和第二次增量备份的数据进行比较,以此类推。
假设我们第一天时,进行一次完全备份。第二天增量备份时,只会备份第二天和第一天之间的差异数据,但是第二天的总备份数据是完全备份+第一次增量备份的数据。第三天增量备份,只会备份第三天和第二天之间的差异数据,第三天的总备份数据是完全备份+第一次备份数据+第二次备份数据。当然第四天增量备份时,只会备份第四天和第三天的差异数据,数据是完全备份+第一次增量备份+第二次增量备份+第三次增量备份数据。
这种备份的好处是每次备份需要备份的数据较少,耗时较少,占用的空间较少。坏处是数据恢复比较麻烦,如上图,那么当数据恢复时,就要先恢复完全备份的数据,再依次恢复第一次增量备份的数据,第二次增量备份的数据和第三次增量备份的数据,最终才能恢复所有的数据。
差异备份也要先进行依次完全备份,但是和增量备份不同的地方是,每次差异备份都是备份和原始的完全备份不同的数据,也就是说差异备份每次备份的参照物是原始的完全备份,而不是上一次的差异备份。
假设我们第一天时,也进行一次完全备份。第二天差异备份时,会备份第二天和第一天之间的差异数据,而第二天备份的数据是:完全备份+第一次差异备份的数据。第三天进行差异备份时,还是会和第一天的原始数据进行对比,把第二天和第三天所有的数据都备份在第二次差异备份数据中,第三天的备份数据是:完全备份+第二次差异备份的数据。第四天进行差异备份时,也是会和第一天的原始数据对比,把第二天、第三天和第四天所有的差异数据都备份到第三次差异备份数据中,第四天的备份数据是:完全备份+第三次差异备份的数据。
差异备份相比较而言,即不要像完全备份一样把所有数据都进行备份,也不像增量备份数据恢复时那么麻烦。只要先恢复完全备份的数据,再恢复差异备份的数据即可。不过随着时间的增加,和完全备份相比,差异的数据越来越多,那么差异备份也可能变得数据庞大,备份缓慢,占用空间较大。(兼顾)
dd if=“输入文件” of=“输出文件” bs=“数据块” count=“数量”
参数:
if:定义输入数据的文件,也可以是输入设备。
of:定义输出数据的文件,也可以是输出设备。
bs:指定数据块的大小,也就是定义一次性读取或写入多少字节。默认数据块大小是512字节。
count:指定bs的数量。
命令如下:
【】# dd if=/etc/httpd/conf/httpd.conf of=/tmp/httpd.bak
记录了67+1 的读入 #数据占了写满的67个数据块,及1个没有写满的数据块。
记录了67+1 的写出 #默认数据块大小是512字节。
34418字节(34 kB)已复制,0.0368821 秒,933 kB/秒
dd命令还可以用来直接备份某个分区,当然可以把分区备份成为一个备份文件,也可以直接备份成另一个新的分区。先来看看如何把分区备份成文件:
【】# dd if=/dev/sda1 of=/tmp/boot.bak
记录了409600+0 的读入
记录了409600+0 的写出
209715200字节(210 MB)已复制,9.46323 秒,22.2 MB/秒 #备份完成。
【】# ll -h /tmp/boot.bak #查看。
-rw-r--r-- 1 root root 200M 11月 17 15:40 /tmp/boot.bak
【】# dd if=/tmp/boot.bak of=/dev/sda1
#如果需要进行恢复,执行此命令即可。
如果想要把分区直接备份成为另外一个分区,就需要生成一个新的分区,这个分区的大小不能比源分区小,只能和源分区一大小一致或比源分区大。
【】# dd if=/dev/sda1 of=/dev/sdb1
#如果需要恢复,只要把输入项和输出项反过来即可,命令如下:
【】# dd if=/dev/sdb1 of=/dev/sda1
既然可以备份分区,当然也可以整盘备份:
【】# dd if=/dev/sda of=/dev/sdb #把磁盘a备份到磁盘b。[root@localhost ~]# dd if=/dev/sda of=/tmp/disk.bak
#把磁盘a备份成disk.bak。
恢复命令如下:
【】# dd if=/tmp/disk.bak of=/dev/sdb
虽然dd命令功能强大,不过也有个明显的缺点,就是复制的时间比较长(根据服务器性能变化而变化)
至于网络复制工具,如rsync和scp等,需要较为完善的网络知识才能学习。
xfs文件系统的备份与恢复:
xfs文件系统支持备份功能,使用xfsdump命令和xfsrestore可以完成备份与恢复。xfsdump实现了针对文件系统进行备份的功能centos7中默认选用的文件系统为xfs。
xfs文件系统的备份不光通过xfsdump可以进行完整备份。而且还可以进行增量备份。
xfsdump不支持对没有挂载的文件系统进行备份,需要备份请挂载之后备份。
xfsdump必须使用root身份才能够有权限执行。
xfsdump只能备份xfs文件系统。
xfsdump备份过的数据只能被xfsrestore解析。
xfsdump默认只支持备份文件系统,并不支持特定某个目录的备份。
xfsdump是通过文件系统的UUID来辨别各个备份文件,因此不能备份两个具有相同UUID 的文件系统(UUID重复的概率无限接近于0,可以忽略不记)。
xfsdump:对xfs文件系统进行备份。
-L:xfsdump会记录每次备份的说明标签。
-M:指定存储媒介的说明标签。
-l:指定备份的级别(0-9),0级别是完整备份。1-9是增量备份。
-f:指定转储的目的地。转储的目的地可以是路径设备、常规文件等。
-I:从/var/lib/xfsdump/inventory列出目前备份的信息状态(没有备份过没有此路径)。
使用新的分区,格式化分区,并进行挂载
【】# mkfs.xfs /dev/sdb1
【】#mkdir /test #创建挂载点
【】#mount /dev/sdb1 /test #挂载
准备备份测试文件
【】# cd /test/
【】# cp /etc/passwd ./[root@localhost test]# mkdir ./linux
【】# touch ./linux/a
【】# tree /test/
/test/
├── passwd
└── linux
└── a
备份
(这个功能就像是虚拟机的快照,服务器被黑后,进行快速恢复)
xfsdump -f 备份文件存放位置 被备份路径或设备文件
注意:被备份的路径可以写/dev/sdb1 或/test ,但是不能写成/test/ ,即test后不能有/
【】# xfsdump -f /opt/dump_sdb1 /dev/sdb1
xfsdump: using file dump (drive_simple) strategy
xfsdump: version 3.1.8 (dump format 3.0) - type ^C for status and control
=============================dumplabeldialog===========================
please enter label for this dump session (timeout in 300 sec)
-> dump_sdb1 #指定备份标签.
session label entered: "dump_sdb1"
--------------------------------- end dialog -----------------------
----------
xfsdump: level 0 dump of xuegod63.cn:/test
xfsdump: dump date: Tue Mar 10 16:03:07 2020
xfsdump: session id: e7d1aab1-dfbd-4b77-9379-56d63828a013
xfsdump: session label: "dump_sdb1"
xfsdump: ino map phase 1: constructing initial dump list
xfsdump: ino map phase 2: skipping (no pruning necessary)
xfsdump: ino map phase 3: skipping (only one dump stream)
xfsdump: ino map construction completexfsdump: estimated dump size: 25856 bytes
============== media label dialog =============================
please enter label for media in drive 0 (timeout in 300 sec)
-> sdb1 #指定设备标签,就是对要备份的设备做一个描述
media label entered: "n21"
--------------------------------- end dialog -----------------------
---------
xfsdump: creating dump session media file 0 (media 0, file 0)
xfsdump: dumping ino map
xfsdump: dumping directories
xfsdump: dumping non-directory files
xfsdump: ending media file
xfsdump: media file size 26072 bytes
xfsdump: dump size (non-dir files) : 3104 bytes
xfsdump: dump complete: 27 seconds elapsed
xfsdump: Dump Summary:
xfsdump: stream 0 /opt/dump_sdb1 OK (success)
xfsdump: Dump Status: SUCCESS
【】# xfsdump -f /opt/dump_2 /test -L dump_2 -M sdb1
-L :
-M :
排错:
改:xfsdump -f /opt/dump_2 /test/ -L dump_2 -M sdb1
为:xfsdump -f /opt/dump_2 /test -L dump_2 -M sdb1 #test后,不要有/
参数:-s 文件路径 只对指定的文件进行备份,-s指定时,路径写的是相对路径(-s可以是文件或目录)例:对/test/xuegod目录进行备份
【】# xfsdump -f /opt/dump_linux -s linux /test -L
dump_linux -M sdb1
备份成功后,我们就可以在/var/lib/xfsdump/inventory目录下看到生成的档案信息
【】# xfsdump -I(字母大写i)
测试恢复:先删除之前创建的内容
【】# cd /test/
【】# ls
passwd linux
【】# rm -rf ./*
语法:xfsrestore -f 指定恢复文件的位置 指定存放恢复后的文件的路径
【】# xfsrestore -f /opt/dump_sdb1 /test/
【】# ls /test/ #查看恢复情况
恢复单个文件如下:
【】# mkdir /tmp/test
【】# xfsrestore -f /opt/dump_sdb1 -s passwd /tmp/test/ #恢复单个文件
恢复目录
【】# xfsrestore -f /opt/dump_sdb1 -s linux /tmp/test/ #恢复目录
实战: 增量备份文件系统
准备一个备份目录进行备份
[root@localhost test]# tree /test/
/test/
├── passwd└── linux
└── a
【】# xfsdump -f /opt/test-full /test -L test-full -M sdb1
【】# touch /test/1.txt /test/2.txt
【】# xfsdump -l 1 -f /opt/test-back1 /test -L test-bak1
-M sdb1
-l
【】# touch /test/linux/a.txt /test/xuegod/b.txt
【】# xfsdump -l 2 -f /opt/test-back2 /test -L test-bak2 -M sdb1
[root@localhost ~]# rm -rf /test/* #删除所有数据
现在进行恢复,要想恢复全部全部数据,包括新添加的文件,如何恢复?
恢复步骤:
1、先恢复完全备份
2、情况1: 恢复最后一次增量备份(如果两次增量备份都是1级的,所以只需要恢复最后一个增量就可以了。
3、情况2:如果你做的是第一次是1级备份,第二次是2级备份。在恢复时,需要先恢复完全备份,然后是1级备,最后是2级备)
例:对做了完全备份,1级备份,2级备份的数据时行恢复
【】# xfsrestore -f /opt/test-full /test/
【】# xfsrestore -f /opt/test-back2 /test/ #故意先恢复back2,可以恢复成功,但是数据不全
【】# tree /test/ #查看,发现没有1.txt ,2.txt
/sdb1/
├── passwd
└── test
├── a├── a.txt
└── b.txt
[root@localhost ~]# xfsrestore -f /opt/test-back1 /test/
[root@localhost ~]# tree /test/ #到此,数据恢复成功了
/test/
├── 1.txt
├── 2.txt
├── passwd
└── xuegod
├── a
├── a.txt
└── b.txt