Linux 配置管理 虚拟机 数据结构 脚本
系统备份是系统管理工作中十分重要的一个环切,本文详细介绍了各种Linux系统的备份方法,相信对大家的日常管理工作有所帮助。
备份是一项重要的工作,但是很多人没有去做。一旦由于使用不当造成数据丢失,备份就成了真正的救命者。本文将讨论设置备份的策略和如何选择备份介质,并介绍用于备份的tar和cpio工具。
设置备份策略
设置备份策略和计划可以增加进行备份的可能性。备份开始前,要确定备份哪些数据、备份的频率和使用什么样的介质进行备份。备份的时候,应该进行完全备份。
备份通常安排在空闲时间进行。在大多数系统中,由于此时用户数量最少,所以打开的文件也最少。由于备份要占用一些系统资源,运行备份时用户会发现系统反应迟钝。
如果Linux计算机只有一个使用者,可以一个星期或一个月对整个系统备份一次。如果有关键性的文件,就应该有计划地把这些文件拷贝到一个可移动的磁盘中。
备份之前,首先要确保正确地设置备份设备。大多数磁带备份系统在安装时可以发现是否正确。系统启动后,打开一个终端窗口并且输入下面的命令:
$dmeg | less
滚动列表,并从中寻找你的磁带系统的驱动。如果没有发现,就需要加载一个组件驱动程序。
如果运行Linux服务器,就要制定一个备份计划,但这并不意味着每天要对所有的东西都备份。系统中只有一部分东西需要每天备份,下面先介绍下目录结构及备份策略:
目录结构:
/etc
包含所有核心配置文件。这其中包括网络配置、系统名称、防火墙规则、用户、组,以及其他全局系统项。
/var
包含系统守护进程(服务)所使用的信息,包括 DNS 配置、DHCP 租期、邮件缓冲文件、HTTP 服务器文件、db2 实例配置,等等。
/home
包含所有用户的默认用户主目录。这包括他们的个人设置、已下载的文件和用户不希望失去的其他信息。
/root
是根(root)用户的主目录。
/opt
是安装许多非系统文件的地方。IBM 软件就安装在这里。OpenOffice、JDK 和其他软件在默认情况下也安装在这里。
有些目录是应该考虑不 备份的。
1. /proc
应该永远不要备份这个目录。它不是一个真实的文件系统,而是运行内核和环境的虚拟化视图。它包括诸如 /proc/kcore 这样的文件,这个文件是整个运行内存的虚拟视图。备份这些文件只是在浪费资源。
2. /dev
包含硬件设备的文件表示。如果计划还原到一个空白的系统,那就可以备份 /dev。然而,如果计划还原到一个已安装的 Linux 系统,那么备份 /dev 是没有必要的。
备份策略:
用户文件:每天都要对/home目录中的用户文件进行备份。
配置文件:/etc和/var目录中的配置文件不需要频繁备份,每个星期或每月备份一次即可,主要取决于配置更改的频繁程度。
程序文件:/usr和/opt目录中的程序文件很少发生变化,安装后做一次备份即可。通常情况下,程序文件可方便地从原始安装盘中恢复。
选择备份介质
把备份存到哪里有多种选择。下面介绍一些可选择的备份介质:
软盘:如果要把重要文件快速备份,或者将其带到家中,这时软盘仍旧是一种可选的备份介质。
光盘写入器:随着光盘写入器变得越来越可靠,价格也越来越低,光盘本身也非常便宜。选用此项的一个好处是光盘不容易被损坏,它备份的可靠性很高。使用光盘写入器有两点不利因素:它们速度较慢,并且只能保存大约650MB。
可重写的光盘:可重写光盘驱动器比光盘写入器要贵得多,工作方式与其类似。但是,这些光盘是可被重写的,并且它比只能写一次的光盘贵许多。可重写光盘其它的特性都与光盘写入器类似。
Jaz 和Zip:Zip驱动器很流行,已经成为许多PC机的标准配置,同时它的磁盘和驱动器也都不贵。它一张磁盘可容纳100MB的数据,是一种用于快速、可移动备份的很好选择。Jaz磁盘可以容纳上G字节的数据,并且使用更先进的技术以获得更好的表现。Jaz驱动器和Jaz磁盘都比较贵。Jaz和Zip的缺陷是都容易损坏,并且保持时间相对要短。
磁带机:磁带备份设备是大多数Linux服务器的标准配置。磁带是可靠的,并且很少出现错误,它几乎比其它介质存储时间都要长。对于点对点工作组网络和中型网络,Travan和高端数字音频磁带(DAT)通常是最好的选择。Travan驱动器经过压缩可以处理8GB数据,这对于具有5-10个PC机的小型网络来说足够了。DAT驱动器有更好的表现,可以处理24GB的数据。DAT驱动器比 Travan驱动器昂贵,但它磁带的价格要比Travan QIC磁带卷便宜。
高端磁带:选择高端磁带可能是相当贵的。与Travan 或DAT相比,这种驱动器有更大的容量和更高的速度。三种广泛使用的驱动器类型是:Sony Advanced Intelliget Tape ( AIT ) 、Quantum Digital Linear Ta p e ( DLT )和Exabyte Mammoth 8mm。它们最少可以容纳20GB的不压缩数据,并且具有更高的数据传输能力。
用于备份的Tar
备份工具Tar是以前备份文件的可靠方法,几乎可以工作于任何环境中,Linux老用户一般都信赖它。 Linux中以.tar结尾的文件都是用tar创建的。它的使用超出了单纯的备份,可用来把许多不同文件放到一起组成一个易于分开的文件。tar是从 Tape ARchiver备份工具起步的。包含在Linux中的GNU tar工具简便易用,包含了一个用来压缩的选项,且支持不断增加的备份。tar是一个命令行的工具,没有图形界面。使用Konsole或Kvt打开一个终端窗口,接下来是一个简单的备份命令:
$tar cvf - /home > /temp/backup.tar
这个命令在/tmp目录中创建一个backup.tar的文件,/home目录中所有内容都包含在其中。接下来可以把tar文件拷贝到备份磁盘中。使用简单备份时,如果要使用压缩功能,改为下面命令:
$tar czvf - /home > /tmp/backup.tgz
上面扩展名. tgz指出这是一个压缩文件。下一个例子可以用来直接备份到一个安装好的Jaz驱动器中,但这样做要确定有足够的空间:
$tar czvf /mnt/jaz/backup.tgz - /home
对于一个磁带驱动器,使用设备名称:
$tar czvf /dev/st0/backup.tgz - /home
如果有一个备份非常大,可以使用多卷选项。但是,这样做就不能使用压缩。当第一个磁盘或磁带填满后,tar将提示插入另一张:
$tar cvMf /dev/st0/5mar2000.tar -home
要恢复备份使用下面的命令,以Jaz磁盘为例:
$tar xzvf /mnt/jaz/5mar2000.tgz /home
表1列出了tar主要功能参数。此外还有很多可选参数,本文不再详述。
表1
备份工具tar可以用crontab工具设置成基于时间的有规律地运行。例如,每晚2点把/home目录备份到SCSI磁带驱动器中,只要将下面语句添加到root的crontab中即可:
00 02 * * * tar cvf /dev/st0/homefiles.tar - /home
要使用 tar 来把除 /proc 目录之外的整个文件系统备份到 SCSI 磁带设备:
$tar -cpf /dev/st0 / --exclude=/proc
在上面的例子中,-c 开关表示归档文件正在被创建。-p 开关表示我们希望保留文件许可权限,这对良好的备份来说是很关键的。-f 开关指向该归档文件的文件名。在本例中,我们使用的是原始磁带设备 /dev/st0。/ 表示我们想要备份的内容。既然我们想要备份整个系统,因此把这个开关指定为根(root)。当把 tar 指向一个目录(以 / 结尾)时,它会自动递归。最后,我们排除了 /proc 目录,因为它没有包含需要保存的任何内容。如果单盒磁带容纳不下这个备份,我们需要添加 -M 开关(本例中没有显示)以进行多卷备份。
要还原一个或多个文件,可以使用带提取开关(-x)的 tar 命令:
$tar -xpf /dev/st0 -C /
-C / 表明我们想要让还原从 / 开始.-C 开关使我们的当前目录不再相关。
您可能会经常使用的另外两个 tar 命令是 -t 和 -d 开关。-t 开关列出某个归档文件的内容。-d 开关将归档文件的内容与系统上的当前文件作比较。
为便于操作和编辑,您可以将想要归档的文件和目录放进一个文本文件中,然后在命令行通过 -T 开关引用这个文本文件。这些文件和目录可以与命令行上列出的其他目录结合起来。下面的命令行备份 MyFiles 中列出的所有文件和目录、/ 根目录和 /tmp 目录中的所有 iso 文件。
$tar -cpf /dev/st0 -T MyFiles /root /tmp/*.iso
文件列表只是一个文本文件,其中列出文件或目录。下面是一个例子:
/etc
/var
/home
/usr/local
/opt
请注意 tar -T(或 files-from)命令不能接受通配符。文件必须明确地列出。上面的例子展示了一种单独地引用文件的方法。您还可以执行脚本来搜索系统,然后建立一个列表。下面就是这样一个脚本的例子:
#!/bin/sh
cat MyFiles > TempList
find /usr/share -iname *.png >> TempList
find /tmp -iname *.iso >> TempList
tar -cpzMf /dev/st0 -T TempList
上面的脚本首先将 MyFiles 中的所有现有文件列表复制到 TempList。然后它执行两个 find 命令来搜索文件系统中匹配某个模式的文件,并将它们附加到 TempList。第一次是搜索 /usr/share 目录树中以 .png 结尾的所有文件。第二次是搜索 /tmp 目录树中以 .iso 结尾的所有文件。在建立好列表之后,tar 然后在文件设备 /dev/st0 (第一个 SCSI 磁带设备)上创建 一个新的归档文件,该文件使用 gzip 格式来压缩,并保留所有文件权限。该归档文件将跨越多个卷。要归档的文件的名称将从 TempList 文件中提取。
用于备份的Cpio
GNU cpio工具像tar一样从命令提示行启动程序。与tar相比cpio更复杂,但是也更为可靠。因为如果一个tar文件中某处有一个坏块,就不能对备份文件的其它部分进行访问,而使用cpio,只有坏块不能被访问。cpio创建一个称为copy-out mode的备份,备份存档中包含了文件和所有者、时间及访问许可等信息。cpio需要一个假定要备份的文件列表。创建列表的一个最方便的方法就是使用ls 命令。例如,要把/home目录备份到SCSI磁带设备中,输入下面的命令:
$ls /home | cpio -o > /dev/st0
也可以使用find命令。它包括许多选项可以用来消减被存档文件的数量。例如,下面的命令对所有在上一个2 4小时内修改过的文件进行存档:
$find /home -mtime 1 -type f -print | cpio -o > /dev/st0
copy - in模式把文件从备份存档中解出来。下面的命令会恢复前两个备份例子中的所有文件:
$cpio -i < /dev/st0
你也可以对cpio的备份进行计划,用crontab工具设置成基于任何时间的有规律地运行。例如,要在每晚2点把/ home目录备份到SCSI磁带驱动器中,把下面的语句添加到root的crontab文件中即可:
00 02 * * * ls /home | cpio -o > /dev/st0