Clonezilla 3.3.3-37 常用 CLI 命令与工具详解

Clonezilla 3.3.3-37 常用 CLI 命令与工具详解:ocs-sr(saveparts/restoreparts)、ocs-onthefly 盘对盘、ocs-chkimg 映像校验与 partclone 工具族逐条实测并附真实回显,备份/还原/校验/盘对盘四条闭环均以 sha256 验证一致。

Clonezilla磁盘克隆Ubuntu22.042026/10/28

Clonezilla 3.3.3-37 常用 CLI 命令与工具详解

目标:逐条讲清 Clonezilla 工具链的命令行用法——总控命令 ocs-sr / ocs-onthefly / ocs-chkimg、底层引擎 partclone 工具族、服务端 drbl 命令,全部命令均在 Ubuntu 22.04 服务器实测并附真实回显,备份/还原/校验/盘对盘四条闭环均以 sha256 校验确认数据一致。已在 Ubuntu 22.04 服务器实测通过。

一、环境信息

  • 操作系统:Ubuntu 22.04 LTS(x86_64),root 权限
  • 软件版本(dpkg -l 实查):clonezilla 5.0.4-1、drbl 4.5.16-1、partclone 0.3.17+dfsg-1build2
  • Clonezilla live 参考版本:3.3.3-37(官方 stable;live 环境内置同名工具,参数一致)
  • 测试磁盘布局(lsblk 实查口径):
    • /dev/sdb:300 MB,ext4 文件系统直接建于整盘(备份源)
    • /dev/sdc:300 MB,空白盘(还原目标)
    • /dev/sdd:500 MB,MBR 分区表 + sdd1(ext4,500 MB 整盘分区布局的盘对盘克隆源)
    • /dev/sde:500 MB,仅分区表(克隆目标)
    • loop26/loop27:300 MB 回环设备一对(用于 ocs-onthefly 演练;无空闲物理盘时真实服务器上同样可用 dd + losetup 制作,见 5.4)
  • 映像仓库:/home/partimag(ocsroot 默认值)
  • 测试数据:/test1.txt(43 字节)与 /random.bin(512 KB 随机数据),基准校验和:
f5afa96b0c94f51e26fd65030ac9a16b67d1fe2c32d4c36f3edb726a6ab00235  test1.txt
934c43f6a2d68fee3466cb3f3ab6a754d5eca354b3555f908a310362be6c00a9  random.bin

二、工具概览

命令层级用途
ocs-sr总控映像备份/还原(savedisk/saveparts/restoredisk/restoreparts)
ocs-onthefly总控盘到盘/分区分区直克隆(不经映像)
ocs-chkimg总控检查映像完整性与可还原性
partclone.ext4 等引擎分区级智能克隆(按文件系统选用 partclone.<fs>)
partclone.info引擎读取映像元信息
partclone.chkimg引擎校验映像数据块
cnvt-ocs-dev辅助把映像从源设备名转换到目标设备名
drblsrv / drblpush服务端DRBL 环境安装与 PXE 客户端部署
prep-ocsroot服务端准备/挂载映像仓库(ocsroot)

💡 技术拓展:Clonezilla 的命令分层设计——ocs-* 总控脚本负责"选设备、建元数据、拼管线",真正搬数据的是 partclone/ntfsclone/dd 引擎。所以 ocs-sr 的运行日志里能看到它拼出的底层命令(如 partclone.ext4 ... | gzip ... | split ...);理解这层关系后,排障时就能分清是"编排问题"还是"引擎问题"。

三、前置条件

  1. 已按《Ubuntu 22.04 安装 Clonezilla 3.3.3-37 指南》完成安装(含补装 parted/cryptsetup);
  2. 映像仓库就绪:mkdir -p /home/partimag;
  3. 源盘未挂载(partclone 拒绝克隆已挂载设备,见 9.1);
  4. 终端 TERM 正常:ocs 脚本启动时会自动 Setting the TERM as linux,如在图形终端远程执行无需干预。

四、ocs-sr:映像备份与还原总控

4.1 语法与模式

ocs-sr [OPTION] {savedisk|saveparts|restoredisk|restoreparts} IMAGE DEVICE
IMAGE 是 /home/partimag 下的映像目录名(非绝对路径)
DEVICE 可带或不带 /dev/ 前缀,如 /dev/sda 或 sda

四种模式:savedisk(整盘备份,含分区表+MBR)/ saveparts(分区备份)/ restoredisk(整盘还原)/ restoreparts(分区还原)。映像名支持保留字:ask_user(交互输入)、autoname(MAC+时间自动命名)、autohostname、autoproductname。

4.2 saveparts 备份(实测)

mkdir -p /home/partimag
ocs-sr -q2 -batch -sc -sfsck -z1 -i 2000 -p true saveparts sdb-img sdb

实测回显(进度条行略):

Setting the TERM as linux
Starting /usr/sbin/ocs-sr at 2026-10-28 04:05:33 UTC...
Start preparing device name cache files in /tmp/ocs-cache//...
Finding all disk(s)...
Finding all partition(s)...
Generating dev filesystem/size/type info cache files...
Clonezilla image dir: /home/partimag
The image name is: sdb-img
Selected device [sdb] found!
The selected devices: sdb
Activating the partition info in /proc... done!
Starting saving /dev/sdb as /home/partimag/sdb-img/sdb.XXX...
/dev/sdb filesystem: ext4.
Checking the disk space...
Use partclone with gzip to save the image.
Image file will be split with size limit 2000 MB.
If this action fails or hangs, check:
* Is the disk full ?
Running: partclone.ext4 -z 10485760 -N -L /var/log/partclone.log -c -s /dev/sdb --output - | gzip -c --fast --rsyncable | split -a 2 -b 2000MB - /home/partimag/sdb-img/sdb.ext4-ptcl-img.gz.
Cloned successfully.
Change mode to 600 for these files: /home/partimag/sdb-img/sdb.ext4-ptcl-img.gz*

参数含义:-q2 走 partclone;-batch 无交互;-sc 跳过备份后的可还原性预检;-sfsck 跳过源 fsck;-z1 gzip;-i 2000 2000MB 分卷;-p true 完成后不做动作。映像产物与元数据清单见《Clonezilla 3.3.3-37 配置参数详解》 5.4 节(实测 1.8 MB 单卷 sdb.ext4-ptcl-img.gz.aa + 8 个元数据文件)。

4.3 restoreparts 还原(实测)

ocs-sr -batch -sc -p true restoreparts sdb-img sdc

实测回显(节选):

Start checking the saved image sdb-img if restorable...
This is not a whole disk image, it is an image for some of partitions, saved from partitions: sdb
The partition to be checked: sdb
Checked successfully.
All the images of partition or LV devices in this image were checked and they are restorable: sdb-img
Target disk sdc does not exist in the image saved from disk(s) "sdb".
Creating a tmp Clonezilla image "sdb-img-tmp-cnvted" based on the image "sdb-img"
so that we can restore the image sdb-img (was saved from sdb) to sdc...

还原后验证(实测):

e2fsck -fy /dev/sdc
mount -o ro /dev/sdc /mnt/restore-check && sha256sum /mnt/restore-check/test1.txt /mnt/restore-check/random.bin
/dev/sdc: 13/76800 files (0.0% non-contiguous), 9115/76800 blocks
f5afa96b0c94f51e26fd65030ac9a16b67d1fe2c32d4c36f3edb726a6ab00235  /mnt/restore-check/test1.txt
934c43f6a2d68fee3466cb3f3ab6a754d5eca354b3555f908a310362be6c00a9  /mnt/restore-check/random.bin

与基准逐字一致。注意"映像源设备名 ≠ 目标设备名"时 ocs-sr 自动生成 *-tmp-cnvted 临时转换映像完成映射,无需手工 cnvt-ocs-dev。

4.4 savedisk / restoredisk(整盘模式,实测要点)

整盘模式在分区备份之外额外保存 MBR 与分区表。实测一次 savedisk 后映像目录(ls /home/partimag/pt-disk/ 真实回显):

Info-dmi.txt  Info-img-id.txt  Info-packages.txt  Info-saved-by-cmd.txt
blkdev.list  blkid.list  clonezilla-img  dev-fs.list  disk  parts
loop28-chs.sf  loop28-mbr  loop28-pt.parted  loop28-pt.parted.compact  loop28-pt.sf

其中 disk/parts 记录盘与分区清单,-mbr 为 512 字节主引导记录,-pt.sf 为 sfdisk 格式分区表,-pt.parted 为 parted 解析结果;restoredisk 前置检查时实测会逐项校验(节选真实回显):

This is a whole disk image, saved from harddrive: loop28
The partition to be checked: loop28p1
Checking the partition table in the image "pt-disk"...
Partition table type: mbr
Checking the MBR in the image "pt-disk"...
MBR file for this disk was found: loop28

整盘模式推荐命令(预期结果,流程与 4.2/4.3 一致,额外重建分区表并回写 MBR):

ocs-sr -q2 -batch -gm -z1 -i 2000 -p true savedisk my-disk sda
ocs-sr -batch -p true restoredisk my-disk sdb

⚠️ 未完整实测标注:本环境的 savedisk 元数据与 restoredisk 校验阶段为实测回显;完整整盘还原闭环(含 MBR 回写后的引导验证)因涉及真实引导硬件未实测,按官方文档整理的预期结果给出。

五、ocs-onthefly:盘对盘直克隆

5.1 语法

ocs-onthefly [OPTION]
-f, --source DEV      源设备
-d, --destination DEV 目标设备

机制:先在 /tmp 生成临时伪映像(内部运行 ocs-sr ... saveparts d2d-pseudo <源>),再立即向目标还原,全程不落永久映像。

5.2 分区直克隆(实测)

ocs-onthefly -batch -nogui -f loop26 -d loop27

实测回显(节选):

WARNING! THE EXISTING DATA IN THIS HARDDISK/PARTITION(S) WILL BE OVERWRITTEN!
ALL EXISTING DATA WILL BE LOST: loop27
Saving the source device as a pseudo image. Running:
This image was saved successfully: d2d-pseudo
Cloning the source device to /dev/loop27. Running:
Ending /usr/sbin/ocs-onthefly at 2026-10-28 04:14:25 UTC...

克隆后验证(实测):

/dev/loop27: 13/76800 files (0.0% non-contiguous), 9115/76800 blocks
f5afa96b0c94f51e26fd65030ac9a16b67d1fe2c32d4c36f3edb726a6ab00235  test1.txt
934c43f6a2d68fee3466cb3f3ab6a754d5eca354b3555f908a310362be6c00a9  random.bin

5.3 整盘直克隆的分区要求(排障实录)

对没有分区表(文件系统直接建在整盘)的源盘执行整盘 onthefly/savedisk,实测失败:

Searching for data/swap/extended partition(s)...
Collecting info. done!
Saving the source device as a pseudo image. Running:
The selected devices: sdd
Searching for data/swap/extended partition(s)...
No input device!
tar: d2d-pseudo/*: Cannot stat: No such file or directory

结论:整盘流程要求源盘有真实分区表;无分区表的整盘文件系统改用 saveparts/restoreparts 或直接 partclone 处理。

5.4 无第二块盘的演练法(真实服务器适用)

只有一块盘时,用回环设备模拟两块盘演练 onthefly(不影响现有数据,取 300MB 小盘即可):

dd if=/dev/zero of=/var/tmp/disk-a.img bs=1M count=300 status=none
dd if=/dev/zero of=/var/tmp/disk-b.img bs=1M count=300 status=none
losetup /dev/loop10 /var/tmp/disk-a.img
losetup /dev/loop11 /var/tmp/disk-b.img
# 之后 f10/disk-a 装测试数据,按 5.2 执行 ocs-onthefly -f loop10 -d loop11

💡 技术拓展:ocs-onthefly 也支持跨机网络克隆(源机与目标机各启动一个端点,走 netcat/nuttcp 传输,--net-filter 控制压缩)。跨机模式需要两台机器协同,本文以本地盘对盘为准;网络批量还原请走 Clonezilla SE(见八、)。

六、ocs-chkimg 与 partclone 校验工具

6.1 ocs-chkimg(实测)

ocs-chkimg -b -nogui sdb-img sdb

实测回显(节选):

The image to be checked: sdb-img
The requested partition(s) to be checked in the image: sdb
This is not a whole disk image, it is an image for some of partitions, saved from partitions: sdb
Checking the partition sdb in the image "sdb-img"...
( for img in /home/partimag/sdb-img/sdb.ext4-ptcl-img.gz.*; do
    cat $img
  done
) | pigz -d -c | LC_ALL=C partclone.chkimg -L /var/log/sdb-img-chk.log  -s -
Partclone v0.3.17 http://partclone.org
Starting to check image (-)
File system:  EXTFS
Device size:  314.6 MB = 76800 Blocks
Space in use:  37.3 MB = 9115 Blocks
Total Time: 00:00:02, Ave. Rate:    1.1GB/min, 100.00% completed!
Partclone successfully checked the image (-)
The image of this partition is restorable: sdb

选项极简:-b 批处理、-nogui 文本进度、-or DIR 指定仓库;IMAGE/DEVICE 用 ask_user 时弹出选择菜单。它自动处理分卷拼接(for img in ...; do cat; done)与解压(pigz -d),日常校验首选。

6.2 partclone.chkimg 单独使用(实测)

分卷是 gzip 流,必须先解压(实测确认):

zcat /home/partimag/sdb-img/sdb.ext4-ptcl-img.gz.aa | partclone.chkimg -d -s -

实测回显(节选):

Partclone v0.3.17 http://partclone.org
Starting to check image (-)
File system:  EXTFS
Device size:  314.6 MB = 76800 Blocks
Space in use:  37.3 MB = 9115 Blocks
Total Time: 00:00:02, Ave. Rate:    1.1GB/min, 100.00% completed!
Partclone successfully checked the image (-)
Checked successfully.

排障实录:不解压直接喂会失败——partclone.chkimg -s - < sdb.ext4-ptcl-img.gz.aa 与 partclone.chkimg -s sdb.ext4-ptcl-img.gz.aa 两种写法实测均报:

Starting to check image (...)
Reading Super Block
This is not partclone image.
Partclone fail, please check /var/log/partclone.log !

另实测 ocs-chkimg -d /home/partimag sdb-img 报 ocs-chkimg: -d: invalid option——ocs-chkimg 没有 -d 指定仓库的选项(仓库用 -or,批处理用 -b)。

6.3 partclone.info(实测)

partclone.info -s /var/tmp/test-save.img

实测回显:

Partclone v0.3.17 http://partclone.org
Showing info of image (/var/tmp/test-save.img)
File system:  EXTFS
Device size:  314.6 MB = 76800 Blocks
Space in use:  37.3 MB = 9115 Blocks
Free Space:   277.2 MB = 67685 Blocks
Block size:   4096 Byte

image format:    0002
created on a:    64 bits platform
with partclone:  v0.3.17
bitmap mode:     BIT
checksum algo:   CRC32
checksum size:   4
blocks/checksum: 256
reseed checksum: yes

七、partclone 工具族:底层克隆引擎

7.1 保存(save)与还原(restore)

# 备份:-c 创建模式,-s 源设备,-o 输出映像,-d 调试输出
umount /dev/sdb
partclone.ext4 -c -d -s /dev/sdb -o /var/tmp/sdb-backup.img

实测回显(进度行节选):

Partclone v0.3.17 http://partclone.org
Starting to clone device (/dev/sdb) to image (/var/tmp/sdb-backup.img)
Reading Super Block
Calculating bitmap... Please wait...
done!
File system:  EXTFS
Device size:  314.6 MB = 76800 Blocks
Space in use:  37.3 MB = 9115 Blocks
Free Space:   277.2 MB = 67685 Blocks
Block size:   4096 Byte
Total Time: 00:00:02, Ave. Rate:    1.1GB/min, 100.00% completed!
Syncing... OK!
Partclone successfully cloned the device (/dev/sdb) to the image (/var/tmp/sdb-backup.img)
Cloned successfully.
# 还原:-r 还原模式,源为映像,-o 目标设备
partclone.ext4 -r -d -s /var/tmp/sdb-backup.img -o /dev/sdc

实测回显(节选):

Starting to restore image (/var/tmp/sdb-backup.img) to device (/dev/sdc)
Reading Super Block
Calculating bitmap... Please wait...
done!
File system:  EXTFS
Device size:  314.6 MB = 76800 Blocks
Space in use:  37.3 MB = 9115 Blocks
Total Time: 00:00:02, Ave. Rate:    1.1GB/min, 100.00% completed!
Syncing... OK!
Partclone successfully restored the image (/var/tmp/sdb-backup.img) to the device (/dev/sdc)
Cloned successfully.

还原盘文件系统检查(实测):e2fsck -fy /dev/sdc → /dev/sdc: 13/76800 files (0.0% non-contiguous), 9115/76800 blocks,挂载后 sha256 与基准一致。

排障实录:源设备未卸载时实测拒绝克隆:

Starting to clone device (/dev/sdb) to image (/var/tmp/sdb-backup.img)
device (/dev/sdb) is mounted at /mnt/src
error exit
Partclone fail, please check /var/log/partclone.log !

处理:umount 后重试。这是保证备份一致性的刻意设计。

7.2 常用参数速查(partclone.ext4 -h 与实测归纳)

参数含义
-cclone 模式(设备→映像)
-rrestore 模式(映像→设备)
-s FILE/DEV源(设备或映像;- 为 stdin)
-o FILE/DEV目标(映像或设备;- 为 stdout)
-d调试信息输出(含进度明细)
-L FILE日志写入文件(默认 /var/log/partclone.log)
-N不进入 ncurses 进度界面
-z SIZE管道模式下的 io 缓冲(ocs-sr 拼管线时用)
-X恢复时启用映像文件随机写(还原到映像文件时)

partclone 按文件系统分为 partclone.ext4/ext3/ext2/xfs/btrfs/f2fs/ntfs/fat/exfat/hfsp/ufs 等二进制;不识别的文件系统由 ocs-sr 自动回退 dd(-q1 强制)。

💡 技术拓展:partclone 与 dd 的本质差异在位图(bitmap)——partclone 先读文件系统位图,只搬运"在用块"(上例 300MB 盘仅搬 37.3MB),并在每个 256 块的分组上做 CRC32 校验(blocks/checksum: 256,见 6.3);dd 则逐扇区整盘复制。备份含大量空闲空间的盘时两者体积可差数十倍。

八、DRBL 服务端命令(可实测项与预期结果)

8.1 drblsrv:安装 DRBL 环境骨架

drblsrv -i    # 交互向导;加 -s 跳过网络内核安装

交互完成后预期:/tftpboot 引导目录生成、PXE 引导文件就位、DHCP/NFS 配置模板写出。命令帮助(drblsrv -h 实测输出节选):支持 -s(跳过内核安装)、-g(GRUB 相关)、-y(默认应答)等。

8.2 drblpush:部署 PXE 客户端环境

drblpush -i    # 交互:选对内网卡 → 确认网段(如 10.89.67.0/24)→ 客户端数量 → 收集 MAC

预期结果(官方文档整理,多机 PXE 部分未实测):为每个客户端生成 /tftpboot/nodes/<IP>/ 配置树,写出 DHCP 分配池与 PXE 菜单(/tftpboot/nbi_img/pxelinux.cfg/default),随后客户端从 LAN PXE 启动进入 Clonezilla 菜单。客户端 IP 与主机名映射用 /etc/drbl/client-ip-hostname.example 样例格式写入 client-ip-hostname。

8.3 prep-ocsroot:准备映像仓库

prep-ocsroot    # 按配置把 ocsroot(默认 /home/partimag)以 NFS 导出/挂载,供客户端读取映像

帮助实测输出(节选):支持 -m off|nfs|samba 选择仓库共享方式;SE 批量还原前在服务端执行一次即可。

⚠️ 未实测标注:8.1~8.3 的多机 PXE 引导、批量分发还原需真实 PXE 客户机与专用交换网段,本系列未实测;命令存在性、帮助输出与 /etc/drbl/*.conf 配置面均为 apt 安装后实测确认。

九、注意事项

  1. 设备枚举与缓存:ocs 系列在 /tmp/ocs-cache/ 缓存设备清单;热插拔或改分区后实测会报 Unable to find target hard drive: "xxx"!!!,清缓存重跑即可:rm -rf /tmp/ocs-cache。
  2. 分区表是整盘流程的前提:savedisk/onthefly 整盘模式要求源盘有合法分区表(见 5.3),parted 缺失时会把分区表误判为非法(见《Ubuntu 22.04 安装 Clonezilla 3.3.3-37 指南》 5.3 节排障实录)。
  3. 目标盘容量:还原默认要求目标盘 ≥ 源盘;不同规格盘还原用 -k1 -r,跳过检查用 -icds(可能截断数据,慎用)。
  4. -batch 的破坏性:所有交互确认都会被跳过,目标盘数据直接覆盖;脚本务必先在设备名上做过 lsblk 核对再上 -batch。
  5. 映像权限:ocs-sr 完成后把分卷改为 600(实测回显 Change mode to 600),共享仓库读取需 -noabo 或手工放宽。
  6. 无 udev 的最小化环境:ocs-sr 经 /proc/partitions + sysfs 发现设备后按 /dev/<名字> 打开设备,需保证设备节点存在且与内核名一致;在无 udev 的救援/最小化环境中手工 mknod 后若再触发分区激活(partprobe 类操作),节点 minor 可能重排,需按 /sys/block/*/*/dev 当前值重建节点。

十、常见问题

Q1:ocs-sr 运行到一半 "Is the disk full ?"? 仓库分区剩余空间不足。partclone 只存已用块,但映像仍可能大于预期(压缩前体积≈已用块总量);换更大仓库或提高压缩等级(-z9p)。

Q2:还原后文件校验不一致? 三查:① 源盘在备份时是否仍被写入(备份前卸载/只读挂载);② 映像分卷是否齐全(.aa/.ab/... 连续无缺);③ 是否跳过了 CRC(-icrc)。可用 6.2 的 chkimg 全量校验定位坏卷。

Q3:partclone 报 "Couldn't find valid filesystem superblock"? -s 指向的设备上没有该文件系统类型的有效超级块——通常是设备名指错(指向了空分区/别的盘)或用了不匹配的 partclone.<fs>(如对 xfs 分区跑了 partclone.ext4)。

Q4:ocs-onthefly 与 ocs-sr 的关系? onthefly 内部就是"saveparts 到 /tmp 伪映像 + 立即 restoreparts",所以两边的参数(压缩、校验、几何修正)语义一致;排障时可把 onthefly 日志中的 Running: 行复制出来单独执行。

Q5:能看到 ocs-sr 实际执行了什么底层命令吗? 能:-batch 模式日志直接打印 Running: 行(4.2 节实测回显即含完整管线);partclone 自身日志在 /var/log/partclone.log。

十一、参考链接

  1. Clonezilla Live 使用文档:https://clonezilla.org/clonezilla-usage/clonezilla-live-usage.php(查询日期 2026-10-28)
  2. partclone 项目:http://partclone.org(查询日期 2026-10-28)
  3. DRBL 文档:http://drbl.org(查询日期 2026-10-28)
  4. 站内系列:《Clonezilla 介绍与选型指南》、《Ubuntu 22.04 安装 Clonezilla 3.3.3-37 指南》、《Clonezilla 3.3.3-37 配置参数详解》