当前位置: 首页>>技术教程>>正文


如何使用partclone创建”smart”分区备份

, , ,

目的

学习如何使用partclone实用程序备份分区

要求

  • 根权限
  • 必须卸载备份分区

困难

简单

约定

  • -要求linux命令可以直接以root用户身份或通过使用root特权以root特权执行sudo命令
  • $-要求linux命令以常规non-privileged用户身份执行

介绍

如果你曾经用过Clonezilla要创建操作系统的备份,您已经体验了partclone。不像其他工具dd,partclone知道如何与特定的文件系统进行交互,因此它可以创建更小的备份,仅克隆分区中的已用空间。在本教程中,我们将学习如何使用partclone从命令行。

块级备份

备份可以在文件级别或更深的级别进行block level。前者是partclone运行的级别。我们都知道和爱dd,但是使该程序在某些情况下出色的特征之一,在其他情况下也表现出劣势:dd对文件系统一无所知。该程序仅复制磁盘或分区的每个块,从而创建1:1完美克隆(一个160GiB磁盘,将产生一个160Gib备份)。 Partclone的行为有所不同,因为它可以与最常见的文件系统类型进行智能交互,仅备份分区中已使用的块,从而获得更小的备份。

partclone操作于block level给我们带来的好处是,不必担心保留诸如acls要么selinux labels

支持的文件系统

Partclone支持所有最常用的文件系统,例如:ext2,ext3,ext4,hfs +,reiserfs,xfs,jfs,ntfs,fat(12/16/32),exfat等。要备份的文件系统将确定与文件系统一起使用的后缀。程序,遵循语法partclone.<fileystem_type>效用。例如,要备份ext2文件系统,我们将使用parclone.ext2命令。此外,如果partclone不支持某些特定的文件系统,partclone.dd可以使用。

安装

Partclone应该在最常见的发行版存储库中可用。要在Ubuntu或Debian中安装它,我们可以使用apt:

# apt-get update && apt-get install partclone

要将其安装在Fedora上:

# dnf install partclone

在CentOS和Rhel上,我们应该首先启用EPEL软件源(Enterprise Linux的额外软件包)。 CentOS在官方资源库中提供了epel-release软件包,因此要启用此软件源,我们只需要运行:

# yum install epel-release

在Rhel上启用EPEL存储库需要额外的步骤。首先,我们必须从项目页面下载epel-release软件包,然后我们应该安装检索到的软件包:


$ wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# yum install epel-release-latest-7.noarch.rpm

启用存储库后,我们只需要使用yum安装partclone软件包:

# yum install partclone

在Archlinux上,我们可以通过pacman安装partclone:

# pacman -S partclone

克隆分区

足够多的文字,让我们看看partclone的作用。首先,我们必须记住,要克隆分区,一定不能挂载它。因此,如果要备份系统分区,则必须从活动CD访问驱动器(这是clonezilla所做的)。如果您使用lvm在分区系统上,我们不受此限制,因为我们可以创建逻辑卷的实时快照并对其运行partclone,从而保留正常运行时间。

我将备份从用作逻辑卷的快照/home划分。格式为ext4文件系统,它被称为home_snap_lv。我们要做的就是:

# partclone.ext4 -c -s /dev/fingolfin_vg/home_snap_lv -o /mnt/data/backup.pcl

让我们分析一下命令。首先,我们使用与我们感兴趣的文件系统相关的扩展名ext4运行partclone。然后我们提供了-c选项。这使我们可以指定要执行的操作是克隆(partclone也可以用于还原备份)。的-s选项让我们指定要克隆的源(在本例中为逻辑卷快照home_snap_lv)。最后-o选项,简称--output,告诉partclone我们要将备份映像存储在哪里。请注意.pcl这里的扩展名是完全任意的:为了方便起见,我们只使用它。

启动后,partclone将显示操作进度:


Partclone v0.3.11 http://partclone.org
Starting to clone device (/dev/fingolfin_vg/home_snap_lv) to image (/mnt/data/backup.pcl)
Reading Super Block
Calculating bitmap... Please wait...
Elapsed: 00:00:01, Remaining: 00:00:00, Completed: 100.00%
Total Time: 00:00:01, 100.00% completed!
done!
File system:  EXTFS
Device size:   16.1 GB = 3932160 Blocks
Space in use:   2.2 GB = 547088 Blocks
Free Space:    13.9 GB = 3385072 Blocks
Block size:   4096 Byte
Elapsed: 00:00:02, Remaining: 00:00:44, Completed:   4.31%,   2.90GB/min,
current block:      52992, total block:    3932160, Complete:   1.35%

但是,也可以使用ncurses表示那些信息”graphically”(这是clonezilla所做的)。我们要做的就是添加-N选项。正在运行:

# partclone.ext4 -N -c -s  /dev/fingolfin_vg/home_snap_lv -o /mnt/data/backup.pcl

将产生以下输出:

Partclone ncurses progress interface

Partclone ncurses进度界面

压缩备份

如前所述,partclone仅在文件系统上备份使用的块,从而优化了存储备份所需的空间。但是,由于Shell重定向的强大功能,我们可以将partclone与gzip快速生成较小的备用图片:

# partclone.ext4 -c -s /dev/fingolfin_vg/home_snap_lv | gzip -c -9 > /mnt/data/backup.pcl

这次我们没有使用-o选项以指定输出文件。相反,我们通过管道将程序的标准输出传递给gzip标准输入。我们还指定了-c选项,简称--stdout,让我们修改gzip行为以压缩或解压缩为stdout。使用的压缩级别由-9选项,可用的最大值。默认压缩率是-6。或者--fast可以用来使用最快的压缩方式,从而提高速度而不是效率,反之亦然,--best对于相反的行为,获取最小的文件。

最后,我们使用了>运算符,将输出重定向到我们所需的目标文件。您会注意到我添加了一个.gz前缀:这也是完全可选的,并且仅出于约定。

还原备份

Partclone还可以用于在现有分区上还原以前制作的备份。唯一的限制是该分区的大小必须大于或等于原始分区。

恢复备份非常容易。例如,我们要还原先前制作的备份(同样必须卸载分区):

# partclone.ext4 -r -s /mnt/data/backup.pcl -o /dev/fingolfin_vg/home_snap_lv

这次我们提供了-r选项,简称--restore,并反转了我们之前使用的参数。先前用于-o选项,这次代表我们的来源,因此我们将其用作-s选项。备份的源之前是分区,这次是我们的目的地,因为我们要还原备份。

如果我们使用gzip压缩partlcone输出,则恢复备份的命令会有所变化。我们必须解压缩包,然后使用 shell 的强大功能即时恢复它:

# gzip -c -d /mnt/data/backup.pcl.gz | partclone.ext4 -r -o /dev/fingolfin_vg/home_snap_lv

-c开关,再次用于解压缩为stdout,通过使用-d选项,将压缩文件的名称作为参数传递。然后,将输出通过管道传递给partclone stdin并还原到原始分区。可以使用以下命令获得与上述命令相同的结果zcat程序:

zcat /mnt/data/backup.pcl.gz | partclone.ext4 -r -o /dev/fingolfin_vg/home_snap_lv

总结思想

Partclone是clonezilla使用的核心程序,并且是一个非常不错的工具,它仅考虑已使用的块即可获得文件系统的”smart”备份。将其与lvm分区结合使用,无需重新引导系统即可获得分区的备份。有关此真正有用的程序的更多信息,请参考其手册。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/7592.html,未经允许,请勿转载。