每个硬盘中心都是一摞高速运转的圆盘,在圆盘上附着的一圈金属颗粒,每个金属颗粒都有自己的磁化程度,主要用于储存0和1(高低电平)。在数据写入时,硬盘的磁头开始通电,周围会产生磁场,数据在磁场的作用下转变成电流,使磁盘的金属颗粒磁化,从而将信息记录在圆盘上。由海量颗粒组成的信息,就是我们存在硬盘里的数据。
靠电子,不存在转速问题,价格相对昂贵
硬盘的最小读写单位是一个扇区 512Byte, 操作系统读写的最小单位是一个block 块,即8个扇区的大小(4kb),但是操作系统有buffer/cache的机制
fdisk工具用于 MBR格式
gdis工具用于 GPT格式
分区主要是便于数据分门别类的存储,主要有MBR和GPT两种方式。
分区表:记录分区的编号,每个分区从哪个扇区开始到哪个扇区结束等。
Master Boot Record,主引导记录
磁盘的每块扇区都被分配了一个逻辑块地址,引导扇区是每个分区的第一扇区,主引导扇区是整个硬盘的第一扇区。
MBR就保存在主引导扇区中,且扇区还保存了硬盘分区表DPT(Disk Partition Table),和结束标志字(Magic number)。扇区总计512字节,MBR占446字节(0000H - 01BDH),DPT占据64个字节(01BEH - 01FDH),最后的magic number占2字节(01FEH – 01FFH)。
mbr分区主要有三类
主分区<--------扩展分区<--------逻辑分区
1.逻辑分区属于扩展分区,扩展分区属于主分区
2.主分区又叫引导分区,是可以安装系统的分区
1.
fdisk -l #
2.
[root@localhost boot]# lsblk # 默认查看所有
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 49G 0 part
├─centos-root 253:0 0 47G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 50G 0 disk
├─sdb1 8:17 0 10G 0 part /mnt
├─sdb2 8:18 0 10G 0 part
├─sdb3 8:19 0 10G 0 part
├─sdb4 8:20 0 512B 0 part
├─sdb5 8:21 0 5G 0 part
├─sdb6 8:22 0 5G 0 part
└─sdb7 8:23 0 10G 0 part
sdc 8:32 0 3.9T 0 disk
sr0 11:0 1 4.4G 0 rom
[root@localhost boot]#
3. 查看指定磁盘
[root@localhost boot]# lsblk /dev/sdb
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 50G 0 disk
├─sdb1 8:17 0 10G 0 part /mnt
├─sdb2 8:18 0 10G 0 part
├─sdb3 8:19 0 10G 0 part
├─sdb4 8:20 0 512B 0 part
├─sdb5 8:21 0 5G 0 part
├─sdb6 8:22 0 5G 0 part
└─sdb7 8:23 0 10G 0 part
[root@localhost boot]#
fdisk -l # 表示显示所有磁盘信息
fdisk -l /dev/sda # 只显示指定的磁盘信息
[root@localhost dev]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x61d8d1fa.
Command (m for help): m
Command action
a toggle a bootable flag # 切换分区启动标记
b edit bsd disklabel # 编辑 bsd磁盘标签
c toggle the dos compatibility flag # 切换dos兼容模式
d delete a partition # 删除分区
g create a new empty GPT partition table # 创建一个新的空GPT分区表
G create an IRIX (SGI) partition table # 创建一个 IIRIX 分区表
l list known partition types # 显示分区类型
m print this menu # 显示帮助菜单
n add a new partition # 新建分区
o create a new empty DOS partition table #创建新的空白分区表
p print the partition table #显示分区表的信息
q quit without saving changes # 不保存退出
s create a new empty Sun disklabel # 创建新的sun磁盘标签
t change a partition's system id # 修改分区ID,可以通过l查看id
u change display/entry units # 修改容量单位,磁柱或扇区
v verify the partition table # 检验分区表
w write table to disk and exit # 保存退出
x extra functionality (experts only) # 拓展功能
Command (m for help):
优先掌握:
n
p
d # 删除一个已有的分区,保存退出后需要执行partprobe命令刷新一下分区表
w
[root@localhost ~]# lsblk /dev/sdb # 先查看分区情况
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 50G 0 disk
[root@localhost ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): n # 创建新分区
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p # 选择主分区
Partition number (1-4, default 1): # 选择默认
First sector (2048-104857599, default 2048): # 选择默认
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-104857599, default 104857599): +1G # 设置分区大小为1G
Partition 1 of type Linux and of size 1 GiB is set
Command (m for help): n # 重复上述步骤
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
Partition number (2-4, default 2):
First sector (2099200-104857599, default 2099200):
Using default value 2099200
Last sector, +sectors or +size{K,M,G} (2099200-104857599, default 104857599): +1G
Partition 2 of type Linux and of size 1 GiB is set
Command (m for help): n
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p): p
Partition number (3,4, default 3):
First sector (4196352-104857599, default 4196352):
Using default value 4196352
Last sector, +sectors or +size{K,M,G} (4196352-104857599, default 104857599): +1G
Partition 3 of type Linux and of size 1 GiB is set
Command (m for help): n
Partition type:
p primary (3 primary, 0 extended, 1 free)
e extended
Select (default e): p
Selected partition 4
First sector (6293504-104857599, default 6293504):
Using default value 6293504
Last sector, +sectors or +size{K,M,G} (6293504-104857599, default 104857599): +1G
Partition 4 of type Linux and of size 1 GiB is set
Command (m for help): n # 已经创建了4个主分区,如果还要分区,系统提示必须要把一个主分区替换成扩展分区
If you want to create more than four partitions, you must replace a
primary partition with an extended partition first.
Command (m for help): p
Disk /dev/sdb: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x610f4a3b
Device Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux
/dev/sdb2 2099200 4196351 1048576 83 Linux
/dev/sdb3 4196352 6293503 1048576 83 Linux
/dev/sdb4 6293504 8390655 1048576 83 Linux
Command (m for help): d # 删除一个主分区
partition number (1-4, default 4): 4
Partition 4 is deleted
Command (m for help): n # 创建分区
Partition type:
p primary (3 primary, 0 extended, 1 free)
e extended
Select (default e): e # 选择扩展分区
Selected partition 4
First sector (6293504-104857599, default 6293504): # 默认即可
Using default value 6293504
Last sector, +sectors or +size{K,M,G} (6293504-104857599, default 104857599): # 默认即可
Using default value 104857599
Partition 4 of type Extended and of size 47 GiB is set
Command (m for help): w # 保存退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@localhost ~]# lsblk /dev/sdb # 查看分区
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 50G 0 disk
├─sdb1 8:17 0 1G 0 part
├─sdb2 8:18 0 1G 0 part
├─sdb3 8:19 0 1G 0 part
└─sdb4 8:20 0 1K 0 part
[root@localhost ~]#
注:sdb4显示1k是正常的,因为它只是扩展分区,需要在它上面建立逻辑分区
有时候使用fdisk命令对磁盘分区后,内核找不到新分区,得重启机器才能识别新分区,使用partprobe可以不重启重读新的分区表。
[root@localhost ~]# partprobe /dev/sdb #重读磁盘分区表
mkfs命令用于格式化硬盘,
-b 设定数据区块占用空间大小,目前支持 1024、2048、4096 bytes每个块;
-t 用来指定什么类型的文件系统,可以是 ext4、xfs;
提示:
- 1.分区工具,可以针对整块磁盘,或者单个分区进行格式化操作
- 2.一般情况下建议,不要直接格式化使用整磁盘,要分区后再格式化,头部有预留空间;
[root@localhost ~]# mkfs.xfs /dev/sdb # dev/sdb整体就是一个分区,如果分区完成,
应该分别对每个分区执行此命令,否则,执行此命令会抹去之前的分区,变成一个文件系统。
[root@localhost boot]# mkfs.xfs /dev/sdb1 # 格式化磁盘的某个分区
centos7选择xfs格式作为默认文件系统,而且不再使用以前的ext,仍然支持ext4,xfs专为大数据产生,
每个单个文件系统最大可以支持8eb,单个文件可以支持16tb,不仅数据量大,
而且扩展性高。还可以通过xfsdump,xfsrestore来备份和恢复
当需要使用磁盘空间或分区空间时,需要准备一个目录作为挂载点,然后使用 mount 命令与该设备进行关联,该目录实际上是该磁盘或分区的入口。
1.挂载
[root@localhost boot]# mkdir /sdb1
[root@localhost boot]# mount -t xfs /dev/sdb1 /sdb1
[root@localhost boot]# df
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 485824 0 485824 0% /dev
tmpfs 497836 0 497836 0% /dev/shm
tmpfs 497836 7708 490128 2% /run
tmpfs 497836 0 497836 0% /sys/fs/cgroup
/dev/mapper/centos-root 49250820 5569660 43681160 12% /
/dev/sda1 1038336 140320 898016 14% /boot
tmpfs 99568 0 99568 0% /run/user/0
/dev/sdb1 10475520 32992 10442528 1% /sdb1
[root@localhost boot]#
2.挂载磁盘设备,设置参数为仅可读
[root@localhost boot]# mkdir /sdb2
[root@localhost boot]# mount -t xfs -o ro /dev/sdb2 /sdb2
[root@localhost boot]# cd /sdb2
[root@localhost sdb2]# touch a.txt
touch: cannot touch ‘a.txt’: Read-only file system
[root@localhost sdb2]#
[root@localhost sdb2]# umount /dev/sdb1 # 可以直接写设备路径
[root@localhost sdb2]# umount /sdb2 # 也可以写挂载的入口目录
umount: /sdb2: target is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
# 提示繁忙是因为我们现在恰巧在该目录下,可以-l强制卸载或者切换到其他目录在卸载
[root@localhost sdb2]# umount /sdb2 -l
/etc/fstab
配置文件中实现。# 可以用vim编辑此文件,也可以用sed命令
方式1. [root@localhost ~]# sed -i '$a /dev/sdb1 /opt xfs defaults 0 0' /etc/fstab
[root@localhost ~]# tail -1 /etc/fstab
/dev/sdb1 /opt xfs defaults 0 0
方式2. 或者先查看磁盘的UUID
[root@localhost ~]# blkid
/dev/sr0: UUID="2020-11-04-11-36-43-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
/dev/sda1: UUID="175215d5-3afd-4d9e-9e01-cc540fb1e37c" TYPE="xfs"
/dev/sda2: UUID="j4YEDh-c1m9-wjfU-38Dg-FDnh-yk3X-7hSjOc" TYPE="LVM2_member"
/dev/sdb1: UUID="8eaeb309-4b30-47ed-8526-bccf8a752bd7" TYPE="xfs"
/dev/sdb2: UUID="ae6475e9-09ea-4c0d-a02e-50ebf53a1f19" TYPE="xfs"
/dev/sdb3: UUID="425c34c2-73a9-4479-ae44-a480608fbd66" TYPE="xfs"
/dev/mapper/centos-root: UUID="6154543d-a3b5-42f0-8745-6f46ab850066" TYPE="xfs"
[root@localhost ~]# 也可以 blkid | grep 'sdb1'
将对应的UUID写入/etc/fstab 末尾
[root@localhost ~]# sed -i '$a UUID=8eaeb309-4b30-47ed-8526-bccf8a752bd7 /mnt xfs defaults 0 0' /etc/fstab
[root@localhost ~]# tail -1 /etc/fstab
UUID=8eaeb309-4b30-47ed-8526-bccf8a752bd7 /mnt xfs defaults 0 0
方式3. 自动实现
[root@localhost /]# blkid |grep /dev/sda1 | awk -F '[: ]+' '{print $2}' | sed -r 's#(.*)#\1 /db1 xfs defaults 0 0#g' >> /etc/fstab
4.
[root@localhost ~]# reboot # 重启查看是否挂载
[root@localhost ~]# df -hT
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 475M 0 475M 0% /dev
tmpfs tmpfs 487M 0 487M 0% /dev/shm
tmpfs tmpfs 487M 7.5M 479M 2% /run
tmpfs tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 30G 2.8G 27G 10% /
/dev/sdb1 xfs 509M 162M 348M 32% /mnt
tmpfs tmpfs 98M 0 98M 0% /run/user/0
[root@localhost ~]#
5. 或者不用重启,直接执行命令 mount -a 系统会重新加载 /etc/fstab 配置文件
补充命令 partprobe 更新分区表信息
配置文件/etc/fstab
详解
第一列:指定需要挂载的设备
设备名称 /dev/sdb1
或者设备UUID (blkid命令查看)
第二列:挂载的目录入口
例如 /mnt
第三列:文件系统类型
ext4 xfs等
第四列:挂载参数
1.async/sync:使用同步或异步方式存储数据;默认 async
2.user/nouser:是否允许普通用户使用mount命令挂载。默认nouser
3.exec/noexe:是否允许可执行文件执行。默认exec
4.suid/nosuid:是否允许存在suid属性的文件。默认suid
5.auto/noauto:执行 mount -a 命令时,此文件系统是否被主动挂载。默认auto
6.rw/ro:是否以只读或者读写模式进行挂载。默认rw
7.defaults:具有rw,suid,dev,exec,auto,nouser,async,rw等参数;
第五列:是否需要备份磁盘
0:不备份
1.每天进行备份操作
2.不定期进行备份
第六列:开机是否检验扇区
0:不检验
1:检验
2:校验(当1级别检验完之后进行2级别检验)
Globally Unique Identifier Partition Table 也叫做GUID分区表
大致和mbr分区一致。
[root@localhost ~]# yum install gdisk -y
[root@localhost ~]# gdisk /dev/sdd # 创建gdisk分区
GPT fdisk (gdisk) version 0.8.10
Partition table scan:
MBR: not present
BSD: not present
APM: not present
GPT: not present
Creating new GPT entries.
Command (? for help): n # 新建
Partition number (1-128, default 1): # 直接回车,默认分区号为1
First sector (34-5242879966, default = 2048) or {+-}size{KMGTP}: #直接回车,使用默认的起始位置
Last sector (2048-5242879966, default = 5242879966) or {+-}size{KMGTP}: +1G # 设定1G的空间
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): L # 列出所有文件系统
......会看到一系列文件系统信息,默认的8300编号代表Linux filesystem,用它就好
Hex code or GUID (L to show codes, Enter = 8300): # 直接回车用默认8300就好
Changed type of partition to 'Linux filesystem'
Command (? for help): p # 打印查看
......
Number Start (sector) End (sector) Size Code Name
1 2048 2099199 1024.0 MiB 8300 Linux filesystem
Command (? for help): w # 保存
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): y # 输入y保存
OK; writing new GUID partition table (GPT) to /dev/sdc.
The operation has completed successfully.
在Linux系统中,为了增加系统性能,通常系统会将一些写入数据先放在内存中,并不会直接将数据写入硬盘,这是因为内存速度要比硬盘快若干倍。
但是有个问题,万一公司服务器突然断电或者其他未知原因,再次启动后,会造成文件系统错误:“emergency mode”
welcome to emergency mode!after logging in ,type “journalctl -xb” to view system logs,
“systemctl reboot” to reboot ,“systemctl default” to try again to boot into default mode。
give root password for maintenance
执行任何命令都会有以下(或相似)错误
Error getting authority: Error initializing authority:
Could not connect: No such file or directory (g-io-error-quark, 1)
查看运行日志,可以提示出损坏的文件系统
journalctl -xb
修复方式:
# 0、如果进入不了操作系统,可以进入单用户模式下操作
# 1、首先尝试mount和umount文件系统,以便重放日志,修复文件系统,如果不行,再进行如下操作。
# 2、执行xfs_repair -n,只检查不修复:检查文件系统是否损坏,如何损坏会列出将要执行的操作
[root@localhost ~]# xfs_repair -n /dev/sdb2
如果是日志和数据不一致了,xfs 默认会在挂载的时候修复这种不一致,操作系统给出的建议是以读写的方式挂载并自动修复,
可以尝试以只读不修复方式挂载文件系统。
[root@localhost ~]# mount -o ro,norecovery /dev/sdb2 /opt
# 3、如果上述挂载不成功,可以执行xfs_repair修复文件系统
[root@localhost ~]# xfs_repair /dev/sdb2
# 4、如果还不行,那最后方法只能采用"损失部分数据的修复方法"
根据打印消息,修复失败时:
先执行xfs_repair -L /dev/sdb2(清空日志,会丢失文件)
再执行xfs_repair /dev/sdb2
说明:-L是修复xfs文件系统的最后手段,慎重选择,它会清空日志,会丢失用户数据和文件。
备注:在执行xfs_repair操作前,最好使用xfs_metadump工具保存元数据,一旦修复失败,最起码可以恢复到修复之前的状态。
# 5、修复完成以后,尝试能不能正常挂载 ,如能,取消挂载,再启动就正常了
示例
# 1、准备一个1G的文件系统与数据
[root@localhost ~]# mount /dev/sdb1 /opt/
[root@localhost ~]# echo big_egon > /opt/1.txt
# 2、模拟文件系统损坏
[root@localhost ~]# dd if=/dev/zero of=/dev/sdb bs=500M count=1 # 直接干/dev/sdb而不是sdb1
记录了1+0 的读入
记录了1+0 的写出
524288000字节(524 MB)已复制,1.09433 秒,479 MB/秒
[root@localhost ~]# # 此时看似一切都正常
[root@localhost ~]# cat /opt/1.txt
big_egon
[root@localhost ~]# echo egon_nb > /opt/2.txt
[root@localhost ~]# cat /opt/2.txt
egon_nb
[root@localhost ~]# # 但是重新挂载就会失效,即断电后系统重启,重新挂载不成功
[root@localhost ~]# umount /opt
[root@localhost ~]# mount /dev/sdb1 /opt
mount: /dev/sdb1 写保护,将以只读方式挂载
mount: 未知的文件系统类型“(null)”
# 3、修复
[root@localhost ~]# xfs_repair /dev/sdb1
Phase 1 - find and verify superblock...
bad primary superblock - bad magic number !!!
。。。。。。
修复失败,无法挂载
[root@localhost ~]# mount /dev/sdb1 /opt/
mount: 将 /dev/sdb1 挂载到 /opt 失败: 结构需要清理
[root@localhost ~]# xfs_repair -L /dev/sdb1 # 强制修复
[root@localhost ~]# mount /dev/sdb1 /opt/
[root@localhost ~]# ls /opt/ # 数据丢失,所以此时修复的意义在于可用,至于数据,你需要自己有备份意识
[root@localhost ~]#
ps:如果是ext文件系统,修复需要用fsck命令
fsck -f -y /dev/sda1
-y 对所有问题都回答 "yes"
-f 即使文件系统标记为 clean 也强制进行检查
命令与软件包
[root@localhost ~]# rpm -qf `which xfsdump`
xfsdump-3.1.7-1.el7.x86_64
[root@localhost ~]# rpm -qf `which xfsrestore`
xfsdump-3.1.7-1.el7.x86_64
xfsdump的备份级别有以下两种,默认为0(即完全备份)
0 完全备份
1 <= level <= 9 增量备份:
# ps:增量备份是和第一次的备份(level 0)进行比较,仅备份有差异的文件(level 1)
xfsdump常用参数
-L:xfsdump会记录每次备份的session Label,这里可以填写针对此文件系统的简易说明;
-M:xfsdump可以记录存储Media Label,这里可以填写此媒体的简易说明。
-l:是L的小写,就是指定level,有0~9共10个等级,默认为0,即完整备份。
-f:后面接产生的文件和destination file 。例如/dev/st0设备文件名或其他一般文件文件名
-I:大写的“i”,从/var/lib/xfsdump/inventory 列出目前备份的信息状态
xfsdump使用限制
1.必须用root权限
2.只能备份已挂载的文件系统
3.只能备份XFS文件系统
4.只能用xfsrestore解释
5.透过文件系统的UUID来分辨备份档,因此不能备份相同UUID的文件系统
xfsdump备份与xfsrestore恢复
# 1、数据备份
# 1.1 先做全量备份,切记“备份的源路径”末尾不要加左斜杠/
xfsdump -l 0 -L sdb3_bak -M sdb3_bak -f 全量备份的成果路径1 备份的源路径
# 1.2 再做增量备份、
xfsdump -l 1 -L sdb3_bak -M sdb3_bak -f 增量备份的成果路径2 备份的源路径(可以是目录也可以是挂载的盘 例如/boot 或者/dev/sda1)
xfsdump -l 1 -L sdb3_bak -M sdb3_bak -f 增量备份的成果路径3 备份的源路径
xfsdump -l 1 -L sdb3_bak -M sdb3_bak -f 增量备份的成果路径4 备份的源路径
# 2、数据恢复
# 2.1、先恢复全量备份
xfsrestore -f 全量备份的成果路径1 数据恢复的路径
# 2.2、再依次恢复增量
xfsrestore -f 增量备份的成果路径2 数据恢复的路径
xfsrestore -f 增量备份的成果路径2 数据恢复的路径
xfsrestore -f 增量备份的成果路径2 数据恢复的路径
示例:
数据备份
# 1、准备一个分区并制作好xfs文件系统,挂载好后给它加一点初始数据
[root@localhost ~]# df
文件系统 1K-块 已用 可用 已用% 挂载点
。。。。。。
/dev/sdb3 1038336 76836 961500 8% /opt
[root@localhost ~]# cp -r /etc/ /opt/
[root@localhost ~]# echo 111 > /opt/1.txt
[root@localhost ~]# ls /opt/
1.txt etc
[root@localhost ~]#
# 2、先做全量备份
[root@localhost ~]# xfsdump -l 0 -L sdb3_bak -M sdb3_bak -f /all.bak /opt
# 3、往/opt下新增文件2.txt,然后作增量备份
[root@localhost ~]# echo 222 > /opt/2.txt
[root@localhost ~]# xfsdump -l 1 -L sdb3_bak -M sdb3_bak -f /add.bak1 /opt
# 4、往/opt下新增文件3.txt,然后作增量备份
[root@localhost ~]# echo 333 > /opt/3.txt
[root@localhost ~]# xfsdump -l 1 -L sdb3_bak -M sdb3_bak -f /add.bak2 /opt
# 5、查看一下备份文件大小
[root@localhost ~]# du -sh /opt/
41M /opt/
[root@localhost ~]# ll -h /all.bak # 全量备份大小
-rw-r--r--. 1 root root 37M 11月 4 18:44 /all.bak
[root@localhost ~]# ll -h /add.bak1 # 增量备份大小
-rw-r--r--. 1 root root 22K 11月 4 18:45 /add.bak1
[root@localhost ~]# ll -h /add.bak2 # 增量备份大小
-rw-r--r--. 1 root root 23K 11月 4 18:46 /add.bak2
数据恢复:
[root@localhost ~]# rm -rf /opt/`*`
[root@localhost ~]# xfsrestore -f /all.bak /opt/ # 先恢复全量
......
[root@localhost ~]# ls /opt/
1.txt etc
[root@localhost ~]# xfsrestore -f /add.bak1 /opt/ # 再恢复增量1
[root@localhost ~]# ls /opt/
1.txt 2.txt etc
[root@localhost ~]# xfsrestore -f /add.bak2 /opt/ # 再恢复增量2
[root@localhost ~]# ls /opt/
1.txt 2.txt 3.txt etc