完整备份
对整个 文件系统 做一次完整的备份。
完整备份常用的工具有 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