完整备份

对整个 文件系统 做一次完整的备份。

完整备份常用的工具有 dd,cpio,xfsdump,xfsrestore 等,这些工具都能够备份 设备文件特殊文件

增量备份

只有做过完全备份以后才能做增量备份。

增量备份,是在进行完第一次完整备份后,经过一段时间的运行,比较当前系统与备份文件之间的差异,仅备份有差异的文件。

xfsdump

xfsdump 可以备份 XFS 文件系统中的文件及其属性。文件可备份到 存储介质、普通文件、标准输出。可进行 全部备份、增量备份、选择备份

每次对 xfsdump 的调用都是 转储 一个文件系统,该调用称为 转储会话,dump session。转储会话会将文件系统分割成一个或多个转储流,dump streams,每目标一个。分割的顺序是依照文件系统的 inode 编号完成的,确定分割边界时,会均衡每个转储流的大小。不同转储流的分割点有可能是在某个非常大的文件中的中间,当然是在 extent 的边界。一个转储流可以跨越多个介质,一个介质可以包含多个转储流。介质对象会把转储流记录为一个或多个介质文件,介质文件 是一个独立的部分转储,旨在最大限度地减少介质丢失对整个转储流的影响,但会增加完成转储所需的时间。默认全部写到一个介质文件中,除非使用 -d 参数指定介质文件大小。其它的技术,如生成转储镜像的第二个副本,比 “分割成多个介质文件的方法” 能提供更好的保护。然而,Linux 中当前的实现 仅支持单一目标,运行单一线程。因此,所谓多转储流只是描述未来的 可能性

备份完成后,系统会把备份的文件系统、时间、Session ID 等信息保存在 /var/lib/xfsdump/inventory 中,以便下次备份时作为 参考依据。查看备份信息时,也需要读取该文件。

xfsdump 的限制
  • 只能备份 已挂载 的文件系统
  • 必须使用 root 的权限才能操作
  • 只能备份 XFS 文件系统
  • 备份的数据只能由 xfsrestore 解析
  • 不能备份相同 UUID 的文件系统
语法

xfsdump [-L S_label] [-M M_label] [-l #] [-f 目标文件] 原文件

-L 本次转储会话标签

-M 储存介质标签

-l 备份等级,0~9,默认为 0,即全部备份

-f 目标文件

-I 查看当前备份状态

-s 指定要备份的子目录

备份整个分区

先确认备份对象是独立的文件系统:

# df -h /boot

备份 /boot 分区:

# xfsdump -l 0 -L "boot_all" -M "boot_all" -f /srv/boot.dump /boot

查看当前 xfsdump 备份信息:

# xfsdump -I
1 级增量备份:
# xfsdump -l 1 -L "boot_2" -M "boot_2" -f /srv/boot.dump1 /boot

查看 xfsdump 记录是否更新:

# xfsdump -I
备份特定目录

只备份指定目录:

# sudo xfsdump -f /tmp/neo -v silent -J -s neo/a /home

备份目录时要使用 相对路径,此处被备份的目录为 /home/neo/a,在命令中要拆开,-s 后面跟的是相对路径。

xfsrestore

语法

xfsrestore [-f 备份文件] -i 目标目录

-I 查看备份数据

-f 备份文件

-L 进程标签

-s 恢复部分文件或目录

-r 磁带内有多个文件时,实现累积恢复

-i 进入互动模式

查看备份数据
# xfsrestore -I

返回的信息与 xfsdump -I 相同,都来自 /var/lib/xfsdump/inventory/

恢复完整备份,直接覆盖
# xfsrestore -f /srv/boot.dump -L boot_all /boot
恢复到指定目录
# xfsrestore -f /srv/boot.dump -L boot_all /tmp/boot
恢复部分文件:
# xfsrestore -f /srv/boot.dump -L boot_all -s grub2 /tmp/boot2
恢复增量备份

恢复备份时,应按照备份的顺序逐级进行。通过互动模式,允许先查看备份文件,再有选择地恢复。

# xfsrestore -f /srv/boot.dump -i /tmp/boot3

dd

dd 可以 直接读取扇区,然后将整个设备备份成一个文件,非常适合做文件系统备份。

无论是否识别磁盘内的文件系统,它都可以备份、还原。

语法

dd if="input_file" of="output_file" bs="block_size" count="number"

if 输入文件

of 输出文件

bs 块大小,默认 512 Bytes

count 块数量

备份文件
# dd if=/etc/passwd of=/tmp/passwd.back
抓取光盘镜像
# dd if=/dev/sr0 of=/tmp/system.iso
镜像刻录到 U 盘

把可引导镜像刻录到U盘,实现 U盘引导

# dd if=/tmp/system.iso of=/dev/sda
备份整个文件系统

dd 是 逐个扇区 读/写的,即使没用到的扇区也会被写入备份文件中,因此备份文件会 和分区一样大

# dd if=/dev/vda2 of=/tmp/vda2.img
对拷整个分区

把一个分区完整地复制到另一个分区。目标分区必须大于源分区。

目标分区无需格式化,因为 dd 可以把扇区的数据逐个复制过来,连同 superblock, boot sector, meta data 等。

# dd if=/dev/vda2 of=/dev/sda1

因为 dd 会把 UUID 也完全复制,必须先清除新分区 XFS 文件系统内的日志,为其重新分配 UUID,才能顺利挂载:

# xfs_repair -L /dev/sda1  # 清除所有 log
# uuidgen  				# 生成新的 UUID
896c38d1-bcb5-475f-83f1-172ab38c9a0c
# xfs_admin -U 896c38d1-bcb5-475f-83f1-172ab38c9a0c /dev/sda1  # 分配新 UUID

差异备份

差异备份进行之前,需要先进行一次完整备份,之后每次的备份都是与原始的完整备份的差异部分。

差异备份比增量备份占用的磁盘空间更大,但 差异备份还原速度更快,因为只需要还原完整备份与最近一次的差异备份即可。

xfsdump

xfsdump 进行差异备份,每次备份的等级都使用 level 1 即可

tar

用 tar 的 -N 参数来进行差异备份。

-N 后面指定日期或文件,则 只备份比该日期或文件新的数据

~]# tar -N '2015-09-01' -jpcv -f /backupdata/home.tar.bz2 /home

rsync

rsync -av 来源目录 目标目录

如果数据更新不大,第二次执行会比第一次快很多。

选择备份

仅备份文件系统中的 部分目录和文件

tar

可以用 tar 打包整个根目录,同时指定要排除的子目录:

# tar --exclude /proc --exclude /mnt --exclude /tmp \
> --exclude /backupdata -jcvp -f /backupdata/system.tar.bz2 /

cpio

Copy In and Out,归档工具。

cpio 最早是 UNIX 上的文件备份程序。最初用于 备份磁带

cpio 可以备份 任何文件,包括设备文件。可以从 cpio 或 tar 格式的归档包中存取文件,备份目标可以是归档文件、磁带或管道。

如果 cpio 在打包备份的时候用的是绝对路径,那么在恢复的时候会恢复到这些绝对路径下;如果在打包备份用的是相对路径,还原时也将恢复到相对路径下。

cpio 无法直接读取文件,它 需要每个文件或者目录的完整路径名 才能识别读取。因此,cpio 一般 结合 find 使用

语法

备份

cpio -ovcB > /path/archive.cpio

-o 备份到文件或设备

-B 将块大小设置为 5120 Bytes

还原

cpio -ivcdu < [file|device]

-i 从文件或设备还原

-d 还原时自动创建目录

-u 覆盖旧文件

查看

cpio -ivct < [file|device]

-t 查看备份文件内容

通用参数

-v 显示操作过程

-c 以 ASCII 字符格式读写头文件信息。

备份目录

find boot | cpio -ocvB > /tmp/boot.cpio

备份到磁带机

find / | cpio -ocvB > /dev/st0

从磁带机还原

cpio -idvc < /dev/st0

wodim

wodim 用于 刻录光盘

CentOS 7 之前使用 cdrecord 刻录光盘,CentOS 7 使用 wodim

语法

wodim [options] track1...trackn

--devices 扫瞄磁盘总线,找出可用的刻录机

-v 显示过程

dev= 设定刻录机的 SCSI 目标,通常用 Major/Minor 的数字方式来描述,也可以用文件名 /dev/sr0

blank=[fast&|all] 擦除可重复写入的 CD/DVD-RW,fast较快,all较完整

-format 对光盘进行格式化,仅针对 DVD+RW

[ 可选参数 ]

-data 以数据格式写入,而非 CD 音轨

speed=X 指定刻录速度

-eject 刻录完毕自动退出光盘

fs=Ym 指定缓冲内存大小,镜像文件先暂存至缓冲内存。默认为 4m,一般建议可增加到 8m,视刻录机而定。

driveropts=burnfree 针对 DVD 打开 Buffer Underrun Free 模式的写入功能

-sa 支持 DVD-RW 的格式

查询刻录机的总线地址

wodim --devices dev=/dev/sr0

擦除可重复写入的 DVD-RW

wodim -v dev=/dev/sr0 blank=fast

格式化 DVD+RW

wodim -v dev=/dev/sr0 -format

刻录

wodim -v dev=/dev/sr0 [可用选项功能] file.iso