硬盘克隆(英语:Disk cloning),是一种通过电脑软件或硬件,把硬盘内容完整克隆到另一台硬盘的过程。一般来说,若是通过软件方式来克隆的话,都会把整颗硬盘的内容写进一个映像档里,以待下次恢复时,能够从映像档里还原硬盘内容。
硬盘克隆软件主要有以下几种用途:
在没有硬盘克隆的帮助下,要安装一台电脑,一般要经历以下步骤:
然后每一台电脑都要经历上述的五个步骤。
在硬盘克隆软件的帮助下,以上五个步骤可以简化为以下三个步骤:
硬件克隆的好处,在于其快捷速度,以及无需受制于用作克隆的电脑。最简单的硬件克隆机器,可以提供1对1的克隆;若要同时制造多个克隆的话,有些机械允许用户一次过克隆29个副本。
在Windows 95以前,部分电脑生产商利用硬件的硬盘克隆机器来克隆软件。然而,由于硬盘克隆机器没有判别硬盘的结构,也没有判别内容的智能,所以在克隆时会连同没有使用的空间也一并克隆,白白浪费操作的时间。此外,一旦电脑的硬件环境转变(例如:换成了不同大小的硬盘),基于上述原因,机器无法对不同的大小的硬盘进行克隆,生产商亦需要重新创建一个新的影像。
其他生产商及公司选择手动为硬盘进行分割及格式化,然后再用克隆文件或备份的软件去克隆系统内的文件。这些文件一般会先进行压缩,然后在写入硬盘时才解压。比较常见的压缩有tar(Unix/Linux系统,俗称tarball)、zip或cab格式。举个例子:Compaq及Acer在他们的Windows 95/Windows 98安装光盘里,会先把要克隆的Windows文件用多个需要密码来解码的zip文件存储,然后把zip文件存储在可引导的CD-ROM里。当用户用电脑进行安装时,会自动运行程序去为zip文件解压到硬盘上。用这种方法来克隆硬盘有一个弊处:就是通常这些方法都不能把引导扇区一并克隆,而需要安装程序去额外处理。
Windows 95的出现,使原来的问题更复杂化:过往的操作系统的安装碟只需要数张软盘,但Windows 95却要用上十多张碟片,使安装的时间加长了许多。新的作业环境对FAT文件系统加入了长文件名称的支持,但很多当时存在的程序都不懂得去读取。到1997年引入的FAT32文件系统更引起了其他软件的各种问题。个人电脑市场的成长,促使软件开发商去查找一个更好的答案去解决这些问题。
1996年,Norton Ghost由Binary Research推出市面。它最初只直接支持FAT文件系统,对于使用其他文件系统的分割,则只能逐个逐个扇区克隆,而不能改变其分割大小。之后一年,Ghost增加了NTFS文件系统的支持,亦提供让用户改变硬盘的Security Identifier(SID)的程序,使Windows NT系统能够分辨源电脑及克隆的电脑。1999年,对于ext2的支持亦加入了。
Ghost的竞争对手很快出现,而且他们一直都在比较特色,直到现在还是如此。现时很多硬盘克隆程序都会提供比单纯作克隆更多的功能,例如:硬件资产管理、用户设置转移等。
对于UNIX(包括Linux和Mac)系列的电脑系统,由于Ghost只能识别其个别几种文件系统如ext2,对于不识别的文件系统则需要逐扇区(sector by sector)进行“1:1”克隆,速度较慢且不支持分区缩放。一些专门的工具包如Clonezilla则能支持大部分主流的文件系统,并对这些类型的分区进行逐文件的克隆。
对于某些操作系统,两部位于同一网络上的电脑不可以使用同一个名称,例如:对于Windows NT及其继后的版本来说,保安认证(Security Identifier,SID)在相同的Active Directory里是不可以一样的。一个及格的硬盘克隆程序,应该要在进行克隆及还原时更改此值。此外,对于一些对硬件变更比较敏感的操作系统,例如Windows XP,有可能会在克隆完成后因为底板、显卡或网卡等硬件的变更而拒绝运作。这时候,就不能够采用硬盘克隆软件,而要改用操作系统生产商提供的软件进行安装。再以先前的Windows XP为例,其实微软公司建议用户应该采用Sysprep而不是硬盘克隆软件来进行操作系统的安装。
Linux系统一般在引导时都会采用LILO或GRUB这两套Bootloader软件。Bootloader的作用,在于引导系统之时,为硬件指向主要引导纪录(Master Boot Record,MBR)的位置所在。对于一般系统来说,这可能很简单,但若系统由多于一组硬盘,而引导分割又未必在第一个分割时,硬盘克隆软件就要有办法去指引系统,并在克隆时顺道修改这一纪录。
一个硬盘克隆程序需要能够读取源硬盘上所有内容,即使它被操作系统所保护,而且必须保证在读取硬盘的资料时,仍然能够保持始终如一。在写入目的硬盘时,亦要确原来的操作系统被完全改写。为简化这些步骤,大多数硬盘克隆程序都会在一个与电脑宿主的原来操作系统不同的环境里运作。举例说,早期的硬盘克隆程序(例如:旧版的Norton Ghost)都在PC-DOS或DR-DOS环境里运行,而随着Linux的盛行,不少较新的克隆程序都以Linux LiveCD的形式在网上发布。
电脑系统打从一开始就以一个与操作系统不同的环境运作,有助克隆的过程顺利运行;但亦有部分程序(例如:Acronis TrueImage)选择依旧在原操作系统上运行,不过会安排在所有其他应用软件运作运行之先而运行,以避免系统内容被干扰、及避免文件因为被开启而无法克隆。这种做法有两个缺点:其一是软件不能改写运行中的系统分区;其二是软件未必可以对非操作系统支持的分割作完整的支持。又再以Acronis TrueImage为例子:他们系列的免费版本DiskImage就未能克隆Linux分割的引导扇区,而需要用户在克隆后手动重建。另外,他们的Acronis TrueImage 2009版本只能在WinXP电脑上运行,所以若用户希望通过这软件来把旧有的Windows 2000系统从旧硬盘克隆到新硬盘的话,就会英雄无用武之地。
采用非Windows操作环境的硬盘克隆程序有一个问题要克服,就是对相关硬件需要提供驱动程序的支持。部分硬件由于没有相关的支持驱动程序,往往需要由硬件生产商去撰写,又或通过其他功能来补救。早期的硬盘克隆程序都不支持外部贮存设备,到后来才逐渐加入对可读写CD-ROM/DVD的支持,再扩展到磁带机、USB贮存设备、Firewire及网络硬盘等不同设备的支持。对于支持网络访问的硬盘克隆程序,其多播的功能用户能够同一时间对网络上多台电脑在同一时间进行克隆。
要用硬盘克隆程序为硬盘创建一个映像档,最简单的方法是把源硬盘和目的硬盘都放在同一部电脑里面,但实际运作上不一定要受此限制。简单点来说,可以通过简单的连线:不论是平行端口的连线(例如:Norton Ghost可以通过Laplink cable进行硬盘克隆)又或是网络连线也可以。对于网络连线,一般会把映像档存储在网络硬盘上。由于这些映像档一般都非常大,动轧数百MB,所以当需要为多台电脑同时进行硬盘克隆时,会对网络造成很大的压力。解决办法是通过多播技术,使单一的映像档能够同时往多个网点发送,以减轻网络的压力。不过,现时支持多播技术的硬盘克隆软件不多,而且价钱颇为昂贵。
早期具有在线克隆功能的软件,在使用时往往需要用户提供网卡的驱动程序,费时失事。新一代以Linux为基础的LiveCD普遍都已无需再担心这个问题。
另外,一般在线克隆程序都允许用户使用现在的Windows分享、FTP服务器等功能;但亦有一些软件要求用户在使用前先行安装TFTP/PXE的服务支持。
虽然一般的硬盘克隆软件都不是设计作备份用途,但他们很多时都被这样用。备份程序的一项主要功用是允许用户在无需恢复整个备份而可以访问当中的部分文件。有些硬盘克隆软件会提供一个近似Windows Explorer的工具程序,以便用户能够翻阅映像档内所包含的文件内容,甚或抽至部分文件出来。 亦有一些软件可以让用户把映像档当作一个只读的硬盘来架设。有些程序亦允许用户把影像内所包含的部分文件删除。