Linux重点 xfs文件系统的备份和恢复非常全

干货理论

XFS提供了xfsdump (备份) 和 xfsrestore(恢复) 工具协助备份XFS 文件系统中的数据, xfsdump 按inode顺序备份一个XFS文件系统

在centos7选择xfs格式作为默认文件系统, 而不再使用以前的ext, 任然支持ext4, xfs转为大数据产生, 每个单个文件系统最大可以支持8eb, 单个文件可以支持16tb, 不仅数据量大, 而扩展性高, 还可以通过xfsdumpxfsrestore来备份和恢复 , 原始备份数据方法: cp, 在大数据里面无法完成

与传统的Unix文件系统不同, xfs不需要在备份前被卸载, 对使用中的XFS文件系统做备份就可以保证镜像的一致性, XFS的备份和恢复的过程是可以被终止的, 然后继续 (断电续传) , 无需冻结文件系统, xfsdump甚至提供了高性能的多线程备份操作, 它把一次dump差分成多个流数据, 每个流数据都可以被发往不同的文件夹保管.相当于热备份

了解xfsdump的备份级别有两种 默认为 0 (即完全备份)

0 级别代表 完全备份

1 到 9 级别备份 增量备份

完全备份: 每次都把指定的备份目录完整的复制一遍, 不管目录下的文件有没有变化,都进行备份

增量备份: 每次将之前(第一次, 第二次…知道前一次)做过备份后有变化的文件再进行备份, 没有变化的则不动

差异备份: 每次都将第一次完整备份以来没有变化的文件进行备份,也就是说, 之前备份过的, 后续有变化的进行备份, 没有变化不管多久也不进行二次备份

准备环境

添加一块虚拟硬盘(准备一个测试分区)

正常使用一块磁盘过程

添加硬盘 --> 分区 --> 格式化 --> 挂载

一. 关机 init 0 或 poweroff或…

二. 编辑虚拟机设置

一路下一步就可以

三. 重新开机, 对磁盘进行操作

对新添加的磁盘进行格式化

[root@laser ~]# fdisk /dev/sdb   // 创建磁盘命令
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0x3411a5db 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):p  查看分区信息

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理)512 字节 / 512 字节
I/O 大小(最小/最佳)512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x3411a5db

   设备 Boot      Start         End      Blocks   Id  System

命令(输入 m 获取帮助):n  new创建一个新的分区
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p):   // p 查看分区表
分区号 (1-4,默认 1)//直接下一步
起始 扇区 (2048-41943039,默认为 2048)// 下一步
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039)+1G  给它1G, 也可以直接回车
分区 1 已设置为 Linux 类型,大小设为 1 GiB

命令(输入 m 获取帮助):w  保存退出
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。

查看分区情况
[root@laser ~]# ls /dev/sdb1
/dev/sdb1
能看到有sdb1则成功添加
挂载使用

先格式化硬盘

[root@laser ~]# mkfs.xfs /dev/sdb1 
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=65536 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=262144, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

先创建文件夹, 然后将磁盘 挂载到这个文件夹下

[root@laser ~]# mkdir /sdb1
[root@laser ~]# mount /dev/sdb1 /sdb1/

完成后创建一些文件和文件夹

[root@laser /sdb1]# tree
.
├── a
├── passwd
└── test
    └── a.txt

注: yum install -y tree   // 没有可以下载
备份开始

备份整个分区

xfsdump -f 备份存放位置 要备份路径

注意: 备份是最后一个目录不能加 /, 否则抛异常, 且备份时从根开始, 即/开始

xfsdump: ERROR: /sdb1/ does not identify a file system

开始                           备份目标路径     备份文件路径
[root@laser /sdb1]# xfsdump -f /opt/dump_sdb1 /sdb1

输入一个备份标签
please enter label for this dump session (timeout in 300 sec)
 -> dump_sdb1  // 
 
输入一个设备标签
please enter label for media in drive 0 (timeout in 300 sec)
 -> sdb1
 
 出现大写的success即可
 xfsdump: Dump Status: SUCCESS

查看备份目录

[root@laser ~]# ls /opt/
dump_sdb1  rh

是定备份时免交互操作, 方便后期作定时备份

可以直接写 / 进行备份, 这样就可以恢复到原始状态了

                                目标位置名称  备份文件   文件名
[root@laser /sdb1]# xfsdump -f /opt/dump_p /sdb1 -L dump_pwd -M b

查看
[root@laser /sdb1]# ls /opt/
dump_p  dump_pwd  dump_sdb1    // dump_pwd存在证明成功

-L: xfsdump 会记录每次备份的session标头, 这里可以填写针对次文件简易说明

-M : xfsdump 可以记录存储媒体的标头, 这里可以填写次媒体的简易说明

跟上面文件标签和分区标签一样

测试

先删除之前创建的内容, 切记, 千万不能少一点 . 重点, 少一点就哭吧 !

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

指定只备份分区某个目录

参数 -s 文件路径

针对指定的文件进行备份, -s指定时, 路径写的是相对路径(-s可以是文件或目录)

先试手 , 对/boot文件进行分区处理


                                               备份内容, 不能从根开始写
[root@laser /sdb1]# xfsdump -f /opt/dump_grub2 -s grub2 /boot -L dump_grub2 -M boot

查看是否成功

[root@laser /sdb1]# ls /opt/
dump_grub2  dump_p  dump_pwd  dump_sdb1  rh
有内容, 成功

顺便查看备份文件大小 ll -h /opt/

[root@laser /sdb1]# ll -h /opt/
总用量 7.8M
-rw-r--r--. 1 root root 7.7M 1123 21:35 dump_grub2
-rw-r--r--. 1 root root  26K 1123 21:21 dump_p
-rw-r--r--. 1 root root    0 1123 21:17 dump_pwd
-rw-r--r--. 1 root root  26K 1123 21:06 dump_sdb1

查看归档文件

[root@laser /sdb1]# xfsdump -I
归档文件存在这地方 
[root@laser /sdb1]# ls /var/lib/xfsdump/inventory/
1110cb86-37fb-46a6-99ae-d79026263257.StObj  
69f2ce9b-f74e-4383-a922-3c7fea7015b9.InvIndex  fstab
335515d4-9c97-42dd-a23a-0fe09fc7adc0.StObj 
a298d6f5-f3d0-4d6a-aed5-cb736b703566.InvIndex

文件系统恢复

语法: xfsrestore -f 指定恢复文件的位置, 指定恢复后的文件存放路径

先查看sdb1是否有文件  没有进行备份, 有则删除
[root@laser /sdb1]# ls
[root@laser /sdb1]#

备份开始 非常简单                      恢复文件      恢复位置
[root@laser /sdb1]# xfsrestore  -f /opt/dump_sdb1 /sdb1/


查看是否恢复成功
[root@laser /sdb1]# tree /sdb1/
/sdb1/
├── a
├── passwd
└── test
    └── a.txt

1 directory, 3 files

恢复单个文件 , 注意的是, 这里恢复要使用备份时的路径, 不能写绝对路径

这里是我的备份和路径, 复制粘贴可能有区别导致无法执行, 应根据自己的备份来适应操作
[root@laser /sdb1]# xfsrestore -f /opt/dump_grub2 -s grub2 /sdb1  / 恢复目录

使用xfsdump时, 请注意下面的几个限制

  1. xfsdump不支持没有挂载的文件系统设备, 所以只能备份已挂载的
  2. xfsdump必须使用root的权限才能操作(设计文件系统的关系)
  3. xfsdump只能备份xfs文件系统, 其他不能
  4. xfsdump备份下来的数据(档案或存储媒体) 只能让xfsrestore解析
  5. xfsdump是透过文件系统的 UUID来分辨各个备份文档的, 因此不能备份两个具有相同的UUID文件

增量备份

增量备份时指在一次完全备份或上一次增量备份后, 以后每次的备份只需备份与之前一次相同比增长或者被修改的文件, 这就意味着, 第一次增量备份的对象是进行完全备份后所产生的增加或修改的文件, 第二次增量备份的对象是进行第一次增量备份后所产生的增加和修改的文件, 以此类推

优缺点

优点: 没有重复的备份数据, 因此备份的数据量不大, 备份所需的时间短

缺点:数据恢复相对比较麻烦, 他想要上一次完全备份和所有增量备份 的内容才能够完全恢复成功, 否则只恢复一部分, 并 且必须严格遵循从完全备份到依次增量备份的时间顺序组个反推恢复, 因此可能会延长恢复时间.

例: 增量备份文件系统

先查看文件目录, 对其进行完全备份
[root@laser /sdb1]# tree /sdb1/
/sdb1/
├── passwd
└── test
    └── a.txt

1 directory, 2 files

备份整个sdb1文件夹
[root@laser ~]# xfsdump -f /opt/test-full /sdb1 -L test-full -M media

增加内容进行第一次增量备份, 增加完成后进行一次备份
[root@laser ~]# touch /sdb1/1.txt /sdb1/2.txt

成功第一次
[root@laser ~]# xfsdump -l 1 -f /opt/test-back1 /sdb1 -L test-back1 -M meda1
参数解释:
-l:  等级  1

再次增加内容, 然后进行level2 增量备份
加点东西, 添加两个文件
[root@laser ~]# touch /sdb1/test/a.txt /sdb1/test/b.txt

进行备份
[root@laser ~]# xfsdump -l 2 -f /opt/test-back2 /sdb1 -L test-bak2 -M media2

查看备份目录/opt, 都完成了
[root@laser ~]# ls /opt/
test-back1  test-back2  test-full

恢复数据

先删除 sdb1 所有数据

删除sdb1所有内容
[root@laser ~]# rm -rf /sdb1/*
  1. 先恢复完全备份, 也就是第一次备份的内容

  2. 恢复最后一次增量备份(因为我们这里用的两次备份都是 1 级别, 只需要恢复一次, 所以只需要恢复最后一个增量备份就可以了)

  3. 如果你做的第一次备份为1 级别, 第二次备份为2 级别 , 那么在恢复的时候就需要先恢复完全备份, 然后1 级别, 最后二级别备份

完整版恢复

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

去tree一下, 看看有没有恢复
[root@laser ~]# tree /sdb1/
/sdb1/
├── a
├── passwd
└── test
    └── a.txt

1 directory, 3 files  完成!

增量备份1级别

[root@laser ~]# xfsrestore -f /opt/test-back1 /sdb1/

tree查看
[root@laser ~]# tree /sdb1/
/sdb1/
├── a
├── passwd
└── test
    └── a.txt

增量备份2级别

[root@laser ~]# xfsrestore -f /opt/test-back2 /sdb1/

tree查看目录结构
[root@laser ~]# tree /sdb1/
/sdb1/
├── a
├── passwd
└── test
    ├── a.txt
    └── b.txt

1 directory, 4 files完成了!

重点: 一定要按照顺序来恢复, 否则目录会乱, 有一些文件不能完全恢复

完全备份 —> 备份级别1 ----> 备份级别2 —> …以此类推

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Linux系统中的XFS文件系统误删除文件并且没有备份时,有几种方法可以尝试恢复丢失的文件。 首先,使用一些文件恢复工具可以尝试从未使用的磁盘空间中恢复被删除的文件。有一些工具如TestDisk、PhotoRec等,它们可以扫描磁盘,并通过识别文件的签名来恢复被删除的文件。它们可以在终端中运行,并且通常可以免费获取。 其次,可以尝试使用XFS文件系统自带的一些工具来恢复误删除的文件XFS文件系统提供了一些工具如xfs_restore、xfs_ls、xfs_quota等,它们可以帮助用户查找和恢复被删除的文件。通过这些工具,用户可以在文件系统中搜索并找回之前删除的文件。 另外,还可以考虑使用数据恢复服务来找回被误删除的文件。这些服务通常需要费用,并且可能需要将受损的磁盘发送给专业的数据恢复公司。这些专业的公司有着更高级的设备和技术,可以尝试从磁盘中恢复丢失的数据。 最后,鉴于误删除文件可能会导致数据的永久丢失,因此在使用Linux系统时,定期进行数据备份非常重要。通过定期备份,即使误删除了文件,也可以从备份恢复数据,减少数据损失风险。 总之,虽然在Linux系统中误删除文件且没有备份恢复是一项具有挑战性的任务,但仍然有一些方法可以尝试恢复丢失的文件。无论采取哪种方法,都应该牢记数据备份的重要性,以避免类似情况的再次发生。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值