备份基础概念 

备份介质:

    软盘:如果要把重要文件快速备份,或者将其带到家中,这时软盘仍旧是一种可选的备份介质。

   光盘写入器:随着光盘写入器变得越来越可靠,价格也越来越低,光盘本身也非常便宜。选用此项的一个好处是光盘不容易被损坏,它备份的可靠性很高。使用光盘写入器有两点不利因素:它们速度较慢,并且只能保存大约650MB

   可重写的光盘:可重写光盘驱动器比光盘写入器要贵得多,工作方式与其类似。但是,这些光盘是可被重写的,并且它比只能写一次的光盘贵许多。可重写光盘其它的特性都与光盘写入器类似。

JazZip:Zip驱动器很流行,已经成为许多PC机的标准配置,同时它的磁盘和驱动器也都不贵。它一张磁盘可容纳100MB的数据,是一种用于快速、可移动备份的很好选择。Jaz磁盘可以容纳上G字节的数据,并且使用更先进的技术以获得更好的表现。Jaz驱动器和Jaz磁盘都比较贵。JazZip的缺陷是都容易损坏,并且保持时间相对要短。

磁带机:磁带备份设备是大多数Linux服务器的标准配置。磁带是可靠的,并且很少出现错误,它几乎比其它介质存储时间都要长。对于点对点工作组网络和中型网络,Travan和高端数字音频磁带(DAT)通常是最好的选择。Travan驱动器经过压缩可以处理8GB数据,这对于具有5-10PC机的小型网络来说足够了。DAT驱动器有更好的表现,可以处理24GB的数据。DAT驱动器比Travan驱动器昂贵,但它磁带的价格要比Travan QIC磁带卷便宜。

高端磁带:选择高端磁带可能是相当贵的。与TravanDAT相比,这种驱动器有更大的容量和更高的速度。三种广泛使用的驱动器类型是:Sony Advanced Intelliget Tape ( AIT ) Quantum Digital Linear Ta p e( DLT )Exabyte Mammoth 8mm。它们最少可以容纳20GB的不压缩数据,并且具有更高的数据传输能力。

 

备份策略:

完全(Full)备份

  每隔一段时间对系统进行一次完全的备份,这样在备份时间间隔内,一旦系统发生故障使得数据丢失时,就可以用上一次的备份数据恢复到上一次备份时的情况。

增量(Incremental)备份

  首先进行一次完全备份,然后每隔一个较短时间进行一次备份,但仅备份在这个期间更改的内容。这样一旦发生数据丢失,首先恢复到前一个完全备份,然后按日期逐个恢复每天的备份,就能恢复到前一天的情况。这种备份方法比较经济。

差分(Differential)备份    (差异备份)

差分备份也称累计备份。这种备份方法与增量备份相似,首先每月进行一次完全备份,然后备份从上次进行完全备份后更改的全部数据文件。一旦发生数据丢失,使用一个完全备份和一个差分备份就可以恢复故障以前的状态。差分备份只需两次恢复,因此它的恢复工作相对简单。

 

系统必须备份的目录

/etc /var /srv /usr/local /root /opt /home

管理员应该针对所选定的要备份的数据实施备份策略、安排备份计划,例如:每月进行一次完全备份,每周进行一次差分备份,每天做一次增量备份。

 

当备份您的系统时,不要包括如下的文件系统或目录:

/proc /mnt /media /dev

 

备份工具

GNU 的传统备份工具

GNU tar — http://www.gnu.org/software/tar/

GNU cpio — http://www.gnu.org/software/cpio/

GNU cp and dd (coreutils package)  http://www.gnu.org/software/coreutils/

传统工具的改进、移植、整合

pax — ftp://ftp.suse.com/pub/people/kukuk/pax/

afio — http://freshmeat.net/projects/afio/

pdumpfs — http://0xcc.net/pdumpfs/index.html.en

glastree — http://igmus.org/code/

flexbackup — http://www.flexbackup.org/

特定文件系统的备份工具

dump/restore — http://dump.sourceforge.net/

xfsdump/xfsrestore — http://oss.sgi.com/projects/xfs/

基本的数据同步、镜像与快照工具

rsync –– http://rsync.samba.org/

unison — http://www.cis.upenn.edu/~bcpierce/unison/

mirrordir –– http://linux.maruhn.com/sec/mirrordir.html

rdiff-backup — http://www.nongnu.org/rdiff-backup/

rsnapshot — http://www.rsnapshot.org/

rsback — http://www.pollux.franken.de/hjb/rsback/

SafeKeep — http://safekeep.sourceforge.net/

rlbackup — http://www.math.ualberta.ca/imaging/rlbackup/

Dirvish — http://www.dirvish.org/

具有分区镜像功能的工具

mkCDrec — http://mkcdrec.ota.be/

mondo — http://www.mondorescue.org/

clonezilla — http://clonezilla.sourceforge.net/

Partition Image for Linux — http://partp_w_picpath.sourceforge.net/

SystemImager — http://wiki.systemp_w_picpathr.org/index.php/Main_Page

跨平台备份工具

         Amanda — http://www.amanda.org/

         BackupPC — http://backuppc.sourceforge.net/

         bacula — http://www.bacula.org/

         Synbak — http://www.initzero.it/products/opensource/synbak/

商业备份产品

         BRU — http://www.bru.com/

         Arkeia Network Backup — http://www.arkeia.com/

tar rsync 两个基本工具,有许多备份工具都是基于他们的。

建立备份日志

机器名称、IP地址、存放位置

备份时间

备份介质及其编号

备份的文件系统

备份的目录或文件

 

Tar备份

tar <operation> [options] <files_to_backup_or_restore>

其中:

 operation:用于指定 tar 要进行的操作

 options:用于指定一系列的选项

 files_to_backup_or_restore:用于给出要备份或要恢复的文件或目录名,在指定目录时也包括了这个目录下的子目录。


通常将备份文件存储在单独的分区中,可以是系统本地硬盘中的一个分区,也可以是另外挂装的移动设备中的一个分区。因此,在备份之前,应该创建挂装点目录,并挂装文件系统。

# mkdir /backups

# mount -t ext3 /dev/sdc1 /backups

# mkdir /backups/logs /backups/last-full

指定要备份的文件或目录

1、使用如下的命令备份指定的一个或多个目录到 /backups 目录中的一个归档文件

# tar -zcvpf /backups/full-backup.tar.gz /home

# tar -zcvpf /backups/full-backup.tar.gz /home /etc

 

2、使用命令替换生成要备份的目录

下面的命令备份整个 / 系统,除了 mntmediadevprocbackups 目录和 lost+found 目录。

# tar -zcvpf /backups/full-backup.tar.gz -C / \

> $(ls /| egrep -v "backups|mnt|media|dev|lost+found|proc")

4、将要备份的文件或目录名放入文本文件

# cat whatsbackup.txt

/home

/etc

/usr/local

/root

# tar -zcvpf /backups/full-backup.tar.gz -T whatsbackup.txt

1. -T 参数后指定的文件中,不能使用文件通配符

2. 可以使用 ls find 命令生成 whatsbackup.txt 文件

为归档文件名添加时间

在归档文件名中使用带有命令替换的 date 命令

只添加日期

# tar -zcvpf /backups/full-backup_$(date +%F).tar.gz /home

# ls -l /backups

-rw-r--r-- 1 root root 125855 01-29 19:09 full-backup_2008-01-29.tar.gz

2、添加日期、小时和分钟

# tar -zcvpf /backups/full-backup_$(date +%Y%m%d-%H%M).tar.gz /home

# ls -l /backups

-rw-r--r-- 1 root root 125855 01-29 20:17 full-backup_20080129-2017.tar.gz

保留备份日志

使用输出重定向将 tar 命令的输出结果存入文件。

# tar -zcvpf /backups/full-backup_$(date +%F).tar.gz /home \

> > /backups/logs/full-backup_$(date +%F).log \

> 2> /backups/logs/full-backup_$(date +%F).err

# tar -zcvpf /backups/full-backup_$(date +%Y%m%d-%H%M).tar.gz /home \

> > /backups/logs/full-backup_$(date +%Y%m%d-%H%M).log \

> 2> /backups/logs/full-backup_$(date +%Y%m%d-%H%M).err

增量备份

1、使用带 N 选项的 tar 命令实现增量备份

下面的命令将备份 /home 目录自 2008-01-29 以来修改过的文件

# tar -N 2008-01-29 -zcvpf /backups/inc-backup_$(date +%F).tar.gz /home

下面的命令将备份 /home 目录昨天以来修改过的文件

# tar -N $(date -d yesterday "+%F") \

> -zcvpf /backups/inc-backup_$(date +%F).tar.gz /home

以下两种书写方式均可,但含义有所不同:

? -N yesterday : 比昨天的当前时间新的文件,例如:若当先时间为 2:31,则表示自昨天 231 以来的新文件

? -N $(date -d yesterday ”+%F”) : 自昨天 000 以来的新文件

下面的命令使用命令替换从文本文件中获得日期

# tar -N $(cat /backups/last-full/full-backup-date) \

> -zcvpf /backups/inc-backup_$(date +%F).tar.gz /home

/backups/last-full/full-backup-date 是在创建完全备份的同时使用如下命令创建的文件:

date +%F > /backups/last-full/full-backup-date

2、使用 find 命令获取增量备份的文件列表

使用如下命令找出 n 天(如:7天)内修改过的文件,生成备份内容的文件列表

# find /home /etc /root -mtime -7 -print > /backups/logs/inc-backup_$(date +%F).log

对指定文件列表中的文件实现增量备份

# tar -zcvpf /backups/inc-backup_$(date +%F).tar.gz \

> -T /backups/logs/inc-backup_$(date +%F).log

使用磁带备份

与向硬盘文件备份有所不同:

? -f 参数后要跟磁带机的设备名,如:/dev/sd0/dev/nsd0

? 由于设备名是固定的,不能像硬盘文件那样在文件名中添加备份时间。此时可以使用 ––label 选项将

有关的备份信息写入归档本身。

? 反对将压缩资料写入磁带,因为如果磁带上资料有一部份损坏,会失去整个备份。

下面是两个使用磁带备份的例子:

# tar -cvpf /dev/st0 --label="Full-backup created on $(date +%Y%m%d-%H%M)." \

> -C / --exclude=var/spool/ etc home usr/local var/spool

# tar -cvpf /dev/st0 --label="Incremental-backup created on $(date +%F)." \

> -N $(date -d yesterday "+%F") /etc /home

除了使用 /dev/st0 之外,还可以使用 /dev/nst0,他们的区别在于:

? /dev/st0 –– 磁带在备份完毕会自动回带

? /dev/nst0 –– 磁带在备份完毕不会自动回带,有可能将好几组备份写到同一磁带

对于不能自动回带的设备,可以使用如下的命令进行手工回带并退出磁带:

# mt -f /dev/nst0 rewind

# mt -f /dev/nst0 offline

使用 tar 恢复文件

当建立一个归档时, tar 会将文件路径前面的 / (斜线) 去掉。因此,默认恢复文件时将文件释放到当前目录下。 若要将文件释放到指定的目录下,可以使用 -C 选项指定。

1. 建议在释放文件之前先使用 -t 选项替换 -x 选项,进行检查。

2. 一个更安全的方法是在不同的目录释放文件 (例如您的 home 目录),然后比对确认后,再将释放的文件移动到原始位置。

恢复全部文件

# 从磁盘文件恢复全部文件

# tar -zxvpf /backups/full-backup_2008-01-29.tar.gz -C /

# 从磁带中恢复全部文件

# tar -xvpf /dev/st0 -C /

恢复指定文件

# 从磁盘文件恢复指定的文件

# tar -zxvpf /backups/full-backup_2008-01-29.tar.gz -C / \

> etc/passwd etc/shadow

# 从磁带中恢复指定的文件

# tar -xvpf /dev/st0 -C / etc/passwd etc/shadow

 

linux dump

命令详解
功能说明:备份文件系统。
语  法:dump [-cnu][-0123456789][-b <区块大小>][-B <区块数目>][-d <密度>][-f <设备名称>][-h <层级>][-s <磁带长度>][-T <日期>][目录或文件系统] dump [-wW]
补充说明:dump为备份工具程序,可将目录或整个文件系统备份至指定的设备,或备份成一个大文件。
参  数:
-0123456789
 备份的层级。
-b<
区块大小>  指定区块的大小,单位为KB
-B<
区块数目>  指定备份卷册的区块数目。
-c
 修改备份磁带预设的密度与容量。
-d<
密度>  设置磁带的密度。单位为BPI
-f<
设备名称>  指定备份设备。
-h<
层级>  当备份层级等于或大雨指定的层级时,将不备份用户标示为"nodump"的文件。
-n
 当备份工作需要管理员介入时,向所有"operator"群组中的使用者发出通知。
-s<
磁带长度>  备份磁带的长度,单位为英尺。
-T<
日期>  指定开始备份的时间与日期。
-u
 备份完毕后,在/etc/dumpdates中记录备份的文件系统,层级,日期与时间等。
-w
 与-W类似,但仅显示需要备份的文件。
-W
 显示需要备份的文件及其最后一次备份的层级,时间与日期。

1.dump/restore
只用来备份和还原ext2/ext3系统,其他文件系统不能使用。

2.dump -0u -f 存放的备份文件路径 备份的文件
-u
参数详解  它的主要作用是把备份的记录写入/etc/dumpdates文件中,另外只用备份分区时才可以使用,在分区下的子目录或者文件时不能使用的。
例如:
我们的Linux系统中分为/ /root /home 3个分区,那么我们备份/root分区
dump -0u -f /mnt/dumptest /root
同时把备份记录写入了/etc/dumpdates中。我们可以使用cat /etc/dumpdates查看记录。
另外我们备份/home下的子目录,假如我们在/home下有个mk目录,那么我们怎么来备份它呢
dump -0 -f /mnt/dumptest /home/mk
但是它并不写入/etc/dumpdates中,所以我们查看不到。


还原restore

restore -rf 文件就行了
restore -tf
查看备份的文件内容

注意,如果我们需要把备份的文件还原到指定的文件中,那么我们需要进入到指定的文件中,然后使用restore命令就行了

 

Linux 命令dump的压缩参数z用得好,能使打包文件小很多. 经试验, 最佳的压缩参数应为: -z4  –z5   -z8

压缩级别 用时    原文件大小     压缩后的文件大小
-z2        5:13    1941.56MB       970MB
-z4        7:55    1941.56MB       357MB
-z5        7:56    1941.56MB       353MB
-z8        9:57    1941.56MB       351MB

dump -0uf /root/2 /home/            (缺省:-z2)

dump -z4 -0uf /root/4 /home/

dump –z5 -0uf /root/4 /home/

dump –z8 -0uf /root/4 /home/