概述

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级别代表: 增量备份

扩展:

  • 完全备份:每次都把指定的备份目录完整的复制一遍,不管目录下的文件有没有变化;
  • 增量备份:每次将之前(第一次、第二次、直到前一次)做过备份之后有变化的文件进行备份;
  • 差异备份:每次都将第一次完整备份以来有变化的文件进行备份。

环境准备

实验环境

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

正常使用一块磁盘过程如下:

添加磁盘大小:2G ->分区->格式化->挂载

  1. 虚拟机新增2G硬盘
  2. 开机后查看设备

    使用fdisk -l查看新增硬盘
  1. Last login: Tue Oct 20 04:13:20 2020 from 10.0.0.1
  2. [root@C8-3 ~]# fdisk -l
  3. Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors
  4. Units: sectors of 1 * 512 = 512 bytes
  5. Sector size (logical/physical): 512 bytes / 512 bytes
  6. I/O size (minimum/optimal): 512 bytes / 512 bytes
  7. Disklabel type: dos
  8. Disk identifier: 0xbfcdb101
  9. Device Boot Start End Sectors Size Id Type
  10. /dev/sda1 * 2048 2099199 2097152 1G 83 Linux
  11. /dev/sda2 2099200 41943039 39843840 19G 8e Linux LVM
  12. Disk /dev/sdb: 2 GiB, 2147483648 bytes, 4194304 sectors
  13. Units: sectors of 1 * 512 = 512 bytes
  14. Sector size (logical/physical): 512 bytes / 512 bytes
  15. I/O size (minimum/optimal): 512 bytes / 512 bytes
  1. 给新增硬盘分区
  1. [root@C8-3 ~]# fdisk /dev/sdb #使用fdisk命令分区
  2. Welcome to fdisk (util-linux 2.32.1).
  3. Changes will remain in memory only, until you decide to write them.
  4. Be careful before using the write command.
  5. Device does not contain a recognized partition table.
  6. Created a new DOS disklabel with disk identifier 0x467c42d4.
  7. Command (m for help): m #查看有哪些命令可以用
  8. Help:
  9. DOS (MBR)
  10. a toggle a bootable flag
  11. b edit nested BSD disklabel
  12. c toggle the dos compatibility flag
  13. Generic
  14. d delete a partition
  15. F list free unpartitioned space
  16. l list known partition types
  17. n add a new partition
  18. p print the partition table
  19. t change a partition type
  20. v verify the partition table
  21. i print information about a partition
  22. Misc
  23. m print this menu
  24. u change display/entry units
  25. x extra functionality (experts only)
  26. Script
  27. I load disk layout from sfdisk script file
  28. O dump disk layout to sfdisk script file
  29. Save & Exit
  30. w write table to disk and exit
  31. q quit without saving changes
  32. Create a new label
  33. g create a new empty GPT partition table
  34. G create a new empty SGI (IRIX) partition table
  35. o create a new empty DOS partition table
  36. s create a new empty Sun partition table
  37. Command (m for help): n #选择新建一个分区
  38. Partition type
  39. p primary (0 primary, 0 extended, 4 free)
  40. e extended (container for logical partitions)
  41. Select (default p): p #创建主分区
  42. Partition number (1-4, default 1): #直接回车默认值
  43. First sector (2048-4194303, default 2048): #起始扇区,回车默认
  44. Last sector, +sectors or +size{K,M,G,T,P} (2048-4194303, default 4194303): #结束扇区,回车默认分配全部空间
  45. Created a new partition 1 of type 'Linux' and of size 2 GiB.
  46. Command (m for help): w #将以上操作写入硬盘分区表,结束分区
  47. The partition table has been altered.
  48. Calling ioctl() to re-read partition table.
  49. Syncing disks.
  50. [root@C8-3 ~]# lsblk #查看分区是否成功
  51. NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
  52. sda 8:0 0 20G 0 disk
  53. ├─sda1 8:1 0 1G 0 part /boot
  54. └─sda2 8:2 0 19G 0 part
  55. ├─cl-root 253:0 0 17G 0 lvm /
  56. └─cl-swap 253:1 0 2G 0 lvm [SWAP]
  57. sdb 8:16 0 2G 0 disk
  58. └─sdb1 8:17 0 2G 0 part #分区成功但未挂载
  1. 将新建分区格式化为xfs格式

    使用mkfs.xfs格式化新分区
  1. [root@C8-3 ~]# type mkfs.xfs #查看是否有此工具
  2. mkfs.xfs is /usr/sbin/mkfs.xfs
  3. [root@C8-3 ~]# mkfs.xfs --help #查看命令的帮助
  4. mkfs.xfs: invalid option -- '-'
  5. unknown option --
  6. Usage: mkfs.xfs
  7. /* blocksize */ [-b size=num]
  8. /* metadata */ [-m crc=0|1,finobt=0|1,uuid=xxx,rmapbt=0|1,reflink=0|1]
  9. /* data subvol */ [-d agcount=n,agsize=n,file,name=xxx,size=num,
  10. (sunit=value,swidth=value|su=num,sw=num|noalign),
  11. sectsize=num
  12. /* force overwrite */ [-f]
  13. /* inode size */ [-i log=n|perblock=n|size=num,maxpct=n,attr=0|1|2,
  14. projid32bit=0|1,sparse=0|1]
  15. /* no discard */ [-K]
  16. /* log subvol */ [-l agnum=n,internal,size=num,logdev=xxx,version=n
  17. sunit=value|su=num,sectsize=num,lazy-count=0|1]
  18. /* label */ [-L label (maximum 12 characters)]
  19. /* naming */ [-n size=num,version=2|ci,ftype=0|1]
  20. /* no-op info only */ [-N]
  21. /* prototype file */ [-p fname]
  22. /* quiet */ [-q]
  23. /* realtime subvol */ [-r extsize=num,size=num,rtdev=xxx]
  24. /* sectorsize */ [-s size=num]
  25. /* version */ [-V]
  26. devicename
  27. <devicename> is required unless -d name=xxx is given.
  28. <num> is xxx (bytes), xxxs (sectors), xxxb (fs blocks), xxxk (xxx KiB),
  29. xxxm (xxx MiB), xxxg (xxx GiB), xxxt (xxx TiB) or xxxp (xxx PiB).
  30. <value> is xxx (512 byte blocks).
  31. [root@C8-3 ~]# mkfs.xfs -V #查看命令版本
  32. mkfs.xfs version 5.0.0
  33. [root@C8-3 ~]# mkfs.xfs /dev/sdb1 #格式化新分区
  34. meta-data=/dev/sdb1 isize=512 agcount=4, agsize=131008 blks
  35. = sectsz=512 attr=2, projid32bit=1
  36. = crc=1 finobt=1, sparse=1, rmapbt=0
  37. = reflink=1
  38. data = bsize=4096 blocks=524032, imaxpct=25
  39. = sunit=0 swidth=0 blks
  40. naming =version 2 bsize=4096 ascii-ci=0, ftype=1
  41. log =internal log bsize=4096 blocks=2560, version=2
  42. = sectsz=512 sunit=0 blks, lazy-count=1
  43. realtime =none extsz=4096 blocks=0, rtextents=0
  1. 查看新分区情况

    使用lsblk及参数-f查看分区情况和文件系统

    -f, --fs output info about filesystems
  1. [root@C8-3 ~]# lsblk -f
  2. NAME FSTYPE LABEL UUID MOUNTPOINT
  3. sda
  4. ├─sda1 ext4 8df39f81-d4b1-4881-9bb4-51f8f6ee964a /boot
  5. └─sda2 LVM2_member mQQNpB-AMy6-Ad3M-3RNh-NeRf-8tf9-OmosY7
  6. ├─cl-root xfs 8dbc40ac-24cf-45c9-8c53-d07ac9cee558 /
  7. └─cl-swap swap ffc54438-efdc-45d7-a244-b9e9bfef4930 [SWAP]
  8. sdb
  9. └─sdb1 xfs d549d0dd-23a2-4223-abe5-96055a8f737a
  1. 创建一个目录并将新分区sdb1挂载到此目录
  1. [root@C8-3 ~]# mkdir /xfsTest
  2. [root@C8-3 ~]# mount /dev/sdb1 /xfsTest/
  3. [root@C8-3 ~]# lsblk
  4. NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
  5. sda 8:0 0 20G 0 disk
  6. ├─sda1 8:1 0 1G 0 part /boot
  7. └─sda2 8:2 0 19G 0 part
  8. ├─cl-root 253:0 0 17G 0 lvm /
  9. └─cl-swap 253:1 0 2G 0 lvm [SWAP]
  10. sdb 8:16 0 2G 0 disk
  11. └─sdb1 8:17 0 2G 0 part /xfsTest

创建测试文件和文件夹

  1. [root@C8-3 ~]# rm -rf /xfsTest/*
  2. [root@C8-3 ~]# ls /xfsTest/
  3. [root@C8-3 ~]# cp /etc/passwd /xfsTest/
  4. [root@C8-3 ~]# touch /xfsTest/file{1..3}{a..b}.txt
  5. [root@C8-3 ~]# mkdir -p /xfsTest/m{1..3}/n{a..b}
  6. [root@C8-3 ~]# tree /xfsTest/
  7. /xfsTest/
  8. ├── file1a.txt
  9. ├── file1b.txt
  10. ├── file2a.txt
  11. ├── file2b.txt
  12. ├── file3a.txt
  13. ├── file3b.txt
  14. ├── m1
  15. │   ├── na
  16. │   └── nb
  17. ├── m2
  18. │   ├── na
  19. │   └── nb
  20. ├── m3
  21. │   ├── na
  22. │   └── nb
  23. └── passwd
  24. 9 directories, 7 files

备份

使用xfsdump命令进行备份

先查看xfsdump帮助

  1. [root@C8-3 ~]# type xfsdump
  2. xfsdump is /usr/sbin/xfsdump
  3. [root@C8-3 ~]# xfsdump --help
  4. xfsdump: version 3.1.8 (dump format 3.0)
  5. xfsdump: usage: xfsdump [ -a (dump DMF dualstate files as offline) ]
  6. ……

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

[ -f <destination> ... ]

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

注意:备份的路径这里不能写成/xfsTest/。 可以是/dev/sdb1 或/xfsTest

  1. [root@C8-3 ~]# xfsdump -f /opt/dump_sdb1 /dev/sdb1
  2. xfsdump: using file dump (drive_simple) strategy
  3. xfsdump: version 3.1.8 (dump format 3.0) - type ^C for status and control
  4. ============================= dump label dialog ==============================
  5. please enter label for this dump session (timeout in 300 sec)
  6. -> dump_sdb1 #提示输入,指定备份会话标签
  7. session label entered: "dump_sdb1"
  8. --------------------------------- end dialog ---------------------------------
  9. xfsdump: level 0 dump of C8-3:/xfsTest
  10. xfsdump: dump date: Tue Oct 20 08:09:38 2020
  11. xfsdump: session id: 3fdced05-235f-4926-9409-7c7e4081da84
  12. xfsdump: session label: "dump_sdb1"
  13. xfsdump: ino map phase 1: constructing initial dump list
  14. xfsdump: ino map phase 2: skipping (no pruning necessary)
  15. xfsdump: ino map phase 3: skipping (only one dump stream)
  16. xfsdump: ino map construction complete
  17. xfsdump: estimated dump size: 30016 bytes
  18. ============================= media label dialog =============================
  19. please enter label for media in drive 0 (timeout in 300 sec)
  20. -> sdb1 #提示输入,指定设备标签,就是对要备份的设备做一个描述
  21. media label entered: "sdb1"
  22. --------------------------------- end dialog ---------------------------------
  23. xfsdump: creating dump session media file 0 (media 0, file 0)
  24. xfsdump: dumping ino map
  25. xfsdump: dumping directories
  26. xfsdump: dumping non-directory files
  27. xfsdump: ending media file
  28. xfsdump: media file size 32936 bytes
  29. xfsdump: dump size (non-dir files) : 1568 bytes
  30. xfsdump: dump complete: 70 seconds elapsed
  31. xfsdump: Dump Summary:
  32. xfsdump: stream 0 /opt/dump_sdb1 OK (success)
  33. xfsdump: Dump Status: SUCCESS

免交互自动备份 像虚拟机的快照

如果分区很大,数据很多,可能等的时间会很久,才会跳出提示输入的界面,这样不靠谱又没什么太大意义的提示会中断很久。

免交互才是真的自动化。

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

  1. [root@C8-3 ~]# time xfsdump -f /opt/dump_sdb1_3 /dev/sdb1 -L dump_1_3 -M 1_3
  2. xfsdump: using file dump (drive_simple) strategy
  3. xfsdump: version 3.1.8 (dump format 3.0) - type ^C for status and control
  4. xfsdump: level 0 dump of C8-3:/xfsTest
  5. xfsdump: dump date: Tue Oct 20 08:21:12 2020
  6. xfsdump: session id: 5308f2ab-6d0e-476f-9160-a72a37e56ca9
  7. xfsdump: session label: "dump_1_3"
  8. xfsdump: ino map phase 1: constructing initial dump list
  9. xfsdump: ino map phase 2: skipping (no pruning necessary)
  10. xfsdump: ino map phase 3: skipping (only one dump stream)
  11. xfsdump: ino map construction complete
  12. xfsdump: estimated dump size: 30016 bytes
  13. xfsdump: creating dump session media file 0 (media 0, file 0)
  14. xfsdump: dumping ino map
  15. xfsdump: dumping directories
  16. xfsdump: dumping non-directory files
  17. xfsdump: ending media file
  18. xfsdump: media file size 32936 bytes
  19. xfsdump: dump size (non-dir files) : 1568 bytes
  20. xfsdump: dump complete: 10 seconds elapsed
  21. xfsdump: Dump Summary:
  22. xfsdump: stream 0 /opt/dump_sdb1_3 OK (success)
  23. xfsdump: Dump Status: SUCCESS
  24. real 0m10.058s
  25. user 0m0.000s
  26. sys 0m0.004s

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

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

备份指定目录

参数:-s 文件路径 只对指定的文件进行备份,-s指定时,路径写的是相对文件系统根的路径(-s可以是文件或目录)

要对/xfsTest下的m2/nb这个目录(完整路径是/xfsTest/m2/nb 直接写这个不行)进行备份,使用-s 参数

  1. [root@C8-3 ~]# xfsdump -f /opt/dump_m2nb -s m2/nb /xfsTest -L dump_m2nb -M m2nb
  2. xfsdump: using file dump (drive_simple) strategy
  3. xfsdump: version 3.1.8 (dump format 3.0) - type ^C for status and control
  4. xfsdump: level 0 dump of C8-3:/xfsTest
  5. xfsdump: dump date: Tue Oct 20 10:04:58 2020
  6. xfsdump: session id: 4cd18dc2-9a10-4538-b93c-3d4169c13eae
  7. xfsdump: session label: "dump_m2nb"
  8. xfsdump: ino map phase 1: constructing initial dump list
  9. xfsdump: ino map phase 2: skipping (no pruning necessary)
  10. xfsdump: ino map phase 3: skipping (only one dump stream)
  11. xfsdump: ino map construction complete
  12. xfsdump: estimated dump size: 21440 bytes
  13. xfsdump: creating dump session media file 0 (media 0, file 0)
  14. xfsdump: dumping ino map
  15. xfsdump: dumping directories
  16. xfsdump: dumping non-directory files
  17. xfsdump: ending media file
  18. xfsdump: media file size 22592 bytes
  19. xfsdump: dump size (non-dir files) : 0 bytes
  20. xfsdump: dump complete: 10 seconds elapsed
  21. xfsdump: Dump Summary:
  22. xfsdump: stream 0 /opt/dump_m2nb OK (success)
  23. xfsdump: Dump Status: SUCCESS

查看备份信息与内容

  1. [root@C8-3 xfsTest]# xfsdump -I
  2. file system 0:
  3. fs id: d549d0dd-23a2-4223-abe5-96055a8f737a
  4. session 0:
  5. mount point: C8-3:/xfsTest
  6. device: C8-3:/dev/sdb1
  7. time: Tue Oct 20 08:09:38 2020
  8. session label: "dump_sdb1"
  9. session id: 3fdced05-235f-4926-9409-7c7e4081da84
  10. level: 0
  11. resumed: NO
  12. subtree: NO
  13. streams: 1
  14. stream 0:
  15. pathname: /opt/dump_sdb1
  16. start: ino 131 offset 0
  17. end: ino 138 offset 0
  18. interrupted: NO
  19. media files: 1
  20. media file 0:
  21. mfile index: 0
  22. mfile type: data
  23. mfile size: 32936
  24. mfile start: ino 131 offset 0
  25. mfile end: ino 138 offset 0
  26. media label: "sdb1"
  27. media id: 77e98c40-d588-4562-b801-6ba7dd2425bf
  28. session 1:
  29. mount point: C8-3:/xfsTest
  30. device: C8-3:/dev/sdb1
  31. time: Tue Oct 20 08:17:18 2020
  32. session label: "dump_passwd"
  33. session id: e9970178-7a24-4c9d-b9c0-7e13f8d43c48
  34. level: 0
  35. resumed: NO
  36. subtree: NO
  37. streams: 1
  38. stream 0:
  39. pathname: /opt/dump_sdb1
  40. start: ino 0 offset 0
  41. end: ino 0 offset 0
  42. interrupted: YES
  43. media files: 0
  44. session 2:
  45. mount point: C8-3:/xfsTest
  46. device: C8-3:/dev/sdb1
  47. time: Tue Oct 20 08:19:23 2020
  48. session label: "dump_12"
  49. session id: 391b7c46-47f6-4760-b454-c7835045db09
  50. level: 0
  51. resumed: NO
  52. subtree: NO
  53. streams: 1
  54. stream 0:
  55. pathname: /opt/dump_sdb1
  56. start: ino 0 offset 0
  57. end: ino 0 offset 0
  58. interrupted: YES
  59. media files: 0
  60. session 3:
  61. mount point: C8-3:/xfsTest
  62. device: C8-3:/dev/sdb1
  63. time: Tue Oct 20 08:20:12 2020
  64. session label: "dump_12"
  65. session id: d6613e91-8c68-4f40-b68b-e836fdf35568
  66. level: 0
  67. resumed: NO
  68. subtree: NO
  69. streams: 1
  70. stream 0:
  71. pathname: /opt/dump_sdb1_1
  72. start: ino 131 offset 0
  73. end: ino 138 offset 0
  74. interrupted: NO
  75. media files: 1
  76. media file 0:
  77. mfile index: 0
  78. mfile type: data
  79. mfile size: 32936
  80. mfile start: ino 131 offset 0
  81. mfile end: ino 138 offset 0
  82. media label: "12"
  83. media id: f85b0aff-d362-429c-9804-0ca1071f812f
  84. session 4:
  85. mount point: C8-3:/xfsTest
  86. device: C8-3:/dev/sdb1
  87. time: Tue Oct 20 08:21:12 2020
  88. session label: "dump_1_3"
  89. session id: 5308f2ab-6d0e-476f-9160-a72a37e56ca9
  90. level: 0
  91. resumed: NO
  92. subtree: NO
  93. streams: 1
  94. stream 0:
  95. pathname: /opt/dump_sdb1_3
  96. start: ino 131 offset 0
  97. end: ino 138 offset 0
  98. interrupted: NO
  99. media files: 1
  100. media file 0:
  101. mfile index: 0
  102. mfile type: data
  103. mfile size: 32936
  104. mfile start: ino 131 offset 0
  105. mfile end: ino 138 offset 0
  106. media label: "1_3"
  107. media id: 78304c29-4353-4edc-a3cb-63454d898918
  108. xfsdump: Dump Status: SUCCESS

删除已备份的文件

  1. [root@C8-3 xfsTest]# cd
  2. [root@C8-3 ~]# rm -rf /xfsTest/*
  3. [root@C8-3 ~]# ls -a /xfsTest/
  4. . ..

恢复文件系统

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

  1. [root@C8-3 ~]# mkdir /xfsTest-re #在其他分区创建恢复文件夹
  2. [root@C8-3 ~]# xfsrestore -f /opt/dump_sdb1 /xfsTest-re
  3. xfsrestore: using file dump (drive_simple) strategy
  4. xfsrestore: version 3.1.8 (dump format 3.0) - type ^C for status and control
  5. xfsrestore: searching media for dump
  6. xfsrestore: examining media file 0
  7. xfsrestore: dump description:
  8. xfsrestore: hostname: C8-3
  9. xfsrestore: mount point: /xfsTest
  10. xfsrestore: volume: /dev/sdb1
  11. xfsrestore: session time: Tue Oct 20 08:09:38 2020
  12. xfsrestore: level: 0
  13. xfsrestore: session label: "dump_sdb1"
  14. xfsrestore: media label: "sdb1"
  15. xfsrestore: file system id: d549d0dd-23a2-4223-abe5-96055a8f737a
  16. xfsrestore: session id: 3fdced05-235f-4926-9409-7c7e4081da84
  17. xfsrestore: media id: 77e98c40-d588-4562-b801-6ba7dd2425bf
  18. xfsrestore: using online session inventory
  19. xfsrestore: searching media for directory dump
  20. xfsrestore: reading directories
  21. xfsrestore: 10 directories and 16 entries processed
  22. xfsrestore: directory post-processing
  23. xfsrestore: restoring non-directory files
  24. xfsrestore: restore complete: 0 seconds elapsed
  25. xfsrestore: Restore Summary:
  26. xfsrestore: stream 0 /opt/dump_sdb1 OK (success)
  27. xfsrestore: Restore Status: SUCCESS
  28. [root@C8-3 ~]# ll /xfsTest-re/ #查看恢复的文件
  29. total 4
  30. -rw-r--r--. 1 root root 0 Oct 20 07:58 file1a.txt
  31. -rw-r--r--. 1 root root 0 Oct 20 07:58 file1b.txt
  32. -rw-r--r--. 1 root root 0 Oct 20 07:58 file2a.txt
  33. -rw-r--r--. 1 root root 0 Oct 20 07:58 file2b.txt
  34. -rw-r--r--. 1 root root 0 Oct 20 07:58 file3a.txt
  35. -rw-r--r--. 1 root root 0 Oct 20 07:58 file3b.txt
  36. drwxr-xr-x. 4 root root 26 Oct 20 07:59 m1
  37. drwxr-xr-x. 4 root root 26 Oct 20 07:59 m2
  38. drwxr-xr-x. 4 root root 26 Oct 20 07:59 m3
  39. -rw-r--r--. 1 root root 1469 Oct 20 07:58 passwd
  40. [root@C8-3 ~]# tree /xfsTest #对比源目录啥也没有了
  41. /xfsTest
  42. 0 directories, 0 files
  43. [root@C8-3 ~]# tree /xfsTest-re/ #在恢复的目录中重建了目录结构
  44. /xfsTest-re/
  45. ├── file1a.txt
  46. ├── file1b.txt
  47. ├── file2a.txt
  48. ├── file2b.txt
  49. ├── file3a.txt
  50. ├── file3b.txt
  51. ├── m1
  52.    ├── na
  53.    └── nb
  54. ├── m2
  55.    ├── na
  56.    └── nb
  57. ├── m3
  58.    ├── na
  59.    └── nb
  60. └── passwd
  61. 9 directories, 7 files

注:

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

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

增量备份

概念

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

优缺点

  • 优点:没有重复的备份数据,因此备份的数据量不大,备份所需的时间很短。
  • 缺点:数据恢复相对比较麻烦,它需要上一次全备份和所有增量备份的内容才能够完全恢复成功,并且它们必须沿着从全备份到依次增量备份的时间顺序逐个反推恢复,因此可能会延长的恢复时间

准备一个需要备份的目录

  1. [root@C8-3 ~]# tree /xfsTest
  2. /xfsTest
  3. ├── m1
  4.    ├── na
  5.    └── nb
  6. ├── m2
  7.    ├── na
  8.    └── nb
  9. ├── m3
  10.    ├── na
  11.    └── nb
  12. └── passwd

进行一次全面备份

  1. [root@C8-3 ~]# xfsdump -f /opt/xFull /xfsTest -L xF1 -M x1
  2. xfsdump: using file dump (drive_simple) strategy
  3. xfsdump: version 3.1.8 (dump format 3.0) - type ^C for status and control
  4. xfsdump: level 0 dump of C8-3:/xfsTest
  5. xfsdump: dump date: Tue Oct 20 10:43:59 2020
  6. xfsdump: session id: 4bc4262b-afa1-493f-8b21-33428325961d
  7. xfsdump: session label: "xF1"
  8. xfsdump: ino map phase 1: constructing initial dump list
  9. xfsdump: ino map phase 2: skipping (no pruning necessary)
  10. xfsdump: ino map phase 3: skipping (only one dump stream)
  11. xfsdump: ino map construction complete
  12. xfsdump: estimated dump size: 28096 bytes
  13. xfsdump: creating dump session media file 0 (media 0, file 0)
  14. xfsdump: dumping ino map
  15. xfsdump: dumping directories
  16. xfsdump: dumping non-directory files
  17. xfsdump: ending media file
  18. xfsdump: media file size 29000 bytes
  19. xfsdump: dump size (non-dir files) : 1568 bytes
  20. xfsdump: dump complete: 10 seconds elapsed
  21. xfsdump: Dump Summary:
  22. xfsdump: stream 0 /opt/xFull OK (success)
  23. xfsdump: Dump Status: SUCCESS

添加一些东西进去

  1. [root@C8-3 ~]# echo hellow >> /xfsTest/passwd
  2. [root@C8-3 ~]# touch /xfsTest/nb3.txt

删掉一些东西

  1. [root@C8-3 ~]# rm -rf /xfsTest/m2
  2. [root@C8-3 ~]# ls /xfsTest
  3. m1 m3 nb3.txt passwd
  4. [root@C8-3 ~]# ll /xfsTest
  5. total 4
  6. drwxr-xr-x. 4 root root 26 Oct 20 07:59 m1
  7. drwxr-xr-x. 4 root root 26 Oct 20 07:59 m3
  8. -rw-r--r--. 1 root root 0 Oct 20 10:47 nb3.txt
  9. -rw-r--r--. 1 root root 1476 Oct 20 10:46 passwd

进行第一次增量备份

  1. [root@C8-3 ~]# xfsdump -l 1 -f /opt/xBL1 /xfsTest -L xBL1 -M xB1

进行第二次增量备份

添加点东西、再删点东西

  1. [root@C8-3 ~]# mkdir /xfsTest/xBl2
  2. [root@C8-3 ~]# rm -rf /xfsTest/m3

然后接茬进行一次2级增量备份

  1. [root@C8-3 ~]# xfsdump -l 2 -f /opt/xBL2 /xfsTest -L xBL2 -M xB2

删除已备份的所有数据

  1. [root@C8-3 ~]# rm -rf /xfsTest/*
  2. [root@C8-3 ~]# ll /xfsTest
  3. total 0

恢复数据

现在进行恢复,要想恢复全部全部数据,包括新添加的文件,如何恢复?

步骤:

1、先恢复完全备份

2、情况1: 恢复最后一次增量备份(如果两次增量备份都是1级的,所以只需要恢复最后一个增量就可以了。

3、情况2:如果你做的是第一次是1级备,第二次是2级备,那么你在恢复的时候就需要先恢复完全备份,然后是1级备,最后是2级备)

直接恢复最后一次增量备份

  1. [root@C8-3 ~]# xfsrestore -f /opt/xBL2 /xfsTest
  2. [root@C8-3 ~]# tree /xfsTest
  3. /xfsTest
  4. └── xBl2

发现只恢复了最后一次建立的文件夹

直接恢复第一次增量备份

  1. [root@C8-3 ~]# rm -rf /xfsTest/*
  2. [root@C8-3 ~]# ll /xfsTest
  3. total 0
  4. [root@C8-3 ~]# xfsrestore -f /opt/xBL1 /xfsTest
  5. [root@C8-3 ~]# tree /xfsTest
  6. /xfsTest
  7. ├── nb3.txt
  8. └── passwd

发现只恢复了第一次增量备份前添加和修改的文件、文件夹

直接恢复第一次全备份

  1. [root@C8-3 ~]# xfsrestore -f /opt/xFull /xfsTest
  2. [root@C8-3 ~]# tree /xfsTest
  3. /xfsTest
  4. ├── m1
  5.    ├── na
  6.    └── nb
  7. ├── m2
  8.    ├── na
  9.    └── nb
  10. ├── m3
  11.    ├── na
  12.    └── nb
  13. └── passwd
  14. 9 directories, 1 file
  15. [root@C8-3 ~]# ll /xfsTest
  16. total 4
  17. drwxr-xr-x. 4 root root 26 Oct 20 07:59 m1
  18. drwxr-xr-x. 4 root root 26 Oct 20 07:59 m2
  19. drwxr-xr-x. 4 root root 26 Oct 20 07:59 m3
  20. -rw-r--r--. 1 root root 1469 Oct 20 07:58 passwd

这时候就恢复到了第一次增量备份之前的状态

如果要恢复到最后删除所有文件时候的状态,就需要按顺序依次恢复增量一和增量二的备份内容。

到此,数据恢复成功了。

实战:xfs文件系统的备份和恢复的更多相关文章

  1. XFS文件系统的备份和恢复

    1.工具 XFS文件系统提供了xfsdump和xfsrestore来协助备份.恢复XFS文件系统中的数据,xfsdump按inode顺序来备份XFS文件系统,备份时不需要卸载文件系统,备份和恢复的过程 ...

  2. (linux)Centos 7 xfsdump文件系统的备份和恢复

         XFS提供了 xfsdump 和 xfsrestore 工具协助备份XFS文件系统中的数据.xfsdump 按inode顺序备份一个XFS文件系统. centos7选择xfs格式作为默认文件 ...

  3. Linux高级运维 第四章 文件的基本管理和XFS文件系统备份恢复

    4.1 Linux系统目录结构和相对/绝对路径 4.1.1系统目录结构 在windows系统中,查看文件先进入相应的盘符,然后进入文件目录 在windows中,它是多根  c:\    d:\   e ...

  4. 文件的基本管理和XFS文件系统备份恢复

    4.1 Linux系统目录结构和相对/绝对路径 4.1.1系统目录结构 在WIN系统中,查看文件先进入相应的盘符,然后进入文件目录 在WIN中,它是多根  c:\    d:\   e:\ Linux ...

  5. 第四章 文件的基本管理和XFS文件系统备份恢复 随堂笔记

    第四章 文件的基本管理和XFS文件系统备份恢复 本节所讲内容: 4.1 Linux系统目录结构和相对/绝对路径. 4.2 创建/复制/删除文件,rm -rf / 意外事故 4.3 查看文件内容的命令 ...

  6. 第六天 文件的基本管理和xfs文进系统备份恢复

    1.1 Linux系统目录结构,相对路径/绝对路径 1.1.1 Linux系统目录结构 在linux系统中一切都是文件 / 根目录,一切的起点,就像是一个树杈一样,他是所有叉的根 /bin 在单用户模 ...

  7. NoSQL 数据库案例实战 -- MongoDB数据备份、恢复

    MySQL数据迁移到MongoDB数据库中 前言 一.数据备份 二.数据恢复 前言 本环境是基于 Centos 7.8 系统构建mongodb-enterprise-4.2.8学习环境具体构建,请参考 ...

  8. 收藏加备用。ext.xfs文件系统 文件恢复

    注意 当确认误删除文件后立刻使用各种方式阻止新数据在写入该分区了. 设置只读或umount都可以 ext2 3 4 文件系统 可以用 extundelete 这个工具来恢复. github地址: ht ...

  9. 恢复xfs文件系统superblock实验

    1. 创建一个XFS文件系统[root@localhost ~]# mkfs.xfs -f /dev/vdb1meta-data=/dev/vdb1              isize=256    ...

随机推荐

  1. react项目结合echarts,百度地图实现热力图

    一.最近在一个react项目(antd pro)中需要展示一个热力地图.需求是: 1.热力地图可缩放: 2.鼠标点击可以展示该点地理坐标,及热力值. 3.初始化时候自适应展示所有的热力点. 4.展示热 ...

  2. BeautifulSoup解析页面

    beautiful soup是一个解析包,专门用来解析html语法的,lxml是一个解析器,用来分析以及定位内容的 .是class #是id import requests from bs4 impo ...

  3. 2020年的100天——FLAGS

    2020年的100天--FLAGS Reading <爱的博弈>-- 作者: 约翰·戈特曼 (John Gottman) / 娜恩·西尔弗 (Nan Silver) <人间失格> ...

  4. 类加载器ClassLoader

    上篇文章说到,Class类可以通过一个类的全限定名去加载类,那么底层是如何去加载的呢?这就是我们今天要聊的类加载器ClassLoader,其可以通过一个类的全限定名来获取描述此类的二进制字节流,也即是 ...

  5. st表、RMQ和LCA

    int lca(int x,int y) { if(de[x]<de[y]) swap(x,y); int d=de[x]-de[y]; for(int i=log2(d);i>=0;i- ...

  6. PHP代码审计01之in_array()函数缺陷

    前言 从今天起,结合红日安全写的文章,开始学习代码审计,题目均来自PHP SECURITY CALENDAR 2017,讲完这个题目,会再用一道有相同问题的CTF题来进行巩固.下面开始分析. 漏洞分析 ...

  7. VMware虚拟机ubuntu下安装VMware Tools步骤

    双击VMware Tools进入 找到后缀.tar.gz的压缩文件 将压缩文件复制到home目录下,home目录即左侧的主目录文件夹 打开命令行终端,默认应该就是home目录,如果不是home目录,在 ...

  8. Python-用装饰器实现递归剪枝

    求一个共有10个台阶的楼梯,从下走到上面,一次只能迈出1~3个台阶,并且不能后退,有多少中方法? 上台阶问题逻辑整理: 每次迈出都是 1~3 个台阶,剩下就是 7~9 个台阶 如果迈出1个台阶,需要求 ...

  9. aarch64架构移动设备挂载移动硬盘

    添加yum源 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo 安装ntfs yum inst ...

  10. Layman 使用ffmpeg-php扩展库实现视频截图(默认图)

    这几天做项目,其中一个需求是用户上传视频文件到服务器,然后服务器自动截取该视频的一帧作为该视频对应的缩略图,服务器端语言采用php编写,找了半天资料,发现ffmpeg-php可以满足该需求,所以下面简 ...