一个去年的老本,500G硬盘,空间各类捉急,准备迁移到公司的台式机上,却发现Linux上迁移环境没有Windows下那么方便,只能复制整块硬盘了。linux
从公司拿了一块1T的硬盘,插入移动硬盘盒(淘宝上搞的一个移动硬盘盒,40元),加电识别,格式化,开始硬盘复制。命令行
市面上针对数据备份的软件不可胜数,咱们不讨论他们的优缺点。可是若是你正在使用Linux(其实若是你没有使用Linux,而是经过一些 Linux live CD来启动计算机,我想也是同样的),那么恭喜你,你能够简单地使用系统命令“dd”来完成磁盘克隆,分区克隆或者磁盘或分区到磁盘镜像的复制。通常状况 下,这几个任务已经能够知足你平常工做的须要了。
先说明几个概念,在Linux上,一块硬盘或者一个分区都由一个目录表示,通常存在于系统根目录的/dev/之下。例如/dev/hda表明你的第一块 IDE硬盘,/dev/sdb表明第二块SCSI硬盘,/dev/fd0表明系统的软盘驱动器等等。一样每块硬盘上的分区也有独特的目录名,例如/dev /hda1表示你第一块硬盘上的第一个分区(至于这个分区上有什么东西在进行备份操做的时候并不重要)。code
1. 磁盘克隆
也就是把整个硬盘复制一份。固然你首先须要在计算机上在接上一块新硬盘,并让系统识别。例如这块硬盘可能被识别为/dev/sdb,原有硬盘叫/dev/sda. 而后你能够在linux命令行上简单地执行:dd if=/dev/sda of=/dev/sdb
对就这么简单,此命令完成后,你的第二块硬盘上将有一个和第一块硬盘如出一辙的副本,也是能够启动的。由于dd操做就是简单的按字节复制,什么分区表啊,MBR啊通通照搬。
固然你也能够作一些微调,来定制一下克隆操做。例如你可能但愿把硬盘上的内容所有备份到一个磁盘文件中,而不是另外一块新硬盘,你能够dd if=/dev/sda of=~/disk1.img
以后,disk1.img就是备份好的磁盘映像文件,你能够复制或转移到其余介质也能够压缩一下:gzip disk1.img #generates disk1.img.gz
或者在建立磁盘映像文件的同时就执行压缩:dd if=/dev/sda | gzip > disk.img.gz
dd if=/dev/sda | bzip2 > disk.img.bz2
不错吧!ghost的功能都有了。orm
2.分区克隆
若是咱们不想克隆整块磁盘,只想把某些存放数据的分区备份一下,你会须要克隆一个分区。正如预备知识所述,分区在linux下也是一个文件。例如dd if=/dev/sda1 of=~/part1.img
将把第一块磁盘的第一个分区备份到名为part1.img的文件中。
也能够进行分区复制:dd if=/dev/hda1 of=/dev/hda3
将把分区一原样复制到分区3.ip
3. 从镜像文件恢复磁盘或分区
很简单,把上面命令中,of和if指向的文件名互换一下便可实现恢复。例如dd if=disk1.img of=/dev/sda
把保存在disk1.img中的映像恢复到第一块磁盘dd if=part1.img of=/dev/hda2
把保存在part1.img中的映像恢复到第一块硬盘的第二个分区软件
最后,须要注意一点是,不管备份仍是恢复,都须要保证 of 指向的文件或磁盘空间要大于 if 指向的内容,由于是按字节复制 若是没有足够的空间去存储内容,备份天然会失败。淘宝