如何通过partclone克隆Ubuntu 22系统
如何通过partclone克隆Ubuntu 22系统
- 一. 背景知识:为什么要克隆系统?
- 二. 准备工作详解
- 2.1 选择工具:为什么是partclone?
- 2.2 制作定制化ISO的深层原因
- 三. 详细操作步骤
- 3.1 环境准备阶段
- 3.2 ISO改造关键步骤
- 3.3 启动到Live环境
- 3.4 备份操作全解析
- 3.5 还原操作要点
- 四. 常见问题排查
- 4.1 克隆后无法启动?
- 4.2 出现共享库错误?
- 五. 进阶技巧
- 5.1 网络备份方案
- 5.2 增量备份配置
- 六. 安全注意事项
一. 背景知识:为什么要克隆系统?
当我们在工作中遇到以下场景时:
- 两台硬件配置完全相同的服务器(如CPU/内存/硬盘型号一致)
- 其中一台(服务器A)性能表现明显优于另一台(服务器B)
- 经过初步排查无法定位性能差异的根源
这时可以通过全盘克隆的方式,将性能优秀服务器的系统完整复制到另一台。这样可以直接继承:
- 已验证稳定的内核参数配置
- 优化过的系统服务设置
- 特定版本的软件环境
- 经过调优的文件系统参数
💡 系统克隆 vs 重装系统
相比重新安装系统,克隆可以保留所有个性化配置和运行环境,特别适合已经部署复杂应用的场景
二. 准备工作详解
2.1 选择工具:为什么是partclone?
partclone是Linux下专业的磁盘克隆工具,相比dd命令具有显著优势:
功能对比 | partclone | dd命令 |
---|---|---|
克隆速度 | 只复制有效数据块 | 全盘逐字节复制 |
空间占用 | 备份文件较小 | 等于分区容量 |
文件系统支持 | ext4/xfs/btrfs等 | 与文件系统无关 |
恢复可靠性 | 完整性校验 | 无校验机制 |
2.2 制作定制化ISO的深层原因
虽然Ubuntu官方ISO已包含基础工具,但需要定制化处理是因为:
- Live环境限制:默认ISO不包含partclone及其依赖库
- 依赖库完整性:不同版本系统的动态库可能存在兼容性问题
- 操作便利性:预置工具包可避免每次手动安装
三. 详细操作步骤
3.1 环境准备阶段
# 在任意Ubuntu 22.04.5系统上执行
sudo apt update
sudo apt install partclone -y# 验证依赖库(关键步骤!)
ldd /usr/sbin/partclone.ext4 | grep "not found"
ldd /usr/sbin/partclone.vfat | grep "not found"
# 必须确保没有"not found"提示,否则克隆时会报错# 创建工具目录
mkdir partclone_tools
cp /usr/sbin/partclone.* partclone_tools/# 自动收集所有依赖库(重点!)
mkdir -p partclone_tools/libs
for f in partclone_tools/partclone.*; doldd $f | grep "=>" | awk '{print $3}' | xargs -I {} cp {} partclone_tools/libs/
done
3.2 ISO改造关键步骤
- 使用UltraISO打开原始ISO文件
- 右键菜单 -> 新建文件夹
/partclone_env
- 将准备好的工具目录拖放至ISO根目录
- 必须选择"优化文件"选项保存ISO(保持ISO9660格式兼容性)
⚠️ 注意事项
- Windows环境下操作需以管理员身份运行UltraISO
- 保存后建议校验ISO可启动性(可用VirtualBox测试)
3.3 启动到Live环境
通过BMC控制台挂载ISO并重启服务器:
- 进入BMC的远程控制界面
- 选择虚拟介质 -> 挂载修改后的ISO
- 设置一次性启动项选择光盘启动
- 重启后看到Ubuntu安装界面时:
- 右上角选择 [Help] -> Enter shell
- 此时进入的是临时内存系统,原硬盘未被挂载
3.4 备份操作全解析
cd /cdrom/partclone_env# 设置动态库路径(关键环境变量!)
export LD_LIBRARY_PATH=$PWD/libs# 查看磁盘分区情况(重要!)
lsblk -f
# 示例输出:
# sda
# ├─sda1 vfat ESP分区(存放GRUB)
# ├─sda2 ext4 /boot目录
# ├─sda3 swap 交换分区
# └─sda4 ext4 根文件系统# 开始备份(注意替换实际分区号)
mkdir /backup
./partclone.ext4 -c -s /dev/sda4 -o /backup/sda4.img -N
./partclone.ext4 -c -s /dev/sda2 -o /backup/sda2.img -N
./partclone.vfat -c -s /dev/sda1 -o /backup/sda1.img -N# 验证备份文件
ls -lh /backup/*.img
# 正常应显示类似:
# -rw-r--r-- 1 root root 12G Jan 1 00:00 sda4.img
参数说明:
-c
:创建备份(create)-s
:源设备(source)-o
:输出文件(output)-N
:显示进度条(需要终端支持)
3.5 还原操作要点
在目标服务器上执行:
# 先确认目标磁盘路径!
lsblk -f
# 假设目标磁盘是sdb# 执行还原(危险操作!)
./partclone.ext4 -r -s /backup/sda4.img -o /dev/sda4
./partclone.ext4 -r -s /backup/sda2.img -o /dev/sda2
./partclone.vfat -r -s /backup/sda1.img -o /dev/sda1
exit
四. 常见问题排查
4.1 克隆后无法启动?
- 检查项:
- 确认分区表类型(MBR/GPT)一致
- 验证EFI分区是否正确还原
- 检查
/etc/fstab
中的UUID是否更新
- 修复方法:
# 在Live环境中执行 sudo blkid # 获取新分区的UUID vi /mnt/etc/fstab # 替换旧UUID
4.2 出现共享库错误?
# 错误示例:
error while loading shared libraries: libuuid.so.1: cannot open shared object file
解决方案:
- 检查
LD_LIBRARY_PATH
是否设置正确 - 确认libs目录包含所有依赖库
- 使用
ldd
命令验证可执行文件依赖
五. 进阶技巧
5.1 网络备份方案
对于大容量硬盘,推荐使用网络存储:
# 在Live环境中配置网络
ip a # 查看网卡名称
dhclient enp0s3# 挂载NFS共享
mkdir /nfs
mount -t nfs 192.168.1.100:/backup /nfs# 直接备份到网络存储
./partclone.ext4 -c -s /dev/sda4 -o /nfs/sda4.img
5.2 增量备份配置
使用partclone+rsync实现增量备份:
# 首次完整备份
./partclone.ext4 -c -s /dev/sda4 -o base.img# 后续增量备份
rsync -c --compare-dest=base.img /dev/sda4 delta.img
六. 安全注意事项
- 操作前必须备份重要数据
- 建议在非业务时段进行操作
- 克隆完成后立即修改网络配置,避免IP冲突
- 检查SSH密钥等敏感信息的唯一性
- 更新系统许可证(如有)
相关文章:
如何通过partclone克隆Ubuntu 22系统
如何通过partclone克隆Ubuntu 22系统 一. 背景知识:为什么要克隆系统?二. 准备工作详解2.1 选择工具:为什么是partclone?2.2 制作定制化ISO的深层原因 三. 详细操作步骤3.1 环境准备阶段3.2 ISO改造关键步骤3.3 启动到Live环境3.4…...
语义化路径是什么意思,举例说明
下面的java代码输出结果是/a/b/../c/./a.txt/a/c/a.txt,语义化路径是什么意思呢?代码如下所示: import org.springframework.util.StringUtils; public class StringUtilsTest { /** 字符串处理 */ Test public void …...
Dockerfile构建镜像
Dockerfile 构建镜像 # 使用本地已下载的 java:8-alpine 镜像作为基础镜像 FROM java:8-alpine# 设置工作目录 WORKDIR /home/www/shop# 复制 JAR 文件到容器中 COPY ./fkshop-build.jar /home/www/shop/fkshop-build.jar# 复制配置文件(如果需要) COPY…...
vue3.0的name属性插件——vite-plugin-vue-setup-extend
安装 这个由于是在开发环境下的一个插件 帮助我们支持name属性 所以需要是-D npm i vite-plugin-vue-setup-extend -D在pasckjson中无法注释每个插件的用处 可以在vscode中下载一个JsonComments这样可以在json中添加注释方便日后维护和查阅API 引入 在vite.config.js中 im…...
gRPC为什么高性能
gRPC 之所以具备高性能的特性,主要得益于其底层设计中的多项关键技术优化。以下从协议、序列化、传输机制、并发模型等方面详细解析其高性能的原因: 1. 基于 HTTP/2 协议的核心优势 HTTP/2 是 gRPC 的传输基础,相较于 HTTP/1.x,它通过以下机制显著提升了效率: 多路复用(…...
进度管理高分论文
2022年,xx县开展紧密型县域医共体建设,将全县县、镇两级医疗机构组建成2家医共体,要求医共体内部实行行政、人员、财务、业务、信息、绩效、药械“七统一”管理。但是卫生系统整体信息化水平较低,业务系统互不相通,运营…...
每日算法刷题计划Day7 5.15:leetcode滑动窗口4道题,用时1h
一.定长滑动窗口 【套路】教你解决定长滑窗!适用于所有定长滑窗题目! 模版套路 1.题目描述 1.计算所有长度恰好为 k 的子串中,最多可以包含多少个元音字母 2.找出平均数最大且 长度为 k 的连续子数组,并输出该最大平均数。 3.…...
C++核心编程--1 内存分区模型
C程序执行时,内存可以划分为4部分 代码区:存放函数体的二进制代码 全局区:存放全局变量、静态变量、常量 栈区:局部变量、函数参数值,编译器自动分配和释放 堆区:程序员自己分配和释放 1.1 程序运行前…...
产品更新丨谷云科技 iPaaS 集成平台 V7.5 版本发布
五月,谷云科技 iPaaS 集成平台保持月度更新, V7.5 版本于近日正式发布。我们一起来看看新版本有哪些升级和优化。 核心新增功能:深化API治理,释放连接价值 API网关:全链路可控,精准管控业务状态 业务状态…...
【AI论文】对抗性后期训练快速文本到音频生成
摘要:文本到音频系统虽然性能不断提高,但在推理时速度很慢,因此对于许多创意应用来说,它们的延迟是不切实际的。 我们提出了对抗相对对比(ARC)后训练,这是第一个不基于蒸馏的扩散/流模型的对抗加…...
欧拉计划 Project Euler 73(分数有范围计数)题解
欧拉计划 Project Euler 73 题解 题干分数有范围计数 思路code 题干 分数有范围计数 考虑形如 n d \frac{n}{d} dn的分数,其中 n n n和 d d d均为正整数。如果 n < d n<d n<d且其最大公约数为1,则称该分数为最简真分数。 将所有 d ≤ 8 d\l…...
Quic如何实现udp可靠传输
QUIC(Quick UDP Internet Connections)是由 Google 设计并被 IETF 标准化的传输层协议,它基于 UDP 实现,但提供了类似 TCP 的可靠性和更高级的功能(如多路复用、0-RTT 握手、TLS 加密等)。 尽管 UDP 是不可…...
本地文件操作 MCP (多通道处理) 使用案例
## 概述 文件操作 MCP (Multi-Channel Processing) 是一种用于高效处理本地文件的框架和库,它提供了并行处理、批量操作、监控和异常处理等功能。通过多通道架构,MCP 能够显著提高大规模文件操作的效率,特别适用于需要处理大量文件或大型文件…...
Blender 入门教程(三):骨骼绑定
一、前言 不知道大家有没有玩过一些单机游戏的 Mod,比如《侠盗猎车》里主角变成奥特曼,各种新能源汽车乱入等等。 这些都是别人对原有模型就行修改换皮,并重新绑定骨骼完成的,所以如果会了骨骼绑定后,你也就可以自己…...
Java 异常处理之 BufferOverflowException(BufferOverflowException 概述、常见发生场景、避免策略)
一、BufferOverflowException 概述 BufferOverflowException 是 Java NIO 包中的一个运行时异常,是 RuntimeException 的子类 public class BufferOverflowException extends RuntimeException {... }# 继承关系java.lang.Object-> java.lang.Throwable-> j…...
密码学实验:凯撒密码
密码学实验:凯撒密码 一、实验目的 掌握凯撒密码的数学原理:理解字符移位与模运算的结合,实现加解密算法。理解暴力破解本质:通过穷举有限密钥空间,掌握利用语言特征破解密文的方法。编程实践:用Python实…...
C40-指针
一 指针的引入 什么是指针:指针是一个变量,其值是另一个变量的内存地址 简单的使用地址输出一个变量: 代码示例 #include <stdio.h> int main() {int a10;printf("a的地址是:%p\n",&a);printf("a%d\n",*(&a)); //*号是取值运算符…...
Cloudflare防火墙拦截谷歌爬虫|导致收录失败怎么解决?
许多站长发现网站突然从谷歌搜索结果中“消失”,背后很可能是Cloudflare防火墙误拦截了谷歌爬虫(Googlebot),导致搜索引擎无法正常抓取页面。 由于Cloudflare默认的防护规则较为严格,尤其是针对高频访问的爬虫IP&…...
3.3 掌握RDD分区
本实战任务旨在掌握Spark RDD 的分区操作,包括理解 RDD 分区的概念、作用、分区数量的确定原则以及如何通过自定义分区器来优化数据处理。通过创建一个 Maven 项目并编写 Scala 代码,实现了一个自定义的科目分区器 SubjectPartitioner,该分区…...
以项目的方式学QT开发(二)——超详细讲解(120000多字详细讲解,涵盖qt大量知识)逐步更新!
API 描述 函数原型 参数说明 push_back() 在 list 尾部 添加一个元素 void push_back(const T& value); value :要添 加到尾部的元 素 这个示例演示了如何创建 std::list 容器,并对其进行插入、删除和迭代操作。在实际应用中&am…...
linux备份与同步工具rsync
版权声明:原创作品,请勿转载! 文章目录 版权声明:原创作品,请勿转载! 实验环境介绍: 1.工具介绍 2.详细介绍 2.1 本地模式(用得少) 2.2 远程模式 2.3 守护进程模式…...
Ascend的aclgraph(九)AclConcreteGraph:e2e执行aclgraph
1回顾 前面的几章内容探讨了aclgraph运行过程中的涉及到的关键模块和技术。本章节将前面涉及到的模块串联起来,对aclgraph形成一个端到端的了解。 先给出端到端运行的代码,如下: import torch import torch_npu import torchair import log…...
2025 OceanBase 开发者大会全议程指南
5 月 17 日,第三届 OceanBase 开发者大会将在广州举办。 我们邀请数据库领军者与AI实践先锋,与开发者一起探讨数据库与 AI 协同创新的技术趋势,面对面交流 OceanBase 在 TP、AP、KV 及 AI 能力上的最新进展,深度体验“打破技术栈…...
【深度学习之四】知识蒸馏综述提炼
知识蒸馏综述提炼 目录 知识蒸馏综述提炼 前言 参考文献 一、什么是知识蒸馏? 二、为什么要知识蒸馏? 三、一点点理论 四、知识蒸馏代码 总结 前言 知识蒸馏作为一种新兴的、通用的模型压缩和迁移学习架构,在最近几年展现出蓬勃的活力…...
Java大师成长计划之第23天:Spring生态与微服务架构之服务发现与注册中心
📢 友情提示: 本文由银河易创AI(https://ai.eaigx.com)平台gpt-4-turbo模型辅助创作完成,旨在提供灵感参考与技术分享,文中关键数据、代码与结论建议通过官方渠道验证。 在微服务架构中,服务发现…...
list简单模拟实现
成员变量迭代器(重点)ListIterator运算符重载begin、end 插入、删除inserterase头插、尾插、头删、尾删 operator->const_iterator拷贝构造operator析构函数完整代码 由于前面已经模拟实现了vector,所以这里关于一些函数实现就不会讲的过于…...
undefined reference to `typeinfo for DeviceAllocator‘
出现“undefined reference to typeinfo”链接错误的原因及解决方法如下: class DeviceAllocator { public:explicit DeviceAllocator(DeviceType device_type){};virtual void* allocate(size_t n) 0;virtual void deallocate(void* p) 0;~DeviceAllocator() d…...
动态规划问题 -- 多状态模型(买股票的最佳时机II)
目录 动态规划分析问题五步曲题目概述利用状态机推导状态转移方程式代码编写 动态规划分析问题五步曲 不清楚动态规划分析问题是哪关键的五步的少年们可以移步到 链接: 动态规划算法基础 这篇文章非常详细的介绍了动态规划算法是如何分析和解决问题的 题目概述 链接: 买股票的最…...
【落羽的落羽 C++】进一步认识模板
文章目录 一、非类型模板参数二、模板的特化1. 函数模板特化2. 类模板特化 三、模板的编译分离 一、非类型模板参数 模板参数可以分为类型参数和非类型参数。我们之前使用的都是类型参数,即出现在模板参数列表中,跟在class或typename之类的参数类型名称…...
Java爬虫能处理京东商品数据吗?
Java爬虫完全可以处理京东商品数据。通过Java爬虫技术,可以高效地获取京东商品的详细信息,包括商品名称、价格、图片、描述等。这些信息对于市场分析、选品上架、库存管理和价格策略制定等方面具有重要价值。以下是一个完整的Java爬虫示例,展…...
#跟着若城学鸿蒙# web篇-初探
前言 先看下官方介绍,这里总结了比较重要的几点Web组件基础:加载与渲染网页全面解析Web组件是现代应用开发中不可或缺的重要元素,它允许开发者在原生应用中无缝集成Web内容。本文将全面介绍Web组件的基本功能,包括多种内容加载方…...
Top-p采样:解锁语言模型的创意之门
Top - p采样 是什么:核采样:排序,累计到0.7,随机选择 在自然语言生成和大规模语言模型推理中,Top - p采样(又叫核采样,Nucleus Sampling)是一种基于累积概率的采样策略。 Top - p介…...
周赛好题推荐
这周周赛很有质量的,上了一个很有意思的数学题目,推了半天..... 给定一个区间[l,r],求出区间内所有满足x mod 2^i !k的所有正整数(最后全部进行异或) 首先我们不妨先算出[l,r]区间所有数字的异或,然后在算…...
【RabbitMQ】实现RPC通信的完整指南
文章目录 RPC 通信创建相关队列客户端代码声明队列发送请求接收响应完整代码 服务端代码设置同时只能获取一个消息接收消息完整代码 运行程序启动客户端启动服务端 RPC 通信 RPC (Remote Procedure Call), 即远过程调用。它是一种通过网络从远程计算机上请求服务,而…...
CK3588下安装linuxdeployqt qt6 arm64
参考资料: Linux —— linuxdeployqt源码编译与打包(含出错解决) linux cp指令报错:cp: -r not specified; cp: omitting directory ‘xxx‘(需要加-r递归拷贝) CMake Error at /usr/lib/x86_64…...
滑动窗口之二(优先队列)
原本滑动窗口的板子用的是数组和双指针模拟,我嫌麻烦还不好懂找了双端队列。但其实还是不太好使,比如今天的这道题就处理起来很麻烦。但是如果用优先队列的话就可以一直保证整个窗口是有序的,只需判断一下是否在窗口内即可。但是!…...
小刚说C语言刷题—1088求两个数M和N的最大公约数
1.题目描述 求两个正整数 M 和 N 的最大公约数(M,N都在长整型范围内) .输入 输入一行,包括两个正整数。 输出 输出只有一行,包括1个正整数。 样例 输入 45 60 输出 15 2.参考代码(C语言版) #include <stdio.h> …...
pytorch训练可视化工具---TensorBoard
一、目的:为什么使用 TensorBoard 调控模型 使用 TensorBoard 可以帮我们: 实时查看 loss / acc 曲线 → 判断是否过拟合、欠拟合; 对比不同模型或超参数的效果; 可视化模型结构 → 帮助调试模型设计; 查看权重/梯…...
丝杆升降机限位失灵深度剖析:从故障机理到智能监测方案
在工业自动化与精密机械传动领域,丝杆升降机凭借高精度、大推力的特性,成为产线设备的核心执行部件。然而,限位系统的可靠性直接决定设备安全运行与生产连续性。本文将从技术原理、故障诊断到智能监测方案,系统性解析丝杆升降机限…...
系统集成项目管理工程师学习笔记
第九章 项目管理概论 1、项目基本要素 项目基础 项目是为创造独特的产品、服务或成果而进行的临时性工作。 项目具有临时性、独特性、渐进明细的特点。项目的“临时性”是指项目只有明确的起点和终点。“临时性”并一定意味着项目的持续时间短。 项目可宣告结束的情况&…...
RDD的自定义分区器-案例
对电商订单数据进行处理,订单数据包含用户 ID 和订单金额,不同地区的用户有不同的 ID 范围。我们会按照地区对订单数据进行分区,这样做能让相同地区的订单数据处于同一分区,便于后续按地区进行统计金额分析。 订单数据如下&#x…...
牛客网NC231954:斐波那契数列 (简单的数列问题)
牛客网NC231954:斐波那契数列 (简单的数列问题) 题目描述 本题要求我们计算斐波那契数列的第n项,斐波那契数列定义如下: f(1) 1f(2) 1f(n) f(n-1) f(n-2),当n ≥ 3 给定整数n,求f(n)的值。 算法思路 斐波那契…...
中国近代史3
辛亥革命 1.同盟会:建立 1905年,东京,第一个全国性的资产阶级革命政党;同盟会纲领“驱除鞑虏,恢复中华,建立民国,平均地权” “民族”“民生”“民权” 2.武昌起义 ①爆发:1911.10…...
晶振的核心参数
目录 1.简介 2.晶振核心参数详解 3.晶振的抖动(jitter) 4.抖动的三种测量方式 5.抖动的其他资料 1.简介 再看一些晶振的手册时,经常遇到一些类似或相近的参数,今天借此机会,做一个小姐。 2.晶振核心参数详解 1…...
北京孙河傲云源墅:限量典藏的主城墅居臻品
在限墅令的背景下,北京主城的墅居产品日益稀缺,而傲云源墅作为孙河墅区的杰出之作,凭借其独特的价值,成为了众多高端置业者的理想选择。 傲云源墅所处的孙河地区,是北京公认的高价值板块。其地位在 2025 年孙河 2902 …...
驱动-Linux定时-timer_list
了解内核定时相关基础知识 文章目录 简要介绍timer_list 特点API 函数实验测试程序 - timer_mod.c编译文件-Makefile实验验证 注意事项总结 简要介绍 硬件为内核提供了一个系统定时器来计算流逝的时间(即基于未来时间点的计时方式, 以当前时刻为计时开始…...
从理论到实战:模糊逻辑算法的深度解析与应用实践
从理论到实战:模糊逻辑算法的深度解析与应用实践 一、模糊逻辑的核心概念与数学基础 模糊逻辑(Fuzzy Logic)是一种处理不确定性的数学工具,其核心思想是将传统布尔逻辑的“非黑即白”扩展为连续的隶属度函数。例如,在…...
涨薪技术|0到1学会性能测试第65课-SQL捕获阻塞事件
前面的推文我们掌握了JVM调优技术。今天给大家分享MS SQL数据库监控与调优技术。后续文章都会系统分享干货,带大家从0到1学会性能测试。 01SQL捕获阻塞事件 在SQL Server 2005之前的版本,分析哪些进程产生阻塞以及哪些进程被阻塞,都需要使用脚…...
SQL实战:06交叉日期打折问题求解
文章目录 概述题目:交叉打折问题求解题解第一步:使用滑动窗口统计当前活动前的最大结束日期步骤二:拆分出交叉部分步骤三:计算每次活动的持续天数步骤四:分组统计最终结果完整SQL 概述 最近刷题时遇到一些比较有意思的…...
Linux云计算训练营笔记day09(MySQL数据库)
Linux云计算训练营笔记day09(MySQL数据库) 目录 Linux云计算训练营笔记day09(MySQL数据库)外键约束数据的导入和导出数据的导出数据的导入 DQL 数据查询语言查指定字段查所有字段where 过滤条件and 和 orin 和 not inbetween...an…...