Linux中文件的备份与恢复

1.数据备份简介

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

1)Linux系统重要数据

/root/目录:/root目录是管理员的家目录

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

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

2)安装服务的数据

我们这里拿最常见的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/目录中所有日志。

2备份策略

2.1完全备份

完全备份就是指把所有需要备份的数据全部备份,当然完全备份可以备份整块硬盘,整个分区或某个具体的目录。完全备份的好处就是数据恢复方便,因为所有的数据都在同一个备份中,所以只要恢复完全备份,所有的数据就会被恢复。如果完全备份的是整块硬盘,那么甚至都不需要数据恢复,只要把备份硬盘安装上,服务器就会恢复正常。可是完全备份的缺点也很明显,那就是需要备份的数据量较大,备份时间较长,占用的空间较多,所以完全备份不可能每天执行。我们一般会对关键的服务器进行整盘完全备份,如果出现问题,可以很快的使用备份硬盘进行替换,从而减少损失。甚至会对关键服务器搭设一台一模一样的服务器,这样只要远程几个命令(或使用shell脚本自动检测,自动进行服务器替换。)备份服务器就会解体原本的服务器,使我们的故障响应时间缩短为最短。

2.2增量备份

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

img

2.3差异备份

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

img

3.备份工具dd

命令格式:dd if=“输入文件” of=“输出文件” bs=“数据块” count=“数量”

参数:

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

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

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

count:指定bs的数量。

1)只备份文件:dd if=/etc/httpd/conf/httpd.conf of=/tmp/httpd.bak

2)备份分区为一个文件:dd if=/dev/sda1 of=/tmp/boot.bak

#如果需要进行恢复,执行此命令即可:dd if=/tmp/boot.bak of=/dev/sda1

3)备份分区到另一个新分区:dd if=/dev/sda1 of=/dev/sdb1

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

4)整盘备份:dd if=/dev/sda of=/dev/sdb

注:dd备份缺点,就是复制的时间比较长

网络复制工具,如rsync和scp等

4.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列出目前备份的信息状态(没有备份过没有此路径)。

实验流程:

第一步:使用新的分区,格式化分区,并进行挂载

[root@localhost ~]# mkfs.xfs /dev/sdb1

[root@localhost ~]#mkdir /test  #创建挂载点

[root@localhost ~]#mount /dev/sdb1 /test  #挂载

准备备份测试文件

[root@localhost ~]# cd /test/

[root@localhost test]# cp /etc/passwd ./

[root@localhost test]# mkdir ./linux

[root@localhost test]# touch ./linux/a

[root@localhost test]# tree /test/

/test/

├── passwd

└── linux

└── a

第二步:备份

1、备份整个分区。 (这个功能就像是虚拟机的快照,服务器被黑后,进行快速恢复)

xfsdump -f 备份文件存放位置 被备份路径或设备文件

注意:被备份的路径可以写/dev/sdb1 或/test ,但是不能写成/test/ ,即 test后不能有/

[root@localhost test]# xfsdump -f /opt/dump_sdb1 /dev/sdb1

dump_sdb1 #指定备份标签.

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

[root@localhost sdb1]# xfsdump -f /opt/dump_2 /test -L dump_2 -M sdb1

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

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

排错:

改: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 目录进行备份

[root@localhost opt]# xfsdump -f /opt/dump_linux -s linux /test -L

dump_linux -M sdb1

4、查看备份信息与内容

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

[root@localhost opt]# xfsdump -I(字母大写i)

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

[root@localhost opt]# cd /test/

[root@localhost test]# ls

passwd linux

[root@localhost sdb1]# rm -rf ./*

第三步:文件系统恢复

格式:xfsrestore -f 指定恢复文件的位置 指定存放恢复后的文件的路径

[root@localhost opt]# xfsrestore -f /opt/dump_sdb1 /test/

[root@localhost ~]# ls /test/ #查看恢复情况

恢复单个文件如下:

[root@localhost test]# mkdir /tmp/test

[root@localhost test]# xfsrestore -f /opt/dump_sdb1 -s passwd /tmp/test/

#恢复单个文件

[root@localhost test]# xfsrestore -f /opt/dump_sdb1 -s linux /tmp/test/

#恢复目录

5.增量备份文件系统实战

(1)准备一个备份目录进行备份

[root@localhost test]# tree /test/

/test/

├── passwd

└── linux

└── a

(2)对上面的内容进行第一次全备

[root@localhost test]# xfsdump -f /opt/test-full /test -L test-full -M sdb1

(3)增加一些内容,然后进行第1次增量备份

[root@localhost test]# touch /test/1.txt /test/2.txt

[root@localhost test]# xfsdump -l 1 -f /opt/test-back1 /test -L test-bak1 -M sdb1

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

(4)再次增加内容,然后进行level 2级别的增量备

[root@localhost test]# touch /test/linux/a.txt /test/xuegod/b.txt

[root@localhost test]# 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级备份的数据时行恢复

[root@localhost ~]# xfsrestore -f /opt/test-full /test/

[root@localhost ~]# xfsrestore -f /opt/test-back2 /test/ #故意先恢复back2,可以恢复成功,但是数据不全

[root@localhost ~]# 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

猜你喜欢

转载自blog.csdn.net/qq_43842093/article/details/127329683
今日推荐