Clonezilla 3.3.3-37 常用 CLI 命令与工具详解
Clonezilla 3.3.3-37 常用 CLI 命令与工具详解:ocs-sr(saveparts/restoreparts)、ocs-onthefly 盘对盘、ocs-chkimg 映像校验与 partclone 工具族逐条实测并附真实回显,备份/还原/校验/盘对盘四条闭环均以 sha256 验证一致。
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 ...);理解这层关系后,排障时就能分清是"编排问题"还是"引擎问题"。
三、前置条件
- 已按《Ubuntu 22.04 安装 Clonezilla 3.3.3-37 指南》完成安装(含补装 parted/cryptsetup);
- 映像仓库就绪:
mkdir -p /home/partimag; - 源盘未挂载(partclone 拒绝克隆已挂载设备,见 9.1);
- 终端 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 与实测归纳)
| 参数 | 含义 |
|---|---|
-c | clone 模式(设备→映像) |
-r | restore 模式(映像→设备) |
-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 安装后实测确认。
九、注意事项
- 设备枚举与缓存:ocs 系列在
/tmp/ocs-cache/缓存设备清单;热插拔或改分区后实测会报Unable to find target hard drive: "xxx"!!!,清缓存重跑即可:rm -rf /tmp/ocs-cache。 - 分区表是整盘流程的前提:savedisk/onthefly 整盘模式要求源盘有合法分区表(见 5.3),parted 缺失时会把分区表误判为非法(见《Ubuntu 22.04 安装 Clonezilla 3.3.3-37 指南》 5.3 节排障实录)。
- 目标盘容量:还原默认要求目标盘 ≥ 源盘;不同规格盘还原用
-k1 -r,跳过检查用-icds(可能截断数据,慎用)。 -batch的破坏性:所有交互确认都会被跳过,目标盘数据直接覆盖;脚本务必先在设备名上做过lsblk核对再上-batch。- 映像权限:ocs-sr 完成后把分卷改为 600(实测回显
Change mode to 600),共享仓库读取需-noabo或手工放宽。 - 无 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。
十一、参考链接
- Clonezilla Live 使用文档:https://clonezilla.org/clonezilla-usage/clonezilla-live-usage.php(查询日期 2026-10-28)
- partclone 项目:http://partclone.org(查询日期 2026-10-28)
- DRBL 文档:http://drbl.org(查询日期 2026-10-28)
- 站内系列:《Clonezilla 介绍与选型指南》、《Ubuntu 22.04 安装 Clonezilla 3.3.3-37 指南》、《Clonezilla 3.3.3-37 配置参数详解》