linux备份命令-xfsdump,xfsrestore,dump,restore

2018-05-30 06:27:54

XFS 文件系统备份 xfsdump
xfsdump 的功能颇强!他除了可以进行文件系统的完整备份之外,还可以进行累积备份。第一次备份一定是完整备份。以/boot为例,完整备份在 xfsdump 当中被定义为 level 0!等到第二次备份时,/boot 文件系统 内的数据已经与 level 0 不一样了,而 level 1 仅只是比较目前的文件系统与 level 0 之间的差 异后,备份有变化过的文件而已。至于 level 2 则是与 level 1 进行比较。至于 各个 level 的纪录档则放置于 /var/lib/xfsdump/inventory 中

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

[root@study ~]# xfsdump [-L S_label] [-M M_label] [-l #] [-f 备份文件] 待备份数据
[root@study ~]# xfsdump -I
选项与参数:
-L :xfsdump 会纪录每次备份的 session 标头,这里可以填写针对此文件系统的简易说明
-M :xfsdump 可以纪录储存媒体的标头,这里可以填写此媒体的简易说明
-l :是 L 的小写,就是指定等级~有 0~9 共 10 个等级喔! (默认为 0,即完整备份)
-f :有点类似 tar 啦!后面接产生的文件,亦可接例如 /dev/st0 设备文件名或其他一般文件文件名等
-I :从 /var/lib/xfsdump/inventory 列出目前备份的信息状态
[root@192 ~]# df -h /boot
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1      1014M  132M  883M  13% /boot
[root@192 ~]# xfsdump -l 0 -L boot_desc_1 -M boot_desc_1 -f /tmp/boot.dump /boot
[root@192 ~]# ll -h /tmp
total 99M
-rw-r--r--. 1 root root 99M May 29 18:21 boot.dump
[root@192 ~]# ll /var/lib/xfsdump/inventory/
total 16
-rw-r--r--. 1 root root 5080 May 29 18:21 4e3a7cb7-a870-4ad7-88e4-539303348215.StObj
-rw-r--r--. 1 root root  312 May 29 18:21 c7c2cf29-2f94-4bb6-a334-7604c0c7c291.InvIndex
-rw-r--r--. 1 root root  576 May 29 18:21 fstab

我们在/boot里新增文件然后进行累计备份。

[root@192 ~]# dd if=/dev/zero of=/boot/testing.img bs=1M count=10
10+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 0.0462668 s, 227 MB/s
[root@192 ~]# 
[root@192 ~]# 
[root@192 ~]# xfsdump -l 1 -L boot_desc_2 -M boot_desc_2 -f /tmp/boot.dump1 /boot

这时候就会多出来个session 1

[root@192 ~]# xfsdump -I
file system 0:
	fs id:		c7c2cf29-2f94-4bb6-a334-7604c0c7c291
	session 0:
		mount point:	192.168.1.202:/boot
		device:		192.168.1.202:/dev/sda1
		time:		Tue May 29 18:39:09 2018
		session label:	"boot_desc_1"
		session id:	4917ce05-9a54-435d-808c-29da509cea22
		level:		0
		resumed:	NO
		subtree:	NO
		streams:	1
		stream 0:
			pathname:	/tmp/boot.dump
			start:		ino 68 offset 0
			end:		ino 1069123 offset 0
			interrupted:	NO
			media files:	1
			media file 0:
				mfile index:	0
				mfile type:	data
				mfile size:	103191656
				mfile start:	ino 68 offset 0
				mfile end:	ino 1069123 offset 0
				media label:	"boot_desc_1"
				media id:	a90d4f6a-745c-4bc3-8cab-39207b200d08
	session 1:
		mount point:	192.168.1.202:/boot
		device:		192.168.1.202:/dev/sda1
		time:		Tue May 29 18:39:25 2018
		session label:	"boot_desc_2"
		session id:	78eeaba3-85a9-4ee9-9535-99e26f550f8d
		level:		1
		resumed:	NO
		subtree:	NO
		streams:	1
		stream 0:
			pathname:	/tmp/boot.dump1
			start:		ino 157886 offset 0
			end:		ino 157887 offset 0
			interrupted:	NO
			media files:	1
			media file 0:
				mfile index:	0
				mfile type:	data
				mfile size:	10510952
				mfile start:	ino 157886 offset 0
				mfile end:	ino 157887 offset 0
				media label:	"boot_desc_2"
				media id:	647f40e0-3f52-4d26-89dc-800f220fac51
xfsdump: Dump Status: SUCCESS

XFS 文件系统还原 xfsrestore

[root@study ~]# xfsrestore -I <==用来察看备份文件数据
[root@study ~]# xfsrestore [-f 备份文件] [-L S_label] [-s] 待复原目录 <==单一文件全系统复原
[root@study ~]# xfsrestore [-f 备份文件] -r 待复原目录 <==通过累积备份文件来复原系统
[root@study ~]# xfsrestore [-f 备份文件] -i 待复原目录 <==进入互动模式
选项与参数:
-I :跟 xfsdump 相同的输出!可查询备份数据,包括 Label 名称与备份时间等
-f :后面接的就是备份文件!企业界很有可能会接 /dev/st0 等磁带机!我们这里接文件名!
-L :就是 Session 的 Label name 喔!可用 -I 查询到的数据,在这个选项后输入!
-s :需要接某特定目录,亦即仅复原某一个文件或目录之意!
-r :如果是用文件来储存备份数据,那这个就不需要使用。如果是一个磁带内有多个文件,
需要这东西来达成累积复原
-i :进入互动模式,进阶管理员使用的!一般我们不太需要操作它!

直接覆盖复原(同名的文件会被覆盖,新的文件会被保留)

xfsrestore -f /tmp/boot.dump -L boot_desc_1 /boot

#当然也可以复原到其他目录
xfsrestore -f /tmp/boot.dump -L boot_desc_1 /tmp/boot

#复原特定的目录
xfsrestore -f /tmp/boot.dump -L boot_desc_1 /tmp/boot/ -s grub2

其实复原累积备份与复原单一文件系统相似!如果备份数据是由 level 0 -> level 1 -> level 2... 去进行的, 当然复原就得要相同的流程来复原!因此当我们复原了 level 0 之后,接下来 当然就要复原 level 1

xfsrestore -f /tmp/boot.dump1 /boot

交互模式,只复原grub,grub2

xfsrestore -f /tmp/boot.dump /tmp/boot -i
 ========================== subtree selection dialog ==========================

the following commands are available:
	pwd 
	ls [ <path> ]
	cd [ <path> ]
	add [ <path> ]
	delete [ <path> ]
	extract 
	quit 
	help 

 -> ls
          157885 initramfs-3.10.0-514.el7.x86_64kdump.img 
              75 initramfs-3.10.0-514.el7.x86_64.img 
              77 vmlinuz-0-rescue-025e785e72cb478bb42918d5b8ecdd9d 
              76 initramfs-0-rescue-025e785e72cb478bb42918d5b8ecdd9d.img 
              74 initrd-plymouth.img 
              73 vmlinuz-3.10.0-514.el7.x86_64 
              72 symvers-3.10.0-514.el7.x86_64.gz 
              71 config-3.10.0-514.el7.x86_64 
              70 System.map-3.10.0-514.el7.x86_64 
              69 .vmlinuz-3.10.0-514.el7.x86_64.hmac 
          524352 grub2/
              67 grub/

 -> add grub2
 -> add grub
 -> extract

 --------------------------------- end dialog ---------------------------------

xfsrestore: restoring non-directory files
xfsrestore: restore complete: 10 seconds elapsed
xfsrestore: Restore Summary:
xfsrestore:   stream 0 /tmp/boot.dump OK (success)
xfsrestore: Restore Status: SUCCESS


ext2/3/4文件系统备份 dump
这个指令跟上面的xfsdump很像,只是它是用来给ext家族做备份的,也可以备份单一目录。

[root@www ~]# dump [-Suvj] [-level] [-f 备份档] 待备份资料
[root@www ~]# dump -W
选顷不参数:
-S :仅列出后面癿待备份数据需要多少磁盘空间才能够备份完毕
-u :将这次 dump 癿时间记录到 /etc/dumpdates 档案中
-v :将 dump 癿档案过程显示出杢
-j :加入 bzip2 的支持!将数据迚行压缩,默认 bzip2 压缩等级为 2
-level:就是我们谈到癿等级,从 -0 ~ -9 共十个等级
-f :有点类似 tar 啦!后面接产生癿档案,亦可接例如 /dev/st0 装置文件名等
-W :列出在 /etc/fstab 里面具有 dump设置的 partition 是否有备份过


[root@192 freecls]# mount -l
...
/dev/sdb1 on /root/freecls type ext4 (rw,relatime,seclabel,data=ordered)
[root@192 freecls]# dump -0u -f /tmp/freecls.dump /root/freecls
  DUMP: Date of this level 0 dump: Tue May 29 19:22:24 2018
  DUMP: Dumping /dev/sdb1 (/root/freecls) to /tmp/freecls.dump
  DUMP: Label: none
  DUMP: Writing 10 Kilobyte records
  DUMP: mapping (Pass I) [regular files]
  DUMP: mapping (Pass II) [directories]
  DUMP: estimated 20616 blocks.
  DUMP: Volume 1 started with block 1 at: Tue May 29 19:22:24 2018
  DUMP: dumping (Pass III) [directories]
  DUMP: dumping (Pass IV) [regular files]
  DUMP: Closing /tmp/freecls.dump
  DUMP: Volume 1 completed at: Tue May 29 19:22:24 2018
  DUMP: Volume 1 20620 blocks (20.14MB)
  DUMP: 20620 blocks (20.14MB) on 1 volume(s)
  DUMP: finished in less than a second
  DUMP: Date of this level 0 dump: Tue May 29 19:22:24 2018
  DUMP: Date this dump completed:  Tue May 29 19:22:24 2018
  DUMP: Average transfer rate: 0 kB/s
  DUMP: DUMP IS DONE
[root@192 freecls]# cat /etc/dumpdates 
/dev/sdb1 0 Tue May 29 19:22:24 2018 -0400
dd if=/dev/zero of=/root/freecls/test1.img bs=1M count=10
dump -1u -f /tmp/freecls.dump1 /root/freecls

restore

[root@www ~]# restore -t [-f dumpfile] [-h] <==察看 dump档案
[root@www ~]# restore -C [-f dumpfile] [-D 挂载点] <==比较 dump 不实际

[root@www ~]# restore -i [-f dumpfile] <==互动模式
[root@www ~]# restore -r [-f dumpfile] <==还原整个文件系统
选顷不参数:
相关的各种模式,各种模式无法混用喔!
-t :此模式用在察看 dump 起杢癿备份文件中吨有什么重要数据!类似 tar -t
功能;
-C :此模式可以将 dump 内癿数据拿出杢跟实际癿文件系统做比较,
最终会列出『在 dump 档案内有记录癿,且目前文件系统丌一样』癿档案;
-i :迚入互劢模式,可以仅还原部分档案,用在 dump 目录时癿还原!
-r :将整个 filesystem 还原癿一种模式,用在还原针对文件系统癿 dump 备
份;
其他较常用到癿选顷功能:
-h :察看完整备份数据中癿 inode 不文件系统 label 等信息
-f :后面就接你要处理癿那个 dump 档案啰!
-D :不 -C 迚行搭配,可以查出后面接癿挂载点不 dump 内有丌同癿档案!
[root@192 freecls]# restore -t -f /tmp/freecls.dump
Dump   date: Tue May 29 19:22:24 2018
Dumped from: the epoch
Level 0 dump of /root/freecls on 192.168.1.202:/dev/sdb1
Label: none
         2	.
    131073	./dir1
    131075	./dir1/a.txt
        12	./test.txt
        11	./test.img
[root@192 freecls]# restore -t -f /tmp/freecls.dump1
Dump   date: Tue May 29 19:29:58 2018
Dumped from: Tue May 29 19:22:24 2018
Level 1 dump of /root/freecls on 192.168.1.202:/dev/sdb1
Label: none
         2	.
        13	./test1.img
cd /root/freecls
restore -r -f /tmp/freecls.dump

交互模式恢复

[root@192 freecls]# restore -f /tmp/freecls.dump -i
restore > help
Available commands are:
	ls [arg] - list directory
	cd arg - change directory
	pwd - print current directory
	add [arg] - add `arg' to list of files to be extracted
	delete [arg] - delete `arg' from list of files to be extracted
	extract - extract requested files
	setmodes - set modes of requested directories
	quit - immediately exit program
	what - list dump header information
	verbose - toggle verbose flag (useful with ``ls'')
	prompt - toggle the prompt display
	help or `?' - print this list
If no `arg' is supplied, the current directory is used
restore > ls
.:
dir1/     test.img  test.txt 

restore > add test.txt
restore > extract
You have not read any volumes yet.
Unless you know which volume your file(s) are on you should start
with the last volume and work towards the first.
Specify next volume # (none if no more volumes): 1
set owner/mode for '.'? [yn] n
restore > quit



备注:
1.本系列命令都在centos7里测试,其他发行版如ubuntu、debian、fedora、opensuse等可能略微不同
2.觉得本文有帮助的小伙伴可以关注笔者
3.原文地址http://www.freecls.com/a/2712/40    

©著作权归作者所有
收藏
推荐阅读
简介
天降大任于斯人也,必先苦其心志。