Chinaunix首页 | 论坛 | 博客
  • 博客访问: 575599
  • 博文数量: 89
  • 博客积分: 2383
  • 博客等级: 大尉
  • 技术积分: 970
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-09 23:02
个人简介

Scientific Linux是重新编译的Red Hat Enterprise Linux,由费米国家加速器实验室、欧洲核研究组织以及世界各地的大学和实验室共同开发。它旨在与Red Hat Enterprise Linux完全兼容,也强调自主方便的定制,用户可以根据自己的需求做相应修改,可以使用脚本或者Anaconda给自己定制最小化的安装模式。

文章分类

全部博文(89)

文章存档

2017年(1)

2016年(2)

2013年(2)

2012年(2)

2011年(16)

2010年(13)

2009年(46)

2008年(7)

我的朋友

分类: BSD

2011-02-22 12:56:17

\r\n\r\n
使用dump备份并用restore还原数据:
hpserver# cd /mnt
hpserver# dump -f- /var | restore -f- -r
 
使用tar备份并还原数据:
hpserver# tar cf - * | (cd /mnt; tar xf -)
 
tar配合ssh实现远程备份:
# tar cf - . | ssh dd of=tape-device obs=20b
# tar cf - * | ssh 219.X.X.X cd /home/data/domains/;tar xf -

 
dump 和 restore 是 UNIX® 传统的备份程序。 它以 block 而不是以文件为单位来备份数据、链接或目录。 dump 备份的是设备上的整个文件系统,不能只备份一个文件系统的部分或是用到两个以上文件系统的目录树。 与其他备份软件不同的是, dump 不会写文件和目录到磁带机, 而是写入包含文件和目录的原始数据块。 当需要恢复数据的时候,restore 默认在 /tmp/ 下保存临时数据 ── 如果你正在操作的恢复盘只有比较小的 /tmp 的话, 你可能需要把环境变量 TMPDIR 设置到一个有更多空间的目录, 使得此过程更容易成功。
 
 
使用dump命令时,它会建立一份自上次备份操作以来进行修改过的文件列表,然后把这些文件打包成一个单独的文件。在做备份时,需要指定一个备份级别,它是0-9之间的一个整数。级别为N的转储会对从上次进行的级别小于N的转储操作以来修改过的所有文件进行备份,而级别0就是完全备份。通过这种方式,可以很轻松的实现增量备份,差异备份,甚至每日备份。例如,第一次备份时可选择级别0(具体操作看后面),以后每天做增量备份时就可以每天依次使用级别1,级别2,级别3等等… …;当需要每天做差异备份时,可先选择级别0做完整备份,然后每天都使用同一大于0的级别就行了,比如说第二天用5,第三天也用5,第四天也一样。
使用dump的优点:
1,备份可以跨多卷磁带
2,能备份任何类型的文件,甚至是设备
3,备份时,文件的权限,宿主,宿组,修改时间等都会被保存
4,能够正确处理从未包含任何数据的文件块(孔洞文件)
5,能够做增量,差异备份
它也有不足:
1,每个文件系统必须单独转储备份
2,只有本地计算机的文件系统才能够转储备份(rdumprrestore可用来弥补此项不足)
当然,使用tar也可以用来实现备份和还原,但tar只能在LinuxUnix环境下使用,对于跨平台的环境,dump使用起来个人感觉更方便一些。
如果有条件,dump也可以将备份存储在磁带上。Linux通常用/dev/st0代表倒带设备,而用/dev/nst0代表非倒带设备,使用倒带设备存储时,当磁带用完它会自动倒带并接着存储,所以会覆盖以前的数据,这样就存在以前数据丢失的风险。这个地方咱们就不详细讨论了。
 
格式:dump [-level#] [-acmMnqSuv] [-A file] [-B records] [-b blocksize]
             [-d density] [-D file] [-e inode#,inode#,...] [-E file]
             [-f file] [-h level] [-I nr errors] [-j zlevel] [-Q file]
             [-s feet] [-T date] [-y] [-z zlevel] filesystem
常用参数    Level:备份级别0-9
            -B:指定用来备份的磁带的长度,以KB为单位(有些磁带不支持以结束标志判断时,就需要使用到此参数
            -b:指定块大小,默认为10
            -d:指定密度,默认为1600BPI
            -D:设定存储数据库的名称和路径,默认是/etc/dumpdates文件
            -e-E:与备份文件的inodes数有关的参数)
             -f:指定备份文件的路径和名称
             -u:更新数据库文件/etc/dumpdates 
             -s:统计备份所需的空间,一般在备份前做,以防磁带或磁盘空间不足
 
dump  –0s /dev/sda1
           完整备份/dev/sda1前统计一下需多大容量
 
dump -0u –f /tmp/boot.dump /boot
          以完全备份的方式备份/boot分区到文件/tmp/boot.dump,并且更新/etc/dumpdates数据库文件。“0”代表的就是备份级别为完全备份。“u”更新数据库,会将文件的日期,存储级别,文件系统等信息都记录下来。如果从来都不使用-u参数,那么所有的存储都会变为级别0。因为,系统不会有先前备份过当前文件系统的记录。
      当以后更改了/boot,比如说内核升级后,如果再想备份,可以按下列方式:
      dump -1u –f /tmp/boot1.dump /boot
      这样就只会备份完全备份后有变化的文件(级别1大于0)。
      如果以后想做增量备份,就依次用级别234… …
      如果想做差异备份,以后就一直用级别1.关于增量备份和差异备份的区别看看下图吧,不详细讲了:
1,  查看备份文档中的文件:
 
restore -tf /tmp/boot.dump
         -t参数是查看的意思,-f是指定要查看的备份文件。通过以上命令,就可以查看备份文件中备份了哪些文件。
1,
              还原备份的时候有两种方式可以选择,一种是完全还原,一种是有选择的部分还原。
从备份还原:
     cd /boot
     restore -rf /tmp/boot.dump
     -r参数表示重建.
 
 
        如果只是一部分数据丢失了,那么可以使用参数-i通过交互方式来实现文件的选择性还原:
        restore -if /tmp/boot.dump   
       使用参数-i交互式,然后出来restore>命令行,可以ls,可以add filename来来选择要增加的文件,然后执行extract,quit退出即完成。
 
也可以通过使用 ssh 用一个更安全的方式来使用 dumprestore
 
使用 dump 执行备份
使用 dump 执行备份是相当简单的。下面的命令执行一个完全 Linux 备份,它把所有 ext2 和 ext3 文件系统备份到一个 SCSI 磁带设备。
dump 0f /dev/nst0 /boot
dump 0f /dev/nst0 /
在这个例子中,系统中有两个文件系统。一个用于 /boot,另一个用于 / ,这是常见的配置。它们必须在执行备份时单独地引用。 /dev/nst0 引用第一个 SCSI 磁带驱动器,不过是以非重绕的模式引用。这样确保各个卷在磁带上一个接一个地排列。
下面是使用上面执行的转储来执行完全重建的例子。


restore -rf /dev/nst0

上面这个命令需要针对要还原的每个文件系统分别执行。

提取 (-x)
如果需要使用单独的文件而不是使用整个文件系统,您必须使用 -x 开关来提取它们。例如,要仅从我们的磁带备份中提取 /etc 目录,可使用以下命令:


restore -xf /dev/nst0 /etc
更新备份:
在0级别备份的基础上,向/home/pyegrp写入一些新的文件,然后
umount /home/pyegrp
mount /home/pyegrp
注意如果不这样做,不会将新写入的文件备份进去的。
然后:
[root@laptop pyegrp]# dump -9 -u -f /dev/hda3 /home/pyegrp/
用restore tf /dev/hda3
就会看到刚刚写入的文件会出现在列表中。

restore命令是用来恢复备份的。
[root@laptop pyegrp]# restore rf /dev/hda3 /home/pyegrp

用restore命令来查看备份文件里的文件列表
[root@laptop pyegrp]# restore ft /dev/hda3



 
 通过 ssh 使用 dump
# /sbin/dump -0uan -f - /usr | gzip -2 | ssh  dd of=/mybigfiles/dump-usr-l0.gz
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  显示需要备份的文件及其最后一次备份的层级,时间与日期。

  2-7 Restore詳細用法

  功能说明:还原(Restore)由倾倒(Dump)操作所备份下来的文件或整个文件系统(一个分区)。

  语  法:restore [-cCvy][-b <区块大小>][-D <文件系统>][-f <备份文件>][-s <文件编号>] 或 restore [-chimvy][-b <区块大小>][-f <备份文件>][-s <文件编号>] 或 restore [-crvy][-b <区块大小>][-f <备份文件>][-s <文件编号>] 或 restore [-cRvy][-b <区块大小>][-D <文件系统>][-f <备份文件>][-s <文件编号>] 或 restore [chtvy][-b <区块大小>][-D <文件系统>][-f <备份文件>][-s <文件编号>][文件...] 或 restore [-chmvxy][-b <区块大小>][-D <文件系统>][-f <备份文件>][-s <文件编号>][文件...]

  补充说明:restore 指令所进行的操作和dump指令相反,倾倒操作可用来备份文件,而还原操作则是写回这些已备份的文件。

  参  数:

  -b<区块大小> 设置区块大小,单位是Byte。
  -c 不检查倾倒操作的备份格式,仅准许读取使用旧格式的备份文件。
  -C 使用对比模式,将备份的文件与现行的文件相互对比。
  -D<文件系统> 允许用户指定文件系统的名称。
  -f<备份文件> 从指定的文件中读取备份数据,进行还原操作。
  -h 仅解出目录而不包括与该目录相关的所有文件。
  -i 使用互动模式,在进行还原操作时,restore指令将依序询问用户。
  -m 解开符合指定的inode编号的文件或目录而非采用文件名称指定。
  -r 进行还原操作。
  -R 全面还原文件系统时,检查应从何处开始进行。
  -s<文件编号> 当备份数据超过一卷磁带时,您可以指定备份文件的编号。
  -t 指定文件名称,若该文件已存在备份文件中,则列出它们的名称。
  -v 显示指令执行过程。
  -x 设置文件名称,且从指定的存储媒体里读入它们,若该文件已存在在备份文件中,则将其还原到文件系统内。
  -y 不询问任何问题,一律以同意回答并继续执行指令。

利用rsync来实现同步:
Rsync是一个非常方便的同步工具,尤其适合海量的小文件在二台服务器之间同步。
rsync的最新版本可以从 获得。它的特性如下:
1、可以镜像保存整个目录树和文件系统。
2、可以很容易做到保持原来文件的权限、时间、软硬链接等等。
3、无须特殊权限即可安装。
4、优化的流程,文件传输效率高。
5、可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接。
在FreeBSD8下安装rsync:
#cd /usr/ports/net/rsync
#make install clean
配置rsync服务端:
#vi /usr/local/etc/rsyncd.conf
加入以下内容:

[www]
comment = web server backup
path = /www
auth users = woody
uid = nobody
gid = nogroup
secrets file = /usr/local/etc/rsyncd.secrets
read only = no

 

配置rsyncd.secrets:

 

#vi /usr/local/etc/rsyncd.secrets

 

加入以下内容:

 

admin:123456 // 认证所需的用户名/密码

 

修改该文件的访问权限:
#chmod 600 /usr/local/etc/rsyncd.secrets

 

配置rc.conf,自动启动服务:

rsyncd_enable="YES"

 

启动rsync的daemon模式:

#vi /usr/local/etc/rc.d/rsyncd

修改这一行内容,使用IPV4协议

command_args="-4 --daemon"

 

配置完成,启动Rsync:

#/usr/local/etc/rc.d/rsyncd start

 

检查Rsync daemon启动状态:

# sockstat | grep rsync
root rsync 586 3 dgram -> /var/run/logpriv
root rsync 586 4 tcp4 *:873 *:*

 

接下来是Rsync客户端配置(在另一台机器上):

 

1: 安装
freebsd-2#cd /usr/ports/net/rsync
freebsd-2#make install clean

 

2: 配置rsyncd.secrets
vi /usr/local/etc/rsyncd.secrets

加入以下内容:

123456 //注解:Rsync Server上的认证密码,不用输入用户名

 

3:修改该文件的访问权限:
chmod 600 /usr/local/etc/rsyncd.secrets

 

4: 检查备份同步状态
/usr/local/bin/rsync -avzP --delete --password-file=/usr/local/etc/rsyncd.secrets /backup/www/

--->>> 将Rsync Server的Web页面,备份或同步到了Rsync Client的/backup/www下

 

进行一次同步实验:

rsync -vzrtopg --password-file=/usr/local/etc/rsyncd.secrets /var/www/html/newg 192.168.4.222::data


Step 5: Auto Rsync Shell:
freebsd-2#cd /usr/local/etc/rc.d/

freebsd-2#chmod a-x rsyncd.sh

freebsd-2#vi rsync.sh //加入以下内容

#!/bin/sh

/usr/local/bin/rsync -avzP --delete
--password-file=/usr/local/etc/rsyncd.secrets tonny@192.168.83.80::www
/backup/www/

freebsd-2#chmod a+x rsync.sh

 

freebsd-2#crontab -e //加入以下内容(每天下午5点半自动备份同步)

30 17 * * * /usr/local/etc/rc.d/rsync.sh

 

高级应用(Rsync With SSH)

Rsync Server
freebsd-1#/usr/bin/ssh-keygen -d

Rsync Client
freebsd-2#/usr/bin/ssh-keygen -d

freebsd-2#scp ~/.ssh/id_dsa.pub 192.168.83.80:/root/.ssh/authorized_keys

freebsd-2#ssh-agent csh 或 (ssh-agent bash) --->>> #echo $SHELL
查看当前SHELL
freebsd-2#ssh-add id_dsa --->>> 输入 passphase


freebsd-2#/usr/local/bin/rsync -avzP --delete -e ssh 192.168.83.80:/usr/local/apache2/htdocs/ /backup/www
htdocs/不加斜线,会在备备份机上建立一个文件夹

PS: 参数说明

-a, --archive archive mode, equivalent to -rlptgoD
//档案模式
-v, --verbose
//详细模式
-z, --compress compress file data
//压缩文件
-P equivalent to --partial --progress
//显示进度
--delete
This tells rsync to delete any files on the receiving side
that
aren't on the sending side.
//保持远程机器的文件同步性
-e ssh use SSH connection
//使用SSH连接,保证数据安全

 

文章摘自多处:

http://blogold.chinaunix.net/u/22713/showart_202776.html

freebsd中文手册等等。

 

 
 
阅读(913) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~