备份恢复Linux文件系统:EXT和XFS两种文件系统的案例



本篇讲解备份恢复EXT和XFS文件系统的工具,包括extundelete、xfsdump和xfsrestore三种工具的理论讲解和使用方法。另外有两个不同文件系统的实验案例。

备份恢复EXT文件系统

extundelete工具(命令)

extundelete 是一个用于恢复被删除的文件和目录的工具,专门用于 EXT3 和 EXT4 文件系统。通过读取文件系统的日志和元数据来恢复误删的文件,特别适用于还没有被覆盖的文件。

格式

extundelete [选项] [设备]
  • 设备:需要恢复的文件系统所在的设备(如 /dev/sda1)。

选项(参数)

  • -inode [inode_number]:查看指定 i 节点(inode)对应的文件信息。
  • -restore-file [文件路径]:恢复指定的文件。
  • -restore-inode [inode_number]:通过 i 节点恢复文件。
  • -restore-directory [目录路径]:恢复指定目录及其所有内容。
  • -restore-all:恢复文件系统中所有被删除的文件。
  • -output-dir [目录]:指定恢复文件保存的目录,默认是当前目录下的 RECOVERED_FILES/ 目录。
  • -after [日期]:仅恢复在指定日期之后删除的文件。
  • -before [日期]:仅恢复在指定日期之前删除的文件。
  • -log [日志文件]:将恢复过程中的日志信息保存到指定的日志文件中。

示例

  1. 查看文件系统中存在的文件

    显示 /dev/sda1 文件系统根目录下的文件信息。

    extundelete /dev/sda1 --inode 2
    
  2. 恢复指定文件

    恢复 /dev/sda1 文件系统中的 /home/user/document.txt 文件,并将恢复的文件保存在当前目录下的 RECOVERED_FILES/ 目录中。

    extundelete /dev/sda1 --restore-file /home/user/document.txt
    
  3. 恢复整个目录

    这将恢复 /dev/sda1 文件系统中 /home/user/documents 目录及其所有文件。

    extundelete /dev/sda1 --restore-directory /home/user/documents
    
  4. 恢复所有文件

    尝试恢复 /dev/sda1 文件系统中所有被删除的文件。

    extundelete /dev/sda1 --restore-all
    
  5. 指定恢复文件保存的目录

    把恢复的文件保存到 /mnt/recovered/ 目录中。

    extundelete /dev/sda1 --restore-file /home/user/document.txt --output-dir /mnt/recovered/
    

注意事项

  • 在执行恢复操作之前,尽量减少对文件系统的写操作,因为新的写入可能会覆盖已删除文件的存储空间,导致数据无法恢复。
  • 恢复文件时,如果没有明确指定输出目录,恢复的文件会自动保存到当前目录的 RECOVERED_FILES/ 目录中。

备份恢复XFS文件系统

xfsdump工具(命令)

简介

xfsdump 是用于备份 XFS 文件系统的工具,能够对 XFS 文件系统的整个分区或目录进行备份,并将备份数据存储到文件、设备或其他输出目标中。通常用于系统备份,以确保数据在灾难发生时能够恢复。

格式

xfsdump [选项] -f <备份文件> <目标文件系统或目录>

选项(和参数)

  • f <备份文件>: 指定备份数据的输出目标,通常是一个文件或者设备路径。
  • L <标签>: 为此次备份指定一个标签,用于标识备份内容。
  • M <媒体名>: 指定备份媒体的名称。
  • l <级别>: 指定备份级别,0 为完全备份,1 或更高数字为增量备份。
  • S: 显示进度和统计信息。
  • q: 静默模式,不输出一般消息,只显示错误信息。
  • v: 详细模式,输出更详细的日志信息。

示例

xfsdump -f /opt/dump_sdb1 /dev/sdb1 -L dump_sdb1 -M sdb1

此命令将 sdb1 分区的内容备份到文件 /opt/dump_sdb1 中,备份的标签为 dump_sdb1,媒体名称为 sdb1

xfsrestore工具(命令)

简介

xfsrestore 是从由 xfsdump 创建的备份文件中恢复数据的工具。它能够将备份的 XFS 文件系统恢复到指定的目录或分区中,并还原文件的元数据和权限。

格式

xfsrestore [选项] -f <备份文件> <目标目录>

选项(和参数)

  • f <备份文件>: 指定要恢复的备份文件路径。
  • r: 恢复整个备份,包括所有的文件和目录。
  • s <会话ID>: 恢复指定的备份会话。
  • i: 交互模式,可以选择性地恢复文件。
  • v: 详细模式,输出更详细的日志信息。
  • q: 静默模式,减少输出,只显示重要信息和错误。

示例

xfsrestore -f /opt/dump_sdb1 /data/

此命令将备份文件 /opt/dump_sdb1 中的内容恢复到 /data/ 目录中,保留文件结构和权限信息。

案例1:恢复EXT类型的文件

extundelete 是一个用于恢复 ext3 和 ext4 文件系统中已删除文件的工具,特别适用于从误删除中恢复文件,通过编译安装之后可以用于恢复删除的文件。

注意:CentOS7只能使用此工具恢复ext3文件系统文件,否则有可能会报异常吐核。

步骤1:安装和编译 extundelete(用于 ext4 文件恢复)

  • 安装依赖:先安装基础依赖包;再安装下面。e2fsprogs-devele2fsprogs-libs 是 ext2/3/4 文件系统工具的开发库和支持库,是编译 extundelete 所需的依赖包。

    yum -y install gcc* pcre*
    yum -y install e2fsprogs-devel e2fsprogs-libs
    
  • 下载源码包:进入 /test 目录并使用 wget 下载 extundelete 的源码包。

    cd /test
    wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
    
  • 解压源码包:使用 tar 解压 .tar.bz2 压缩包。

    tar jxvf extundelete-0.2.4.tar.bz2
    
  • 编译安装:进入解压后的目录,使用 ./configure 进行配置,并指定安装路径为 /usr/local/extundelete。然后使用 make 编译并安装 extundelete

    cd extundelete-0.2.4/
    ./configure --prefix=/usr/local/extundelete
    make && make install
    
  • 创建符号链接:将 extundelete 的可执行文件链接到 /usr/bin/,以便在命令行中直接调用。

    ln -s /usr/local/extundelete/bin/* /usr/bin/
    

步骤2:创建和格式化分区

  • 创建和格式化分区:使用 fdisk/dev/sdc1 进行分区操作,然后使用 partprobe 刷新分区表。最后,使用 mkfs.ext3 将分区格式化为 xfs 文件系统。

    fdisk /dev/sdc
    partprobe /dev/sdc
    mkfs.ext3  /dev/sdc1
    

步骤3:ext3 文件系统恢复

此步骤为在 ext3 文件系统中创建文件、模拟删除文件并使用 extundelete 工具进行恢复操作。

  • 模拟创建文件

    cd /ext3_data  # 切换到 /ext3_data 目录
    echo a>a    # 创建一个名为 a 的文件,内容为 "a"
    echo a>b    # 创建一个名为 b 的文件,内容为 "a"
    echo a>c    # 创建一个名为 c 的文件,内容为 "a"
    echo a>d    # 创建一个名为 d 的文件,内容为 "a"
    ls          # 列出 /ext3_data 目录下的所有文件
    

    解释:

    • 切换到 /ext3_data 目录,使用 echo 命令创建四个文件 abcd ,并注入内容 “a”。
    • 最后一行 ls 命令用于验证文件是否成功创建。
  • 查看文件系统中的文件

    extundelete /dev/sdc1 --inode 2 
    

    解释:

    • extundelete 工具用于检查 /dev/sdc1 文件系统中存在哪些文件。-inode 2 参数表示从 i 节点 2 开始查看(i 节点 2 通常是根目录)。
  • 删除文件

    rm -rf a b    
    extundelete /dev/sdc1 --inode 2
    

    解释:

    • 使用 rm -rf a b 命令删除文件 ab
    • 再次使用 extundelete 检查文件系统,确认刚才删除的文件已经不存在。
  • 卸载并恢复文件系统

    cd ~                  # 切换到用户家目录
    umount /ext3_data     # 卸载 /ext3_data 挂载点
    extundelete /dev/sdc1 --restore-all # 恢复 /dev/sdc1 文件系统下的所有内容
    

    解释:

    • 退回家目录后卸载 /ext3_data 挂载点。
    • 使用 extundelete /dev/sdc1 --restore-all 命令恢复 /dev/sdc1 文件系统中的所有已删除文件。恢复的文件将会保存在一个名为 RECOVERED_FILES/ 的目录中。
    • 需要在分区未挂载的情况下进行,否则会报错。
  • 检查恢复的文件

    ls RECOVERED_FILES/        # 列出恢复的文件
    

    解释:

    • 使用 ls 命令列出 RECOVERED_FILES/ 目录中的内容,以验证哪些文件已成功恢复。

案例2:恢复XFS类型的文件

xfsdump/xfsrestore 是 xfs 文件系统的备份和恢复工具,通过备份整个分区,可以在数据丢失的情况下进行恢复。

完整步骤:xfs 文件系统恢复

xfs 文件系统的创建、备份与恢复操作如下。

  • 创建和格式化分区:使用 fdisk/dev/sdb 进行分区操作,然后使用 partprobe 刷新分区表。最后,使用 mkfs.xfs 将分区格式化为 xfs 文件系统。

    fdisk /dev/sdb
    partprobe /dev/sdb
    mkfs.xfs [-f] /dev/sdb1
    
  • 挂载和准备测试数据:创建挂载点 /xfs_data,并将 /dev/sdb1 挂载到该目录下。然后复制 /etc/passwd 文件,并在 /xfs_data 目录下创建一个 test 目录及其中的空文件 a

    mkdir /xfs_data
    mount /dev/sdb1 /xfs_data/
    cd /xfs_data
    cp /etc/passwd ./
    mkdir test
    touch test/a
    
  • 备份 xfs 文件系统:首先检查系统中是否已经安装了 xfsdump,如果没有,则使用 yum 安装它。xfsdump 用于备份整个 xfs 文件系统分区,这里将 /dev/sdb1 备份到 /opt/dump_sdb1 中。

    rpm -qa | grep xfsdump
    yum install -y xfsdump
    
    xfsdump -f /opt/dump_sdb1 /dev/sdb1 -L dump_sdb1 -M sdb1
    

    解释:

    • xfsdump: 用于备份 XFS 文件系统的工具。
    • f /opt/dump_sdb1: 指定备份文件存储路径为 /opt/dump_sdb1
    • /dev/sdb1: 要备份的分区设备(sdb1)。
    • L dump_sdb1: 为此次备份指定一个标签(label),这里标签为 dump_sdb1
    • M sdb1: 为备份的媒体指定一个名字(sdb1)。
  • 模拟数据丢失:进入 /xfs_data 目录,并删除所有文件,模拟数据丢失的场景。

    cd /xfs_data/
    rm -rf ./*
    ls
    
  • 恢复数据:使用 xfsrestore 从之前的备份文件 /opt/dump_sdb1 中恢复 /xfs_data 目录下的文件。

    xfsrestore -f /opt/dump_sdb1 /xfs_data/
    

    解释:

    • xfsrestore: 用于从由 xfsdump 创建的备份文件中恢复数据的工具。
    • f /opt/dump_sdb1: 指定要恢复的备份文件路径为 /opt/dump_sdb1
    • /xfs_data/: 恢复数据的目标目录。这里表示将备份数据恢复到 /xfs_data/ 目录下。

  • 13
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值