Linux下开源磁盘克隆与备份工具
2009-11-22 15:26:07 阿炯

磁盘克隆指将硬盘数据完整复制至另一存储设备的过程。虽然手动复制也可以,但可能遗漏隐藏文件。专业克隆工具能生成完整磁盘镜像(.img文件),确保数据无损迁移。下面介绍在Linux 系统中常见的8种磁盘克隆与备份工具。

1.Clonezilla – Linux 磁盘映像/克隆程序

Clonezilla 是一款基于 Ubuntu 和 Debian 的 Live CD 工具,用于完整克隆硬盘数据或进行备份。该工具采用 GPL 3 许可证,功能类似于 Windows 平台的 Norton Ghost,但更为高效。

功能特性:
支持多种文件系统:包括 ext2、ext3、ext4、btrfs、xfs 等
兼容 BIOS 和 UEFI 启动模式
支持 MBR 和 GPT 分区格式
可在任意连接的硬盘上重新安装 Grub 1 和 Grub 2 引导程序
低硬件需求:仅需 200MB 内存即可运行(适合低配电脑)
提供其他多项功能

官方网址:https://clonezilla.org/downloads.php


2. Mondo Rescue – Linux 灾难恢复解决方案

与其他克隆软件不同,Mondo Rescue不会将您的硬盘转换为.img文件,而是会将其转换为.iso镜像。还可以使用Mindi(Mondo Rescue开发的特殊工具)创建自定义Live CD,通过该Live CD克隆数据。


该工具支持大多数Linux发行版,同时也支持FreeBSD,采用GPL许可协议。

官方网站:http://www.mondorescue.org/


3.Partimage - Linux 磁盘克隆工具

Partimage 是一款开源备份软件,默认在 Linux 系统下运行,可通过软件包管理器安装在大多数 Linux 发行版中。若系统未预装 Linux,可使用SystemRescueCd(一款默认包含 Partimage 的 Live CD)来完成所需的克隆操作。


其执行硬盘克隆速度极快,但存在一个局限:不支持 ext4 和 btrfs 分区格式。不过,该工具仍可正常克隆 ext3 和 NTFS 等其他文件系统。

官方网站:https://www.partimage.org/


4.FSArchiver - Linux 文件系统归档工具

FSArchiver 是 Partimage 的继承者,同样是一款优秀的硬盘克隆工具。它支持克隆 Ext4 分区和 NTFS 分区。


功能特点:
支持基础文件属性(所有者、权限等)的保留
支持扩展属性(如 SELinux 使用的属性)
支持所有 Linux 文件系统的基础属性(卷标、UUID、块大小)
支持 Windows 的 NTFS 分区及 Linux/Unix 类系统的 Ext 分区
提供校验和功能,可检测数据损坏情况
能够跳过损坏文件来恢复受损的归档
支持在单个归档中包含多个文件系统
支持多种压缩格式(lzo、gzip、bzip2、lzma/xz)
可将大文件分割为多个小文件

可以直接下载安装 FSArchiver,也可以选择下载已包含该工具的 SystemRescueCD。

官方网站:https://www.fsarchiver.org/


5.Partclone - Linux 分区镜像工具

Partclone 是一款免费的分区克隆与恢复工具,采用 C 语言编写,最早发布于 2007 年。该工具支持多种文件系统,包括 ext2、ext3、ext4、xfs、nfs、reiserfs、reiser4、hfs+ 和 btrfs,且操作十分简便。

作为 GPL 授权软件,Partclone 已被集成至Clonezilla 工具集中。用户可直接下载安装其独立软件包。


官方网站:https://partclone.org/


6.G4L - Linux 磁盘镜像工具

G4L 是一款基于 Live CD 的免费硬盘克隆系统,其核心特性在于支持文件系统压缩,并可通过FTP、CIFS、SSHFS 或 NFS 协议将镜像传输至任意指定位置。


自 0.41 版本起,该工具已新增对 GPT 分区的支持。作为采用 BSD 许可证的开源软件,G4L 可免费下载使用。


下载地址:https://sourceforge.net/projects/g4l/


7.doClone - Linux 磁盘克隆工具

doClone 是一个专为简化 Linux 系统分区克隆而开发的免费软件项目。该工具采用 C++ 编写,支持多达 12 种不同的文件系统。

主要功能:
支持 Grub 引导程序修复
可通过局域网(LAN)将克隆镜像传输至其他计算机
提供实时克隆功能 - 可在系统运行状态下直接创建克隆镜像


官方网址:https://doclone.nongnu.org/#home

8.Timeshift - Linux 系统备份与恢复工具

Timeshift是一款专注于系统快照与恢复功能的工具,能够创建并管理整个系统或特定目录的备份,该工具提供图形用户界面(GUI)和命令行界面双重操作方式,可满足不同用户的使用偏好。Timeshift 采用 rsync 和 BTRFS(或 Rsync 结合硬链接)技术实现高效省空间的备份方案,确保用户在恢复系统时无需占用过多存储空间。


主要特点:

双模式操作:GUI 图形界面与 CLI 命令行界面
智能备份技术:支持 rsync/BTRFS 双引擎
存储优化:通过硬链接技术节省磁盘空间
完整系统回滚:支持将系统还原至任意备份点

项目托管地址:https://github.com/linuxmint/timeshift


部分备份和恢复实用工具指令

本节回顾了一些在类unix操作系统中可用的常见备份和恢复工具。这里所提供的例子可以使您立即开始使用一个实用工具,而不必理解其所有功能。掌握这些工具的一些知识对于普通的系统管理来说是至关重要的。这里所示的例子已在 Solaris 5.8 操作系统上测试,他们也可在其他版本的操作系统上工作。仅仅列出了这些命令中每一个的基本使用方法。如果需要更多的信息,建议参考对每个实用工具进行更加详细探究的 man 页面。参见 Sun 产品信息站点(docs.sun.com)上的 Solaris 操作系统的 man 页面。更明确地说介绍了以下备份和恢复实用工具:tar、dd、cpio、pax

tar -- 创建磁带和文件存档,恢复文件和目录

tar 命令在很多 UNIX 平台上都可找到。它是一个用于将文件存档到磁带上的快速易用的工具。tar 也可以用于将多个文件存档为一个文件(也就是 tar 文件),使之可以移植到其他系统上使用。例如,如果需要,可以将整个用户主目录或安装目录复制到单个 tar 文件中,并在必要时将其移动到运行 HP-UX 的服务器上。
tar 命令有很多可用的选项,但将只讨论用于创建、提取或恢复的三个选项,并列出 tar 文件内容的选项。
-c: 创建 tar 文件
-t: 列出 tar 的内容
-x: 提取或恢复 tar 文件内容
-v: Verbose (显示 tar 所采取的动作)

tar 命令的基本语法如下:
注意: 有时将在一些 tar 命令例子中看到在选项前使用了破折号,这对于 tar 的正确运行不是必需的。
创建新的 tar 文件:
% tar
cvf filename.tar filelist
在这里,filename.tar 是 tar 文件的名字。filelist 是想要备份的文件列表。可以使用通配符指定列表。
列出 tar 文件的内容:
% tar tvf filename.tar filelist
在这里, filename.tar 可以被一个磁带设备文件所取代。例如:
% tar cvf filename.tar /dev/rmt/0mn
提取 tar 文件内容到当前位置:
% tar xvf filename.tar

dd -- 转换和复制文件

dd 命令通常用于将整个文件系统复制到另一个文件系统,或者将硬盘驱动器的内容复制到另一块硬盘。dd 还可以用于将文件系统复制到磁带,反之亦可。dd 是一个相对较快的复制工具:它在传输数据时为数据创建一个精准的副本(字节对字节)。dd 可使用几个选项来指定缓冲区大小、块大小和数据转换。其基本的语法是:
dd = = options
下面的例子将整个 c0t1d0s2 的内容复制到第二块磁盘(c0t4d0s2)上,使用的块大小是 128。如果您有可用的剩余磁盘空间并且希望有准备好的备份磁盘以在灾难发生时换出,这会工作得极佳。在这个例子中指定了 slice 2,因为它在 Solaris 操作系统中代表整个磁盘。
% dd if=/dev/rdsk/c0t1d0s2 of=/dev/rdsk/c0t4d0s2 bs=128
要将一台磁带设备上的内容复制到另一台上,使用下面例子所示的命令。(注意:必须有两台可用驱动器。)
% dd if=/dev/rmt/#1drive of=/dev/rmt/#2drive
有关 dd 的 man 页面给出了很多其他可用的选项。我建议您查看 dd 的 man 页面并且阅读 Notes 小节。在那里,您将发现 dd 的一些限制,以及在从磁盘设备复制数据时使用裸字符设备的一个提示。

cpio -- 拷入和拷出文件存档

cpio 代表“拷入,拷出”,用于从一个位置复制数据到另一个位置。使用 cpio 与使用其他 UNIX 实用工具相比更具有优势,包括:
cpio 可以备份和恢复单独的文件而不只是所有文件系统。
cpio 在文件上创建的文件头信息较小,导致备份量较少。
tar 被限制在单台磁带设备上,cpio 则不同,它可以跨越多个磁带。
cpio 运行在三种模式中: copy-out ( cpio -o)、 copy-in ( cpio -i)和 pass 模式 ( cpio -p),最后一种模式用于从磁盘上(而不是磁带)的一个位置复制文件到另一个位置。下节列出了几个常用的选项。
cpio 命令选项
除非另行指出,否则这些选项适用于 copy-out 和 copy-in 模式。
-c: 以 ASCII 格式写入头信息, 为了便于移植。
-d: 创建所需的目录。
-v: Verbose (处理时报告文件名)。
-V: 与前面相同, 除了为每个复制的文件显示一个 “.”。
-u: 用于无条件复制;旧文件将不会替换较新的文件。
-m: 保留以前的文件修改时间。该选项在复制目录时不起作用。

要将一个目录及其子目录复制到磁带上,使用下面的例子:
% ls -R | cpio -oVc > /dev/rmt/0
上面的例子将把当前所在的目录以及其中的所有子目录复制到位于 /dev/rmt/0 的磁带设备。-o 指定处于 copy-out 模式。-V 选项代表 verbose 并将显示.作为进度指示符。-c 选项创建一个 ASCII 头文件。要将内容从磁带复制回目录,使用下面的例子:
% cpio -icvD < /dev/rmt/0
在上面的例子中,我们的命令将使用多个选项恢复磁带上的数据内容。-i 选项使工作处于 copy-in 模式。-d 选项在将数据复制回来的时候创建所有所需的目录。
利用 cpio 备份文件(Copy-Out 模式)
利用 cpio 有多种方法来备份文件,我在这里将介绍其中的两种。

% cpio -ov list > /dev/rmt/0
这个命令从文件“list”读取内容并将其复制到磁带设备。

% cpio -o /dev/rmt/0
这个命令允许您指定要备份的文件。输入文件名后,按 Ctrl+D 键执行该命令。下面是一个例子:
% cpio -o > /dev/rmt/0
filename.txt
file1name.txt

利用 cpio 恢复文件(Copy-In 模式)
利用 cpio 的恢复过程与备份文件的过程类似。只是不使用 -o 指定 copy-out 模式,我们使用 -i 模式将数据从磁带复制回来。

% cpio -icvum < /dev/rmt/0
这个例子利用了与先前使用的类似选项,还有 -m 选项,它将保留文件的修改时间。
使用下面的例子查看磁带存档上的内容列表:
% cpio -ict < /dev/rmt/0
Pass 模式
Pass 模式可用于在磁盘设备上复制目录。它在磁带上将无法工作。当要复制文件和目录时,,cpio 要优于 cp,因为它保留了文件的所有权和修改时间。
下面的例子将所有文件和目录复制到一个称为 bkup 的目录中:
% ls * | cpio -pdumv bkup

pax -- 可移植存档互换(提取、写入和列出存档文件)

pax 实用工具可以在很多与 POSIX 兼容的 UNIX 系统上找到。Solaris 操作系统从版本 2.5 开始就包含它了。pax 具有读写 tar 和 cpio 存档的能力。根据您选择如何使用 pax,它将运行于 4 种模式之一:读、写、列表和复制。要设置模式,您可以使用 -r、-w 、这两者的组合或者根本不用选项。

pax 模式选项
选项 模式 描述
-r 读 单个 -r 选项只是读模式,这允许您从磁盘或磁带读文件
无 列表 如果 -r 或 -w 选项都没有, pax 将被置于列表模式。它将从磁盘、磁带或标准输入设备读文件并且显示文件和目录层次结构
-w 写 单个 -w 选项让 pax 处于写模式。 它将依照 -x 选项指定的格式将当前目录和其中的所有子目录复制到独立的输出设备。(参见下面的例子)。如果没有指定文件,可以从标准的输入设备上读入一个列表,一次一个文件
-rw 复制 同时指定 -r 和 -w 选项,所选择的文件被复制到目的目录

pax 命令选项
选项 描述
-a 将文件附加到先前写入的存档的末尾
-b 块大小。 块大小最低为 512 字节, 或者以 512 为增量的更大块,最大 32256 字节
-c 匹配所有文件或存档成员,除了那些用 Pattern 和文件操作数指定的
-f 指定 作为输入或输出存档的路径名。一个存档可以跨越多台设备。pax 提示您在存档中的下一设备的路径名
-i 交互地重命名文件或存档成员。 用于通过标准输入为可选择性的写或复制提供文件名
-p 指定在提取或存档一个文件时所用的一个或多个文件特征选项a 不保留文件访问时间
e 保留一切:用户 ID、组ID、文件模式位、文件访问时间和修改时间。
m 不保留文件修改时间
o 保留用户 ID 和组 ID
P 保留文件模式位
v Verbose 模式

-x 指定输出存档格式。默认格式是 ustar。 pax 可以支持 cpio、 tar、 bcpio、 ustar、 sv4crc 和 sv4cpio

下面的例子将现在目录中的文件复制到一个磁带存档:
% pax -w -f /dev/rmt/0
注意如何使用 -w 选项将文件写入磁带。 -f 选项用于指定存档,这个例子中是磁带设备。
下面的例子为一个存储在磁带设备 /dev/rmt/0 中的存档列出了一个详细内容表:
% pax -v -f /dev/rmt/0
又使用了 -f 选项指定 pax 存档的位置。因为希望列出存档,所以排除了 -r 或 -w 选项。这就使 pax 进入列表模式, -v 将详细地把发现的所有内容显示到标准的输出。