Linux系统管理---数据备份

目录

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级别的增量备


1、数据备份简介

1.Linux服务器中哪些数据需要备份

1)Linux系统重要数据

/root/目录:

        /root目录是管理员的家目录,很多管理员会习惯于在这个目录中保存一些相关数据,那么当进行数据备份时,需要备份此目录。

/home/目录:

        /home目录是普通用户家目录,如果是生产环境的服务器,这个目录中也会保存大量的重要数据,应该备份。

/etc/目录:

        系统重要的配置文件保存目录。

2)安装服务的数据

        我们的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/目录中所有日志。

二、备份策略(方式)

1.完全备份

        完全备份就是指把所有需要备份的数据全部备份,当然完全备份可以备份整块硬盘,整个分区或某个具体的目录。完全备份的好处就是数据恢复方便,因为所有的数据都在同一个备份中,所以只要恢复完全备份,所有的数据就会被恢复。如果完全备份的是整块硬盘,那么甚至都不需要数据恢复,只要把备份硬盘安装上,服务器就会恢复正常。可是完全备份的缺点也很明显,那就是需要备份的数据量较大,备份时间较长,占用的空间较多,所以完全备份不可能每天执行。

        我们一般会对关键的服务器进行整盘完全备份,如果出现问题,可以很快的使用备份硬盘进行替换,从而减少损失。甚至会对关键服务器搭设一台一模一样的服务器,这样只要远程几个命令(或使用shell脚本自动检测,自动进行服务器替换。)备份服务器就会解体原本的服务器,使我们的故障响应时间缩短为最短。

2.增量备份

        完全备份随着数据量的加大,备份耗费的时间和占用的空间会越来越多,所以完全备份不会也不能每天进行。这时增量备份的作用就体现出来了。增量备份是指先进行一次完全备份服务器运行一段时间之后,比较当前系统和完全备份数据之间的差异,只备份有差异的数据而已。服务器继续运行,再经过一段时间运行之后,进行第二次增量备份,第二次增量备份时,当前系统是和第一次增量备份的数据进行比较,也是只备份有差异的数据。而第三次增量备份是和第二次增量备份的数据进行比较,以此类推。

        假设我们第一天时,进行一次完全备份。第二天增量备份时,只会备份第二天和第一天之间的差异数据,但是第二天的总备份数据是完全备份+第一次增量备份的数据。第三天增量备份,只会备份第三天和第二天之间的差异数据,第三天的总备份数据是完全备份+第一次备份数据+第二次备份数据。当然第四天增量备份时,只会备份第四天和第三天的差异数据,数据是完全备份+第一次增量备份+第二次增量备份+第三次增量备份数据。

        这种备份的好处是每次备份需要备份的数据较少,耗时较少,占用的空间较少坏处是数据恢复比较麻烦,如上图,那么当数据恢复时,就要先恢复完全备份的数据,再依次恢复第一次增量备份的数据,第二次增量备份的数据和第三次增量备份的数据,最终才能恢复所有的数据。

3.差异备份

        差异备份也要先进行依次完全备份,但是和增量备份不同的地方是,每次差异备份都是备份和原始的完全备份不同的数据,也就是说差异备份每次备份的参照物是原始的完全备份,而不是上一次的差异备份。

        假设我们第一天时,也进行一次完全备份。第二天差异备份时,会备份第二天和第一天之间的差异数据,而第二天备份的数据是:完全备份+第一次差异备份的数据。第三天进行差异备份时,还是会和第一天的原始数据进行对比,把第二天和第三天所有的数据都备份在第二次差异备份数据中,第三天的备份数据是:完全备份+第二次差异备份的数据。第四天进行差异备份时,也是会和第一天的原始数据对比,把第二天、第三天和第四天所有的差异数据都备份到第三次差异备份数据中,第四天的备份数据是:完全备份+第三次差异备份的数据。

        差异备份相比较而言,即不要像完全备份一样把所有数据都进行备份,也不像增量备份数据恢复时那么麻烦。只要先恢复完全备份的数据,再恢复差异备份的数据即可。不过随着时间的增加,和完全备份相比,差异的数据越来越多,那么差异备份也可能变得数据庞大,备份缓慢,占用空间较大。(兼顾)

三、备份工具dd

1.命令格式:

dd if=“输入文件” of=“输出文件” bs=“数据块” count=“数量”

参数:

if:定义输入数据的文件,也可以是输入设备。

of:定义输出数据的文件,也可以是输出设备。

bs:指定数据块的大小,也就是定义一次性读取或写入多少字节。默认数据块大小是512字节。

count:指定bs的数量。

2.列题

例1:只备份文件

命令如下:

【】# 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命令还可以用来直接备份某个分区,当然可以把分区备份成为一个备份文件,也可以直接备份成另一个新的分区。先来看看如何把分区备份成文件:

例2:备份分区为一个文件:

【】# 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

#如果需要进行恢复,执行此命令即可。

        如果想要把分区直接备份成为另外一个分区,就需要生成一个新的分区,这个分区的大小不能比源分区小,只能和源分区一大小一致或比源分区大。

例3:备份分区到另一个新分区

【】# dd if=/dev/sda1 of=/dev/sdb1

#如果需要恢复,只要把输入项和输出项反过来即可,命令如下:

【】# dd if=/dev/sdb1 of=/dev/sda1

既然可以备份分区,当然也可以整盘备份:

例4:整盘备份:

【】# 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

3.dd缺点

        虽然dd命令功能强大,不过也有个明显的缺点,就是复制的时间比较长(根据服务器性能变化而变化)

至于网络复制工具,如rsync和scp等,需要较为完善的网络知识才能学习。

xfs文件系统的备份与恢复:

        xfs文件系统支持备份功能,使用xfsdump命令和xfsrestore可以完成备份与恢复。xfsdump实现了针对文件系统进行备份的功能centos7中默认选用的文件系统为xfs。

四、XFS文件系统备份

xfs文件系统的备份不光通过xfsdump可以进行完整备份。而且还可以进行增量备份。

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

备份

1、备份整个分区。

(这个功能就像是虚拟机的快照,服务器被黑后,进行快速恢复)

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

2、 指定备份时免交互操作,方便后期做定时备份

【】# xfsdump -f /opt/dump_2 /test -L dump_2 -M sdb1

-L:<session label> #每次备份的 session 标签,这里写此次备份的描述

-M:<media label> #媒体标签,这里写对哪个设备进行备份

排错:

改:xfsdump -f /opt/dump_2 /test/ -L dump_2 -M sdb1

为:xfsdump -f /opt/dump_2 /test -L dump_2 -M sdb1 #test后,不要有/

3、指定只备份分区中某个目录

参数:-s 文件路径 只对指定的文件进行备份,-s指定时,路径写的是相对路径(-s可以是文件或目录)例:对/test/xuegod目录进行备份

【】# xfsdump -f /opt/dump_linux -s linux /test -L

dump_linux -M sdb1

4、查看备份信息与内容

备份成功后,我们就可以在/var/lib/xfsdump/inventory目录下看到生成的档案信息

【】# xfsdump -I(字母大写i)

测试恢复:先删除之前创建的内容

【】# cd /test/

【】# ls

passwd   linux

【】# rm -rf ./*

xfsrestore文件系统恢复

语法: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

1、对上面的内容进行第一次全备

【】# xfsdump -f /opt/test-full /test -L test-full -M sdb1

2、增加一些内容,然后进行第1次增量备份

【】# touch /test/1.txt /test/2.txt

【】# xfsdump -l 1 -f /opt/test-back1 /test -L test-bak1

-M sdb1

-l <level>做一个等级为1的备份

3、再次增加内容,然后进行level 2级别的增量备

【】# 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


版权声明:本文为m0_57911290原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。