Chinaunix首页 | 论坛 | 博客
  • 博客访问: 272083
  • 博文数量: 87
  • 博客积分: 4061
  • 博客等级: 上校
  • 技术积分: 1032
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-12 16:28
文章分类

全部博文(87)

文章存档

2012年(1)

2009年(85)

2008年(1)

我的朋友

分类: LINUX

2009-03-04 15:07:05

在备份和还原系统时,Linux 基于文件的性质成了一个极大的优点。在 Windows 系统中,注册表与系统是非常相关的。配置和软件安装不仅仅是将文件放到系统上。因此,还原系统就需要有能够处理 Windows 这种特性的软件。在 Linux 中,情况就不一样了。配置文件是基于文本的,并且除了直接处理硬件时以外,它们在很大程度上是与系统无关的。硬件驱动程序的现代方法是,使它们以动态加载的模块的形式可用,这样内核就变得更加与系统无关。不同于让备份必须处理操作系统如何安装到系统和硬件上的复杂细节,Linux 备份处理的是文件的打包和解包。
    一般情况下,以下这些目录是需要备份的:
    • /etc
    包含所有核心配置文件。这其中包括网络配置、系统名称、防火墙规则、用户、组,以及其他全局系统项。
    • /var
    包含系统守护进程(服务)所使用的信息,包括 DNS 配置、DHCP 租期、邮件缓冲文件、HTTP 服务器文件、db2 实例配置,等等。
    • /home
    包含所有用户的默认用户主目录。这包括他们的个人设置、已下载的文件和用户不希望失去的其他信息。
    • /root
    是根(root)用户的主目录。
    • /opt
    是安装许多非系统文件的地方。IBM 软件就安装在这里。OpenOffice、JDK 和其他软件在默认情况下也安装在这里。
有些目录是应该考虑不 备份的。
    • /proc
    应该永远不要备份这个目录。它不是一个真实的文件系统,而是运行内核和环境的虚拟化视图。它包括诸如 /proc/kcore 这样的文件,这个文件是整个运行内存的虚拟视图。备份这些文件只是在浪费资源。
    • /dev
    包含硬件设备的文件表示。如果计划还原到一个空白的系统,那就可以备份 /dev。然而,如果计划还原到一个已安装的 Linux 系统,那么备份 /dev 是没有必要的。
    其他目录包含系统文件和已安装的包。在服务器环境中,这其中的许多信息都不是自定义的。大多数自定义都发生在 /etc 和/home 目录中。包括:
    在 UNIX 或 Linux 系统中,大部分系统配置文件位于 /etc 目录,但是您应该考虑对所有可能的文件(以及可能的位置)进行备份,具体包括:
    DNS 域信息 (/var/bind) ;
    NIS/NIS+ 文件和配置 (/var/yp)
    Apache 或其他 Web 服务器配置(/var/apache、/etc/apache 或 /usr/local/apache) ;
    邮件文件或文件夹(/var/mail 和 /usr/mail)
    Lightweight Directory Access Protocol (LDAP) 服务器数据(/var/ldap 或 /usr/local/ldap) ;
    安全证书 ;
    自定义内核驱动程序 ;
    内核配置或构建配置和参数 ;
    许可密钥和序列号 ;
    自定义脚本和应用程序 ;
    用户/root 登录脚本 ;
    邮件配置;特别是,如果您使用了像 Cyrus Internet Message Access Protocol (IMAP) 这样的解决方案,其中对用户邮件文件夹进行了特殊的记录和索引。
6、 Linux 常用备份恢复命令
    a)tar
    tar工具是以前备份文件的可靠方法,几乎可以工作于任何环境中,Linux老用户一般都信赖它。 Linux中以.tar结尾的文件都是用tar创建的。它的使用超出了单纯的备份,可用来把许多不同文件放到一起组成一个易于分开的文件。tar是从Tape ARchiver备份工具起步的。 tar是一个基于文件的命令,它本质上是连续地、首尾相连地堆放文件。使用tar可以打包整个目录树,这使得它特别适合用于备份。 归档文件可以全部还原,或从中展开单独的文件和目录。备份可以保存到基于文件的设备或磁带设备上。文件可以在还原时重定向, 以便将它们重新放到一个与最初保存它们的目录(或系统)不同的目录(或系统)。tar是与文件系统无关的,它可以使用在ext2、ext3、jfs、Reiser和其他文件系统上。
    tar命令格式
    备份:tar   
    恢复:tar   [-C 恢复路径]
    常用选项:
    -M:分卷处理
    -p:保留权限
    -T filename:指定备份文件列表
    -N DATE:备份指定日期之后修改的文件
    -z:用GNU的gzip压缩文件或解压。
    -Z:用compress压缩文件或解压。
    -j:用bzip2压缩文件或解压。
    tar 命令操作举例
    1. 跨越多张软盘备份系统/usr/local下的所有内容,同时进行写入校验
    # tar -cWMf /dev/fd0 /usr/local
    2. 备份/目录下自04/11/2006改过的文件到磁带设备/dev/st0中
    # tar -cvf /dev/st0 -N 04/11/2006
    3.保持文件权限备份/目录(不包括/proc)到磁带设备/dev/st0中
     # tar -cpf /dev/st0 / --exclude=/proc
    4. 恢复恢复备份到/
    # tar -xpf /dev/st0 -C /
    5.从备份文件恢复指定的文件etc/passwd
    # tar -xpf /dev/st0 etc/passwd
    6.做一个完全备份
    # tar -zcvf /backup/bp_full.tar.gz /
    7.每隔7天做增量备份
    # tar -c -T /tmp/filelist -f /backup/bp_add.tar.gz
  b)cpio命令
    GNU cpio工具像tar一样从命令提示行启动程序。与tar相比cpio更复杂,但是也更为可靠。因为如果一个tar文件中某处有一个坏块,就不能对备份文件的其它部分进行访问,而使用cpio,只有坏块不能被访问。 cpio创建一个称为copy-out mode的备份,备份存档中包含了文件和所有者、时间及访问许可等信息。cpio需要一个假定要备份的文件列表。创建列表的一个最方便的方法就是使用ls命令。
    cpio 命令操作举例
    1. 拷贝当前目录中所有文件到磁带设备 /dev/rmt0,输入:
    find . | /usr/sysv/bin/cpio -oc >/dev/rmt0
    2. 从 cpio 归档中只抽取一个常规文件中的文件列表,使用下列命令:
    cat ar | /usr/sysv/bin/cpio -i -E Efile
    3. 把/home目录备份到SCSI磁带设备中,输入下面的命令:
    $ls /home | cpio -o > /dev/st0
    你也可以对cpio的备份进行计划,用crontab工具设置成基于任何时间的有规律地运行。例如,要在每晚2点把/ home目录备份到SCSI磁带驱动器中,把下面的语句添加到root的crontab文件中即可:
00 02 * * * ls /home | cpio -o > /dev/st0
C)dump
    dump为备份工具程序,可将目录或整个文件系统备份至指定的设备,或备份成一个大文件。dump 可以执行类似 tar 的功能。然而,dump 倾向于考虑文件系统而不是个别的文件。下面是引自 dump 手册文件中的内容:“dump 检查 ext2 文件系统上的文件,并确定哪些文件需要备份。这些文件将出于安全保护而被复制到给定的磁盘、磁带或其他存储媒体上……大于输出媒体容量的转储将被划分到多个卷。在大多数媒体上,容量是通过一直写入直至返回一个 end-of-media 标记来确定的。”
    dump命令格式:
    dump [-cnu][-0123456789][-b ][-B ][-d ][-f ][-h ][-s ][-T ][目录或文件系统] 或 dump [-wW]
    主要选项:
 -0123456789  备份的层级。
 -b  指定区块的大小,单位为KB。
 -B  指定备份卷册的区块数目。
 -c  修改备份磁带预设的密度与容量。
 -d  设置磁带的密度。单位为BPI。
 -f  指定备份设备。
 -h  当备份层级等于或大雨指定的层级时,将不备份用户标示为"nodump"的文件。
 -n  当备份工作需要管理员介入时,向所有"operator"群组中的使用者发出通知。
 -s  备份磁带的长度,单位为英尺。
 -T  指定开始备份的时间与日期。
 -u  备份完毕后,在/etc/dumpdates中记录备份的文件系统,层级,日期与时间等。
 -w  与-W类似,但仅显示需要备份的文件。
 -W  显示需要备份的文件及其最后一次备份的层级,时间与日期。
    dump命令操作举例:
    1.执行一个完全 Linux 备份,它把所有 ext2 和 ext3 文件系统备份到一个 SCSI 磁带设备。
    dump 0f /dev/nst0 /boot
    dump 0f /dev/nst0 /
    说明:在这个例子中,系统中有两个文件系统。一个用于 /boot,另一个用于 / ,这是常见的配置。它们必须在执行备份时单独地引用。 /dev/nst0 引用第一个 SCSI 磁带驱动器,不过是以非重绕的模式引用。这样确保各个卷在磁带上一个接一个地排列。dump 的一个有趣特性是其内置的增量备份功能。在上面的例子中,0 表示 0 级或基本级备份。这是完全系统备份,您要定期执行以保存整个系统。对于后续的备份,您可以使用其他数字(1-9)来代替 0,以改变备份级别。1 级备份会保存自从执行 0 级备份以来更改过的所有文件。2 级备份会保存自从执行 1 级备份以来更改过的所有文件,以此类推。使用 tar 和脚本可以执行相同的功能,但要求脚本创建人员提供一种机制来确定上次备份是何时执行的。dump 具有它自己的机制,即它在执行备份时会输出一个更新文件(/etc/dumpupdates)。这个更新文件将在每次执行 0 级备份时被重设。后续级别的备份会保留它们的标记,直至执行另一次 0 级备份。如果您在执行基于磁带的备份,dump 会自动跟踪多个卷。
    2. 配合使用 find 命令复制整个目录
    $ find . |cpio -ov >archive.cpio
d) restore命令
    配合 dump 的程序是 restore,它用于从转储映像还原文件。restore 命令执行转储的逆向功能。可以首先还原文件系统的完全备份,而后续的增量备份可以在已还原的完全备份之上覆盖。可以从完全或部分备份中还原单独的文件或者目录树。
    Restore命令举例
    从磁带备份中提取 /etc 目录,可使用以下命令:
    restore -xf /dev/nst0 /etc
    e)dd命令

    dd 是一个文件系统复制实用工具,它产生文件系统的二进制副本。dd 还可用于产生硬盘驱动器的映像,类似于使用诸如 Symantec 的 Ghost 这样的产品。然而,dd 不是基于文件的,因此您只能使用它来将数据还原到完全相同的硬盘驱动器分区。
    dd命令举例
    1.把第一个硬盘的前 512 个字节存为一个文件:
    dd if=/dev/hda of=disk.mbr bs=512 count=1
    2为软盘建立镜像文件
    dd if=/dev/fd0 of=disk.img bs=1440k
    有趣的是,这个镜像文件能被 HD-Copy ,Winimage 等工具软件读出。
   f) cp命令
    命令cp是copy的缩写,用于复制文件;目录。标准的 cp 命令可用于复制整个目录树。该选项将对非标准的文件执行未知的操作。有些 UNIX 变种和 GNU cp 工具支持 -R 选项,使用该选项可以正确地复制命名管道、链接和其他的文件。
    命令举例
    1 将dir1下的所有目录包括子目录陆续地复制到dir2中。
    #cp -a dir1 dir2
    2.将一个目录中的内容复制到一个已有的目录中
    $ cp -r /home/mc/* /export/home/mc
总结:
    Linux 是一个稳定而可靠的环境。但是任何计算系统都有无法预料的事件,比如硬件故障。拥有关键配置信息的可靠备份是任何负责任的管理计划的组成部分。在 Linux 中可以通过各种各样的方法来执行备份。所涉及的技术从非常简单的脚本驱动的方法,到精心设计的商业化软件。备份可以保存到远程网络设备、磁带驱动器和其他可移动媒体上。备份可以是基于文件的或基于驱动器映像的。可用的选项很多,您可以混合搭配这些技术,为您的环境设计理想的备份计划。备份关键文件涉及到确定相关文件,并找到一种合适的方法存储和备份这些信息。文件可能存储在许多不同的位置,而您应该多加小心,以确保包含重要的、但经常被遗忘的内容,比如内核驱动程序、库和相关配置。
阅读(889) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~