zoukankan      html  css  js  c++  java
  • linux系统中不小心执行了rm -rf ./* 怎么办?解决:文件系统的备份与恢复

    XFS提供了 xfsdump 和 xfsrestore 工具协助备份XFS文件系统中的数据。xfsdump 按inode顺序备份一个XFS文件系统。
    centos7选择xfs格式作为默认文件系统,而且不再使用以前的ext,仍然支持ext4,xfs专为大数据产生,每个单个文件系统最大可以支持8eb,单个文件可以支持16tb,不仅数据量大,而且扩展性高。还可以通过xfsdump,xfsrestore来备份和恢复。
    与传统的UNIX文件系统不同,XFS不需要在备份前被卸载;对使用中的XFS文件系统做备份就可以保证镜像的一致性。XFS的备份和恢复的过程是可以被中断然后继续的,无须冻结文件系统。xfsdump 甚至提供了高性能的多线程备份操作——它把一次dump拆分成多个数据流,每个数据流可以被发往不同的目的地
    首先了解一下xfsdump的备份级别有以下两种,默认为0(即完全备份)
    0 级别代表: 完全备份
    1 到9级别代表: 增量备份

    使用 xfsdump 时,请注意下面下面的几个限制:
    1、xfsdump 不支持没有挂载的文件系统备份!所以只能备份已挂载的!
    2、xfsdump 必须使用 root 的权限才能操作 (涉及文件系统的关系)
    3、xfsdump 只能备份 XFS 文件系统
    4、xfsdump 备份下来的数据 (档案或储存媒体) 只能让 xfsrestore 解析
    5、xfsdump 是透过文件系统的 UUID 来分辨各个备份档的,因此不能备份两个具有相同 UUID 的文件系统

    环境声明:

    系统CENTOS7.2 添加一块虚拟硬盘(准备一个测试分区)
    正常使用一块磁盘过程如下:
    添加磁盘大小:20Gà分区à格式化挂载

    [root@harry63 ~]# fdisk /dev/sdb
    

    欢迎使用fdisk (util-linux 2.23.2)。
    更改将停留在内存中,直到您决定将更改写入磁盘。
    使用写入命令前请三思。
    Device does not contain a recognized partition table
    使用磁盘标识符0x06d5a427 创建新的 DOS 磁盘标签。
    命令(输入 m 获取帮助):n #创建一个新的分区
    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 #指定分区大小
    分区 1 已设置为 Linux 类型,大小设为 1 GiB
    命令(输入 m 获取帮助):p #打印分区表
    磁盘/dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    磁盘标签类型:dos
    磁盘标识符:0x06d5a427
    设备 Boot Start End Blocks Id System
    /dev/sdb1 2048 2099199 1048576 83 Linux
    命令(输入 m 获取帮助):w #保存
    The partition table has been altered!
    Calling ioctl() to re-read partition table.
    正在同步磁盘。

    [root@rich七哥 ~]# ls  /dev/sdb*
    

      /dev/sdb  /dev/sdb1

    使用新的分区,格式化分区,并进行挂载

    [root@harry63 ~]# mkfs.xfs /dev/sdb1
    [root@harry63 ~]# mkdir /sdb1     #创建挂载点
    [root@harry63 ~]# mount /dev/sdb1 /sdb1   #挂载
    准备备份测试文件
    [root@harry63 ~]# cd /sdb1/
    [root@harry63 sdb1]# cp /etc/passwd ./
    [root@harry63 sdb1]# mkdir test
    [root@harry63 sdb1]# touch test/a
    [root@harry63 sdb1]# tree /sdb1/
    [root@harry63 sdb1]# tree /sdb1/
    /sdb1/
    ├──passwd
    └── test
        └── a
    

      

    开始备份

    1、备份整个分区。 (这个功能就像是虚拟机的快照,服务器被黑后,进行快速恢复)
    xfsdump -f 备份存放位置 要备份路径或设备文件
    注意:此软件在需要安装,备份的路径这里不能写成/sdb1/。 可以是/dev/sdb1 或/sdb1
    [root@harry63 sdb1]#yum install -y xfsdump
    [root@harry63 sdb1]# xfsdump -f /opt/dump_sdb1 /dev/sdb1
    xfsdump: using file dump (drive_simple) strategy
    xfsdump: version 3.1.4 (dump format 3.0) - type ^C for status and control
    ========== dump label dialog ==============================
    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 harry63.cn:/sdb1
    xfsdump: dump date: Fri Nov 17 12:24:53 2017
    xfsdump: session id: b5a25fcd-d43d-4308-bf29-142066f89d9a
    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 complete
    xfsdump: estimated dump size: 25856 bytes
    ============== media label dialog =============================
    please enter label for media in drive 0 (timeout in 300 sec)
    -> sdb1 指定设备标签,就是对要备份的设备做一个描述
    media label entered: "sdb1"
    --------------------------------- 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 24544 bytes
    xfsdump: dump size (non-dir files) : 2592 bytes
    xfsdump: dump complete: 46 seconds elapsed
    xfsdump: Dump Summary:
    xfsdump: stream 0 /opt/dump_sdb1 OK (success)
    xfsdump: Dump Status: SUCCESS
    2、 指定备份时免交互操作,方便后期做定时备份
    [root@harry63 sdb1]# xfsdump -f /opt/dump_passwd /sdb1 -L dump_passwd -M media1
    -L :xfsdump 纪录每次备份的 session 标头,这里可以填写针对此文件系统的简易说明
    -M :xfsdump 可以纪录储存媒体的标头,这里可以填写此媒体的简易说明

    3、指定只备份分区中某个目录
    参数:-s 文件路径 只对指定的文件进行备份,-s指定时,路径写的是相对路径(-s可以是文件或目录)
    [root@harry63 sdb1]# xfsdump -f /opt/dump_grub2 -s grub2/grub.cfg /boot -L dump_grub2 -M boot-sda1
    4、查看备份信息与内容
    备份成功后,我们就可以在/var/lib/xfsdump/inventory目录下看到生成的档案信息
    [root@harry63 opt]# xfsdump -I(字母大写i)

    测试恢复:先删除之前创建的内容
    [root@harry63 sdb1]# ls
    passwd test
    [root@harry63 sdb1]# pwd
    /sdb1
    [root@harry63 sdb1]# rm -rf ./*

    4.4.3 文件系统恢复

    语法:xfsrestore -f 指定恢复文件的位置 指定存放恢复后的文件的路径
    [root@harry63 opt]# xfsrestore -f /opt/dump_sdb1 /sdb1
    查看恢复情况
    [root@harry63 ~]# ls /sdb1/
    恢复单个文件如下:
    [root@harry63 ~]# mkdir /var/test/
    [root@harry63 ~]# xfsrestore -f /opt/dump_grub2 -s grub2/grub.cfg/var/test/
    [root@harry63 ~]# xfsrestore -f /opt/dump_grub2 -s grub2/var/test/ #恢复目录

    恢复成功!

    END

  • 相关阅读:
    Darknet 安装
    Spring.Net封闭业务类为WebService注意点和问题
    NHibernate删除数据时遇到deleted object would be re-saved by cascade级联问题
    【不遮遮掩掩】Github上传本地代码以及常见问题解决方案
    Android分享内容和接收分享内容小小实现
    Android v7包下Toolbar和ActionBarActivity实现后退导航效果
    Android MediaPlayer setDataSource failed
    Java入门-类HelloWorld是公共的,应在名为HelloWorld.java的文件中声明
    C#导出Excel文件Firefox中文件名乱码
    【转】如何用css限制文字长度,使溢出的内容用省略号…显示
  • 原文地址:https://www.cnblogs.com/fusheng11711/p/11468525.html
Copyright © 2011-2022 走看看