本文是 Unix/Linux 系统管理自动化系列中的一篇,主要讲述如何实现自动化备份与同步系统数据。
前言
数据是 Unix/Linux 系统中最重要的组成部分 , 但是数据的备份与同步却是最容易被忽略的任务。通过定期的数据备份与同步,可以在磁盘出现故障时,最大程度的降低数据损失。当用户误操作导致数据损坏或者丢失时,可以快速恢复。
数据的备份不同于整个系统备份,将不同数据按照优先级分类,根据用户需求,备份重要文件。
从而使数据独立于操作系统,降低备份成本与时间。
不同的操作系统可能使用不同的数据备份方式,本文介绍了通用的 Unix/Linux 实用程序(tar 和 cpio),标准的 AIX 实用程序 (mksysb 和 backup),以及远程备份工具 rsync。
确定备份策略
在商业环境中,必须首先确定需要备份哪些文件以及备份所消耗的时间。如果备份过多的文件,会导致备份系统的成本过于庞大,从而带来不必要的开支。如果没有备份足够的数据,那么可能导致重要数据的丢失,反而带来更大的损失。
当然,备份整个系统是简单易行的,但是通常这样的备份是浪费的且缺乏意义的。从减少备份系统的成本出发,只有当某些数据足够重要,需要共享,才具有备份的必要。
基本数据一般分为以下几类:
- 用户数据:所有的用户数据以及用户目录,及私人文件等。
- 系统信息:系统用户,组,密码,主机列表等。
- 应用程序:系统上启动的服务,比如 web 应用程序,apache 等。
- 应用程序的配置文件与数据:针对不同的应用程序,不同的配置参数和重要数据文件。
- 数据库:事实上数据库可以单独提供针对数据库所有数据的备份与同步功能。
简单的数据备份是指一次性备份所有数据,然后再备份上次备份之后所做的修改。第一次备份是指“完全备份”,后一次备份是“增量备份”。通常适用于个人或者小型网站。对于机构或者大型网站来说,需要采用“多级备份”。将完全备份设定为 0 级,增量备份的级别分别是 1,2,3 等。在每个增量备份级别上,可备份同级或上一级的上次备份以来的变动。
比如,如果我们有 1 0 盘磁带,如果使用简单备份进行日备份,则可恢复两周内的数据。
如果使用多级备份,例如:
磁带 1-2, 月备份,每月第一个星期五
磁带 3-6, 周备份,每周星期五(排除第一周)
磁带 7-10,日备份,每周星期一到四,则可以将备份历史扩展到两个月。
实用程序和命令
tar 命令
tar 命令是通用性较强的 Unix/Linux 归档命令。tar 将一个或多个文件和目录打包为单个文件,并保持原始文件的大小、拥有者、权限、文件类型及其在文件系统层次结构中的位置。tar 是磁带存档程序 (tape archive) 的首字母缩写,是最易用的数据备份实用程序。
表 1. tar 命令的常用参数:
参数 | 含义 |
---|---|
-c | 该参数会创建一个新的存档 |
-v | 该参数会列出每个处理的文件名称 |
-f | 该参数会指定存档或设备名称 |
-z | 该参数将用 gzip 对存档进行压缩或解压 |
-x | 该参数将从存档文件中提取一个或多个文件 |
要创建 /CriticalData 的存档文件,使用:
# tar -czvf backup.tar.gz /CriticalData/ |
要恢复该目录,使用:
# tar -xzvf backup.tar.gz /CriticalData/ |
tar 在提取文件和较小的目录方面表现不错,如果要恢复文件系统和卷组,我们更倾向于选用 cpio, 或是使用专用性更强的 Linux/Unix 数据备份实用程序。
cpio 命令
cpio 与 tar 类似,是通用性较强的 Unix/Linux 归档命令。一般被用来备份和恢复文件及目录结构。
表 2. cpio 命令的常用参数:
参数 | 含义 |
---|---|
-o | 该参数会将数据拷贝到文件或设备中 |
-i | 该参数会将数据从文件或设备中还原到系统中 |
-v | 该参数会列出每个处理的文件名称 |
-z | 该参数会按需要建立目录 |
-x | 该参数会从标准输入读取文件路径名称,然后将这些文件复制到指定的目录 |
-d | 该参数会按需要建立目录 |
-p | 该参数会从标准输入读取文件路径名称,然后将这些文件复制到指定的目录 |
-B | 该参数会将 I/O block 增加到 5120bytes,默认是 512bytes。加快数据备份速度 |
-m | 该参数会保留时间属性 |
-u | 该参数自动将较新的文件替换到较旧的文件 |
将 /CriticalDate 目录和它的所有文件和子目录建立存档,使用:
# find /CriticalData/ -depth | cpio -ov > backup.cpio |
要恢复该目录,使用:
# cpio -ivdum <backup.cpio |
cpio 建立起来的归档文件包括文件头和文件数据两部分。文件头包含了对应文件的信息。如文件的 UID,GID,连接数以及文件大小等。其好处是可以保留硬连接,在恢复时默认情况下保留时间戳,无文件名称长度的限制。
mksysb 介绍
IBM AIX 与其它的 Unix 系统相比 , 有两个重要的特性: LVM (logical volume manager) 和 ODM (object database manager)。一般而言 , 用 cpio 或 tar 的指令亦可以备份 volume groups ,
但并不能完全正确的备份完整的系统。利用 mksysb 来备份时,可制作一个可开机的磁带 , 并且可以正常的还原系统的 LVM 和 ODM。
mksysb 备份一般用来在文件中或可启动磁带上创建 rootvg 的可安装镜像。如果需要对用户卷组进行备份的话,可使用 savevg。
mksysb 的格式包括:
- 基本操作系统启动镜像
- 基本操作系统安装镜像
- 虚拟目录 (TOC)
- rootvg 上的实际数据
图 1. mksysb 的格式
mkinsttape 镜像包括以下重要文件:
- Tapeblksz 该文件包含运行 mksysb 前设置的磁带驱动器的块大小。