【原创】如何备份和还原Ubuntu系统,非常详细!!
前言
我在虚拟机装了一个xfce4的Ubuntu桌面版,外加输入法、IDEA等,我想将这个虚拟机里的系统直接搬到物理机中,那我可以省的再重新装一遍、配置xfce4桌面、修改一堆快捷键还有配置idea了,那直接说干就干。
本教程基于Ubuntu24.04,其他版本可能存在区别,本教程只对该版本负责,谢谢理解!
操作比较
Ubuntu还原系统不能说和Windows完全一样,那也能说是大差不差了,我来做个比较大家就清楚了:
【PE系统】Windows:Windows PE(Windows自带的,还有各种第三方PE)。Ubuntu:Ubuntu Live CD(就是Ubuntu桌面版本的那个ISO镜像,不要使用服务器版本的Ubuntu镜像,它的PE没有桌面)
【PE引导工具】都是Ventoy,没错!Ventoy可以引导Ubuntu安装镜像
【系统备份工具】Windows:Dism++,将系统打包为wim包。Ubuntu:tar命令直接将整个系统打成tar包
【系统还原工具】Windows:Dism++,释放wim包到C盘。Ubuntu:tar命令直接解压
【分区工具】Windows:DiskGenius或者其他分区工具。Ubuntu:gparted(推荐)或者fdisk
【引导】都推荐使用UEFI引导
【引导恢复工具】Windows:Dism++。Ubuntu:grub-install命令
可以看见Windows备份还原基本都依靠Dism++解决,而Ubuntu用的软件就比较零碎了,但是Ubuntu的好处是:你可以将这些命令全部写在一个sh文件里,到时候直接执行即可,甚至比你用Windows还要省事。
说明
由于我物理机已经还原成功了,我懒得再装一遍,因此本教程还是采用VMware Workstation虚拟机演示,当然做法和物理机差不多。我保证本篇博客是我从头开始做起,边操作边截图的,能和大家的操作保持一致。
备份系统
先给大家展示一下我改了好久的Ubuntu使用的xfce桌面,体验基本和Windows差不多了,半透明的“任务栏”逼格还是挺高的
创建备份目录
开始正题,在桌面右键打开终端,在根目录创建备份系统的文件夹
su
cd /
mkdir backup
cd backup
创建exclude.txt
创建一个文件,填入需要排除的目录,特别是这个backup目录,不然tar命令就递归了,你永远不可能将这个系统压缩完。其中swap.img是虚拟内存,这个也不需要放到系统压缩包中。如果其他有不需要备份的文件也可以一起echo到这个exclude.txt中,这比Dism++直接打wim包自由多了
echo "/proc" > exclude.txt
echo "/sys" >> exclude.txt
echo "/tmp" >> exclude.txt
echo "/run" >> exclude.txt
echo "/mnt" >> exclude.txt
echo "/media" >> exclude.txt
echo "/backup" >> exclude.txt
echo "/lost+found" >> exclude.txt
echo "/swap.img" >> exclude.txt
打包整个系统
然后就是备份系统的核心步骤:
tar --exclude-from=exclude.txt -czpvf /backup/system_backup.tar.gz /
将整个根目录都打包进tar包中,这一步可能耗时比较漫长,主要看你的系统里有多少文件,你的CPU和硬盘快不快了
取出tar包
打包完了,然后将这个system_backup.tar.gz从虚拟机里传输出来,这个应该不用教吧……直接用SFTP连接就能拿出来了
将这个system_backup.tar.gz拷贝到非PE的U盘中,且这个U盘建议格式化为exfat,而不是ntfs,就像这样:
还原系统
准备材料
1、桌面版本的Ubuntu ISO镜像
2、U盘1,带有Ventoy引导的U盘
3、U盘2,exFAT分区,包含system_backup.tar.gz
4、需要还原系统的电脑,且主板引导设置为UEFI
由于我物理机已经还原好了,后续我全部使用虚拟机进行演示了
插上U盘
物理机包括带有Ventoy的U盘和带有系统tar包的U盘。
虚拟机需要挂载物理磁盘
由于我电脑的硬盘比较多,U盘都排到5了,大家根据自己的情况选择盘,可以使用下面的“使用单个分区”+下一步,检查该盘是否为你的U盘
设置UEFI引导
虚拟机也要使用UEFI引导(该步物理机需要在主板中设置引导为UEFI而不是BIOS)
U盘启动
将Ubuntu ISO镜像复制到Ventoy分区的根目录中,设置U盘启动顺序为UEFI引导的U盘为第一位,从U盘启动。
进入Ubuntu PE
进入Ventoy界面后,选择Ubuntu镜像进入Ubuntu PE系统
虚拟机需要使用ISO镜像文件
虚拟机还要关闭“显示器”中的3D加速,否则Ubuntu PE显示会有问题
后续物理机和虚拟机操作都一样了
选择进入Ubuntu PE
Try Ubuntu
注意,前面几步都能直接next,而这一步必须选择Try Ubuntu,因为你是还原系统,而不是真的去安装这个系统
查看分区
首先最重要的就是查看当前分区情况,在Ubuntu PE桌面打开终端,执行
lsblk
其中14.5G的是我的U盘,sdb是我未分区的磁盘,如果是Ventoy,还会出现Ventoy自己的分区。
新磁盘分区
使用gparted,对新磁盘进行分区操作,直接桌面打开终端输入gparted即可,并选择需要分区的磁盘
创建分区表
对于目前还没有分区表的磁盘来说第一步就是要创建分区表,如果已经有的可以省略该步
选择gpt分区表
创建efi分区
我之前踩坑失败了好几次就是因为没有分这个efi分区,导致系统引导失败
推荐efi分区大小为300MB,文件系统为fat32,分区名可选,这跟拿DiskGenius在Windows中分区是一模一样的
创建系统主分区
我这人喜欢把整个盘都当主分区用,直接将省下的磁盘空间都分完,默认即可
完成新磁盘分区
点击绿色的√即可完成分区操作
查看分区
目前sdb1为efi分区,sdb2为系统分区
挂载U盘
/dev/sda1为我的U盘分区,大家挂载的时候注意看一下,别挂错了
# 进入root模式
sudo su
cd /
mkdir up
# 看清分区,挂载的是带有系统tar包U盘的分区
mount /dev/sda1 /up
cd /up
ls
执行效果如下:
挂载系统分区和efi分区
目前我将整个磁盘都挂载到/mnt目录下,efi挂载到/mnt/boot/efi下
mount /dev/sdb2 /mnt
mkdir -p /mnt/boot/efi
mount /dev/sdb1 /mnt/boot/efi
还原系统
本篇的重头戏终于到了,终于能还原整个系统了,使用tar命令还原
cd /up
tar zxvf system_backup.tar.gz -C /mnt
当然这步耗时也很长,需要耐心等待
补上缺失的目录
这步必须要加,不然系统可真就起不来啊!!我当时装被坑了好几次,一个个补啊😭😭
cd /mnt
mkdir sys
mkdir proc
mkdir run
建完之后/mnt目录长这样:基本已经初具“人”形
绑定目录,切换根目录
这也是大坑,如果要顺利创建完成efi引导,这步必不可少,不然创建引导会报错,然后就引导失败了😭😭
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
chroot /mnt
现在根目录被切换为还原后的系统了
恢复efi引导
执行以下命令即可恢复efi引导
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=Ubuntu --recheck
update-grub
如果一切正常应该和我显示一样的信息,得真的没有报错才行
注释掉原来的boot分区
由于磁盘都变了,分区UUID也变了,因此原来的分区信息不可用了,得注释掉,不然后续挂载分区失败,启动要等90秒
vi /etc/fstab
把这个boot分区注释掉,然后:wq保存
还原swap.img
由于我们备份系统的时候特地排除了swap.img,因此这里需要还原一下,其中8G就是你的虚拟内存(交换分区)的大小
fallocate -l 8G /swap.img
chmod 600 /swap.img
mkswap /swap.img
swapon /swap.img
swap.img被顺利创建
退出chroot重启系统
终于到最激动人心的最后一步了
exit
reboot
这里可以把U盘都拔了,虚拟机可以将CD去掉了
配置网络
我也没想到能一次成功,这篇博客是我边操作边写的,真的是一次成功,直接进入系统了,相当顺利,但是目前是没有网的,因为你的网卡和你备份的系统网卡名称不!一!样!这就导致你进入系统后发现根本没有网!
查看你的网卡情况
ip a
网卡名称为ens33,状态为DOWN,说明网卡是关闭状态
编辑网卡配置
进入/etc/netplan,查看其中的文件
su
cd /etc/netplan
ls
我这边是50-cloud-init.yaml,就是你了!编辑这个文件,vi 50-cloud-init.yaml
很明显这个文件里的网卡名称为ens32,和我的网卡名称完全不同,这就导致了网卡无法正常启动,需要改成你自己的网卡名称,然后:wq保存
接受变更
执行以下命令,接受netplan变更,外加启动你的网卡
netplan apply
# 这里的ens33要改为你自己的网卡名称
ip link set ens33 up
查看结果
这下终于有网了
结语
我原来很天真的以为备份还原Ubuntu系统是一个非常简单和省事的事,因为很多备份还原Ubuntu的博客就寥寥几行就完事了,结果完全事与愿违,我下班后折腾了3,4个晚上才终于恢复成功,要不是AI助力,外加我坚持不懈的研究,这篇博客根本出不来,就连这篇博客我都写了一个晚上,真是不知道其他那些几行文字就解决的人是如何做到的,简直令人匪夷所思!如果对虚拟机相关技术感兴趣可以来我的Q群170618278吹水,嗯,就是一个吹水群,我这人很忙不一定有时间来帮你解决问题。
相关文章:

【原创】如何备份和还原Ubuntu系统,非常详细!!
前言 我在虚拟机装了一个xfce4的Ubuntu桌面版,外加输入法、IDEA等,我想将这个虚拟机里的系统直接搬到物理机中,那我可以省的再重新装一遍、配置xfce4桌面、修改一堆快捷键还有配置idea了,那直接说干就干。 本教程基于Ubuntu24.0…...

成都栩熙酷网络科技抖音小店是真的
近年来,随着短视频平台的崛起,抖音小店作为一种新兴的购物模式,迅速吸引了大量消费者和商家的关注。在这一潮流中,成都栩熙酷网络科技有限公司(以下简称“栩熙酷”)凭借其敏锐的市场洞察力和强大的技术实力…...

Python 爬虫数据清洗与存储:基础教程
Python 爬虫数据清洗与存储:基础教程 在爬虫数据获取完成后,数据往往是“原始”的,不适合直接使用。清洗和存储是将爬取到的原始数据转化为有用信息的关键步骤。本文将系统地介绍 Python 中进行数据清洗与存储的基本方法,帮助新手…...

ssm122基于Java的高校教学业绩信息管理系统+jsp(论文+源码)_kaic
毕 业 设 计(论 文) 题目:高校教学业绩信息管理系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本高校教学…...
Java 基础知识
一.泛型编程 1. 泛型的概念和作用是什么? 概念:泛型(Generics)是在 JDK 5.0 引入的新特性,允许在定义类、接口和方法时使用类型参数。类型参数在使用时被具体的类型替换。作用: 类型安全性:避…...
深入探索 React Hooks:原理、用法与性能优化全解
一、引言 在现代 React 开发领域,Hooks 已成为不可或缺的一部分,赋予函数组件强大功能,使其能胜任复杂任务。本文将全面剖析 React Hooks,助您深入理解并熟练运用。 二、React Hooks 是什么 (一)Hooks 出现的背景 早期 React 主要依赖类组件,其通过this.state管理状…...
python中父类和子类继承学习
python为啥要使用继承 1. **代码复用**:子类可以继承父类的方法和属性,避免了重复编写相同的代码,提高了代码的复用性。 2. **建立层次结构**:通过继承可以清晰地表示类之间的层次关系,使代码结构更有条理。 3. **扩展…...

Linux——GPIO输入输出裸机实验
学习了正点原子Linux环境下的GPIO的输入输出的裸机实验学习,现在进行一下小结: 启动文件start.S的编写 .global _start .global _bss_start _bss_start:.word __bss_start.global _bss_end _bss_end:.word __bss_end_start:/*设置处理器进入SVC模式*/m…...

华为鸿蒙HarmonyOS NEXT升级HiCar:打造未来出行新体验
随着科技的不断进步,智能出行已成为我们生活中不可或缺的一部分。华为凭借其在智能科技领域的深厚积累,推出了全新的鸿蒙HarmonyOS NEXT系统,旨在为用户打造一个“人车家”的无缝协同出行体验。这一系统的核心亮点之一,就是其内置…...

【项目组件】第三方库——websocketpp
目录 第三方协议:websocket websocket简介 websocket特点 websocket协议切换 websocket协议格式段 websocketpp库介绍 endpoint server connection websocketpp库搭建服务器流程 基本框架实现 业务处理回调函数的实现 http_callback open_callback …...

计算机23级数据结构上机实验(第3-4周)
A 二叉树删除子树 编写程序对给定二叉树执行若干次删除子树操作,输出每次删除子树后剩余二叉树的中根序列。二叉树结点的数据域值为不等于0的整数。每次删除操作是在上一次删除操作后剩下的二叉树上执行。 输入格式: 输入第1行为一组用空格间隔的整数,表…...

【大数据学习 | HBASE高级】region split机制和策略
1. region split机制 HRegionServer拆分region的步骤是,先将该region下线,然后拆分,将其子region加入到hbase:meta表中,再将他们加入到原本的HRegionServer中,最后汇报Master。 split前:hbase:meta表有…...
flink实战 -- flink SQL 实现列转行
在 SQL 任务里面经常会遇到一列转多行的需求,下面就来总结一下在 Flink SQL 里面如何实现列转行的,先来看下面的一个具体案例. 需求 原始数据格式如下: namedatatest[{"content_type":"flink","url":"111"},{"content_type&quo…...

React中右击出现自定弹窗
前言 在react中点击右键,完成阻止浏览器的默认行为,完成自定义的悬浮框(Menu菜单). 版本 "react": "^18.2.0", "umijs/route-utils": "^4.0.1", "antd": "^5.18.1", "ant-design/pro-components": &q…...

Unity类银河战士恶魔城学习总结(P128 Switch UI with KeyBoard用键盘切换UI)
【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili 教程源地址:https://www.udemy.com/course/2d-rpg-alexdev/ 本章节实现了用键盘切换角色UI,技能树UI,合成面板UI和设置UI UI.cs 1. 变量与字段 characterUI,skill…...

基于Springboot+微信小程序的急救常识学习系统 (含源码数据库)
1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 该系统…...
【云计算解决方案面试整理】3-7主流云计算平台、云计算架构、安全防护
准备面云计算解决方案的岗位,整理了一些,也请大佬们指点。 文档分为 云计算基础概念、云计算技术原理、主流云计算平台(以天翼云为例)、云计算架构(弹性设计、高可用设计、高性能设计)、安全防护几个方面。 三、主流云计算平台 1.阿里云云计算平台 强大的计算能力:拥有…...

数据库范式、MySQL 架构、算法与树的深入解析
一、数据库范式 在数据库设计中,范式是一系列规则,用于确保数据的组织和存储具有良好的结构、完整性以及最小化的数据冗余。如果不遵循范式设计,数据可能会以平铺式罗列,仅使用冒号、分号等简单分隔。这种方式存在诸多弊端&#…...

设计模式之责任链模式(Chain Of Responsibility)
一、责任链模式介绍 1、责任链模式介绍 职责链模式(chain of responsibility pattern) 定义: 避免将一个请求的发送者与接收者耦合在 一起,让多个对象都有机会处理请求。将接收请求的对象连接成一条链,并且沿着这条链 传递请求,直到有一个对…...
SQLite 全文检索:快速高效的文本查询方案
文章目录 什么是全文检索?如何启用 FTS?插入数据执行全文检索关联原始表与 FTS 表数据更新结论 说明: 本文以博客内容全文检索为例。 什么是全文检索? 全文检索是指对文本数据进行索引和查询的一种技术。与常规的 LIKE 查询不同,…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建
华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...

在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
服务器--宝塔命令
一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...