您的位置:首页 > 运维架构 > Linux

Linux下使用“dd”工具来备份数据

2011-01-14 16:43 302 查看
      在Linux平台下面,有很多的备份工具可以使用,其中的大多数都非常好。事实上,很多的linux发行版本都自带有许多的小工具。dd就是其中之一,一个灵活小巧的备份工具。
      dd工具能够备份一个文件到另一个文件中,也能够备份一个分区到另一个分区中,或者能够将一个文件备份到一个分区中。可以说,dd是一个非常完美的备份工具。
       下面我们来看看一个例子:将/boot分区备份到一个文件中
# dd if=/dev/sda1 of=/srv/boot.img

它的意思是,将分区/dev/sda1(假设/boot加载在sda1上),备份到/srv路径下的boot.img中。相当简单的一个命令。

         注意:dd命令会进行一个全盘的“拷贝”,假如你的/dev/sda1分区总共了200MB的空间大小,但里面的数据只有100MB事实上,进行备份后的boot.img会有200MB大小。

我们来看看:

# df -hT | grep sda1
/dev/sda1     ext2    198M   86M  102M  46% /boot
# dd if=/dev/sda1 of=/srv/boot.img
417627+0 records in
417627+0 records out
213825024 bytes (214 MB) copied, 2.07951 s, 103 MB/s
# du -sh /srv/boot.img
204M   /srv/boot.img

当然如果你嫌太大的话,可以压缩一下(使用管道然后用gzip或者bzip2来压缩):

# dd if=/dev/sda1 | bzip2 -9f >/srv/boot2.img.bz2
417627+0 records in
417627+0 records out
213825024 bytes (214 MB) copied, 31.5072 s, 6.8 MB/s
# du -sh boot2.img.bz2
111M   boot2.img.bz2

备份后,看看怎么恢复吧:

# dd if=/srv/boot.img of=/drv/sda1

很简单吧!

来个更高级的操作:

如果你想“拷贝”整个磁盘或者整个系统(有点像ghost),首先,你需要确定你的源盘的大小,然后确定你的目标盘至少要大于或者等于源盘大小。假设你需要将/dev/sda备份到/dev/sdb中,首先确定两都大小,(条件:/dev/sdb >= /dev/sda),然后使用dd来进行克隆。

# dd if=/drv/sda of=/dev/sdb bs=446 count=1

# dd if=/dev/sda1 of=/dev/sdb1

# dd if=/dev/sda2 of=/dev/sdb2

首先,dd将MBR(主引导扇区从sda拷贝到sdb中,这样子,sdb就能够被引导了。 第一个446字节就是此MBR代码.

扩展一下:如果你想制作一个usb启动系统或者live CD,用这种方法是不是很简单!

参考阅读:http://blogs.techrepublic.com.com/opensource/?p=1771&tag=rightCol;topRated
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: