数据无忧:Ubuntu 系统迁移备份全指南

唠唠闲话

最近电脑出现了一些故障,送修期间,不得不在实验室的台式机上重装系统,配环境的过程花费了不少时间。为避免未来处理类似事情时耗费时间,特此整理一些备份策略。

先做以下准备:

  • U盘启动盘,参考 Rufus 制作 Ubuntu 启动盘
  • 安装了 Ubuntu系统的硬盘 A
  • 用于数据备份的硬盘 B

除了通过硬盘备份,Ubuntu 还有类似 Time Machine 的工具,教程将在后边介绍。

硬盘备份

通过 lsblk 命令查看硬盘信息,假设硬盘A为 /dev/sda,硬盘B为 /dev/sdb

使用 ddddrescue 进行数据拷贝

dd 是主要用于低级别的数据复制和转换。

使用dd命令拷贝数据:

dd if=/dev/sda of=/dev/sdb bs=4M status=progress

参数说明:

  • if:输入文件(硬盘A)
  • of:输出文件(硬盘B)
  • bs:块大小,建议设置较大以提高拷贝速度
  • status:显示拷贝进度

ddrescue 是一个专门用来从损坏的硬盘、光学介质或其他损坏的存储设备中尽可能多地恢复数据的高级工具。它比 dd 更智能、更有效率,适合用于数据恢复工作。

使用 ddrescue 命令进行断点续传:

ddrescue -f /dev/sda /dev/sdb rescuefile.log
  • -f:强制覆盖目标硬盘

修改 UUID

dd 这类命令会完全拷贝硬盘,包括分区的 UUID 信息。为避免潜在的 UUID 冲突,可对新设备进行修改。

假设系统盘挂载在 /dev/sdb2,使用 tune2fs 命令修改 UUID:

tune2fs /dev/sdb2 -U random

通过 blkid 查看修改后的 UUID:

sudo blkid /dev/sdb2

修改后,直接重启系统还会遇到 UUID 识别失败问题。此时,需更新 /etc/fstab 文件中的UUID设置。

挂载硬盘和修改系统配置

  1. 挂载新硬盘
mkdir /mnt/mydisk
mount /dev/sdb2 /mnt/mydisk
  1. 挂载系统目录

为了正常进入系统,需要挂载系统的一些目录:

mount --bind /dev /mnt/mydisk/dev
mount --bind /proc /mnt/mydisk/proc
mount --bind /sys /mnt/mydisk/sys
  1. 进入新系统环境

使用 chroot 命令更改根目录到新硬盘的系统环境:

chroot /mnt/mydisk
  1. 修改/etc/fstab 和更新 grub

编辑 /etc/fstab 文件中的 UUID,然后更新 grub:

nano /etc/fstab
update-grub
  1. 退出 chroot 环境并卸载硬盘
exit
umount /mnt/mydisk/dev
umount /mnt/mydisk/proc
umount /mnt/mydisk/sys
umount /mnt/mydisk

完成上述步骤后,重启系统即可。

特殊处理

  • 硬盘大小相同:直接使用 dd 完全拷贝即可。

  • 硬盘A 比硬盘B 小

    • 使用 dd 拷贝后,通过 gparted 扩大硬盘B的分区,调整 /dev/sdb 及其子分区的大小。
  • 硬盘A 比硬盘B 大,但使用量更少

    • 使用 gparted 缩小硬盘A的分区,再使用 resize2fs 调整文件系统大小:
      resize2fs /dev/sdb1
      
    • 在调整后再进行拷贝。

此外,对于第三种情形,实测在 dd 拷贝过程中终止,且拷贝量大于硬盘A的实际使用量时,也可以正常使用,不需要额外的调整操作。

文件系统检查

操作完成后,建议使用 e2fsck 检查文件系统的完整性:

e2fsck -f /dev/sdb

通过以上步骤,你可以高效、安全地完成硬盘之间的数据迁移和备份。

使用 Timeshift 进行备份

Timeshift 是一个功能强大的工具,可以在 Ubuntu 系统上实现类似于 Mac 的 Time Machine 的备份功能。以下是如何安装和使用 Timeshift 进行系统备份和恢复的详细步骤。

安装 Timeshift

  1. 打开终端并添加 Timeshift 的 PPA 仓库:
    sudo apt-add-repository -y ppa:teejee2008/ppa
    sudo apt-get update
    
  2. 安装 Timeshift:
    sudo apt-get install timeshift
    

配置 Timeshift

安装完成后,运行 Timeshift 配置向导:

sudo timeshift-gtk

按照向导的指引进行设置:

  • 选择备份类型:选择“RSYNC”或者“BTRFS”。大多数用户选择“RSYNC”。
  • 选择备份存储位置:选择一个存储设备或分区来存储备份快照,确保备份位置有足够的空间。
  • 设置计划任务:可以设置每日、每周或每月的自动备份时间,以定期创建系统快照。

手动创建快照

在 Timeshift 主界面中,点击“创建”按钮手动创建系统快照。这可以在需要进行重大系统更改前手动备份当前系统状态。

恢复系统

当系统出现问题时,可以使用 Timeshift 恢复到之前的快照:

  1. 打开 Timeshift。
  2. 选择一个可用的快照。
  3. 点击“恢复”按钮,然后按照向导操作恢复系统。

恢复到新的硬盘

如果需要将系统恢复到一个新的硬盘上,请按照以下步骤操作:

准备新的硬盘
  1. 使用 Ubuntu live CD 或 USB 启动计算机,并将新的硬盘连接到系统。
  2. 使用磁盘工具(例如 GParted)在新的硬盘上创建适当的分区,并格式化为 ext4 文件系统。
安装并运行 Timeshift

在 live 环境下,打开终端并安装 Timeshift:

sudo apt-add-repository -y ppa:teejee2008/ppa
sudo apt-get update
sudo apt-get install timeshift

运行 Timeshift:

sudo timeshift-launcher
设置目标设备并恢复快照
  1. 在 Timeshift 的设置中,将目标设备设置为新的硬盘分区。
  2. 选择一个可用的快照,然后点击“恢复”。在恢复选项中,选择新的硬盘分区作为目标。
  3. 按照提示完成恢复过程。
安装引导程序(GRUB)

恢复完成后,需要在新硬盘上安装引导程序(GRUB)。假设新的硬盘是 /dev/sdb,可以执行以下命令:

sudo mount /dev/sdb1 /mnt
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo chroot /mnt
grub-install /dev/sdb
update-grub
exit
sudo umount /mnt/sys
sudo umount /mnt/proc
sudo umount /mnt/dev
sudo umount /mnt

完成这些步骤后,你应该能够从新的硬盘启动系统。

以上。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/43051.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是静态住宅代理?一文看懂它

静态住宅代理(也称为 ISP 代理)是最流行的代理类型之一。它们也是隐藏身份和在线匿名的最佳方式之一。但是您需要了解它们什么?是什么让它们如此特别?为什么您要使用住宅代理而不是仅仅使用常规代理服务?如果你感兴趣&…

exel带单位求和,统计元素个数

如果exel表格中,如果数据有单位,无法直接用 自动求和 直接求和。如下图所示,求和结果为0,显然不是我们想要的。 用下面的公式求和,单位不是“个”的时候记得替换单位。统计范围不是“C1:C7”也记得换一下啊&#xff01…

华为的服务器创新之路

华为作为全球领先的信息与通信技术解决方案供应商,其在服务器领域的创新方法不仅推动了企业自身的发展,也为整个行业的进步做出了重要贡献。以下是华为在服务器领域所采取的一些关键创新方法: 芯片级的自主创新 华为通过自主研发的“鲲鹏”处…

线程相关概念及操作

【1】线程的概念 1.线程-->进程会得到一个内存地址,进程是资源分配的基本单位线程才是真正进程里处理数据与逻辑的东西进程---》被分配一定的资源线程---》利用进程资源处理数据与逻辑 【2】进程和线程关系: 进程与进程之间是竞争关系,竞…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第一篇 嵌入式Linux入门篇-

i.MX8MM处理器采用了先进的14LPCFinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核 ,主频高达1.8GHz,2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

BFS:边权相同的最短路问题

一、边权相同最短路问题简介 二、迷宫中离入口最近的出口 . - 力扣&#xff08;LeetCode&#xff09; class Solution { public:const int dx[4]{1,-1,0,0};const int dy[4]{0,0,1,-1};int nearestExit(vector<vector<char>>& maze, vector<int>& e…

论文阅读:Rethinking Interpretability in the Era of Large Language Models

Rethinking Interpretability in the Era of Large Language Models 《Rethinking Interpretability in the Era of Large Language Models》由Chandan Singh、Jeevana Priya Inala、Michel Galley、Rich Caruana和Jianfeng Gao撰写&#xff0c;探讨了在大型语言模型&#xff…

WVP后端项目文件结构

WVP&#xff08;Web Video Platform&#xff09;是一个基于GB28181-2016标准实现的网络视频平台&#xff0c;负责实现核心信令与设备管理后台部分&#xff0c;支持NAT穿透&#xff0c;支持海康、大华、宇视等品牌的IPC、NVR、DVR接入。支持国标级联&#xff0c;支持rtsp/rtmp等…

使用C#进行MySQL删改查操作

使用C#进行MySQL删改查操作 1.前提准备2.C#中MySQL的向指定数据库中增加数据3.C#中MySQL的向指定数据库中修改数据4.C#中MySQL的向指定数据库中删除数据 1.前提准备 在MySQL官网上下载C#相关的dll&#xff0c;或者在Nuget包中搜索“MySql.Data”&#xff0c;进行下载。 2.C#中…

js函数扩展内容---多参数,函数属性,字符串生成函数

1.多参数 在js中&#xff0c;Math.max()方法可以接受任意数量的参数&#xff0c; Math.max(1,2,3,4);//4 Math.max(1,2,3,4,5,6,7,8,9,10)//10 在max方法里面有一个rest参数&#xff0c;它接受了所有参数全部合成到了一个number数组里面&#xff0c; function rest(a,b,...a…

12 - matlab m_map地学绘图工具基础函数 - 在地图上绘制矢量场m_vec函数和绘制风羽图的m_windbarb函数

12 - matlab m_map地学绘图工具基础函数 - 在地图上绘制矢量场函数m_vec和绘制风羽图的函数m_windbarb 0. 引言1. 关于m_vec2. 关于m_windbarb3. 总结 0. 引言 本篇介绍下m_map中绘制矢量场的函数&#xff08;m_vec&#xff09;和地图上绘制风羽图的函数m_windbarb。 1. 关于m…

【python重复元素判定】

在Python中&#xff0c;判定一个序列&#xff08;如列表、元组等&#xff09;中是否存在重复元素&#xff0c;可以通过多种方法实现。这里列出几种常用的方法&#xff1a; 1. 使用集合&#xff08;Set&#xff09; 集合是一个无序的、不包含重复元素的数据结构。将序列转换为…

QT信号量与槽

文章目录 概述用系统生成新增一个信号量和槽代码方式信号量和槽的宏信号量和槽都用函数地址lamda表达式函数指针 槽和信号量函数信号量槽 小结 概述 这个内容是QT独有的&#xff0c;写的挺有意义的。之前写过一篇QT slots的函数&#xff0c;思来想去&#xff0c;觉得不是那么有…

python-22-零基础自学python-数据分析基础 打开文件 读取文件信息

学习内容&#xff1a;《python编程&#xff1a;从入门到实践》第二版 知识点&#xff1a; 读取文件 、逐行读取文件信息等 练习内容&#xff1a; 练习10-1:Python学习笔记 在文本编辑器中新建一个文件&#xff0c;写几句话来总结一下你至此学到的Python知识&#xff0c;其中…

代码随想录:贪心2-4

455.分发饼干 题目 假设你是一位很棒的家长&#xff0c;想要给你的孩子们一些小饼干。但是&#xff0c;每个孩子最多只能给一块饼干。 对每个孩子 i&#xff0c;都有一个胃口值 g[i]&#xff0c;这是能让孩子们满足胃口的饼干的最小尺寸&#xff1b;并且每块饼干 j&#xff…

考CISP,不要踩坑的几点建议

当你立志要在信息安全领域闯出一片天&#xff0c;可能多少都会听行内人说&#xff0c;搞本CISP。但这个认证究竟该怎么拿&#xff1f;需要培训吗&#xff1f;培训又是怎么一回事&#xff1f;价格如何&#xff1f;还有&#xff0c;什么时候开始准备最好&#xff1f;这些问题可能…

C++ Lambda表达式第一篇, 闭合(Closuretype)

C Lambda表达式第一篇&#xff0c; 闭合Closuretype ClosureType::operator()(params)auto 模板参数类型显式模板参数类型其他 ClosureType::operator ret(*)(params)() lambda 表达式是唯一的未命名&#xff0c;非联合&#xff0c;非聚合类类型&#xff08;称为闭包类型&#…

【实习问题记录】Nodeclub本地部署

问题描述 在按照官方网站给出的教程一步一步操作以后发现出现以下报错&#xff1a; 问题分析 显示连接不上mongodb&#xff0c;分析报错可能是因为版本不匹配导致的&#xff0c;查看安装的mongodb版本发现是7.0.4&#xff0c;与目标版本不匹配&#xff0c;同时查看mongodb官…

我们所熟知的meme梗图也可以用AI生成了,老外都玩坏了。

meme梗图不知道大家看到过嘛&#xff1f;相信你们看见下面的图你就会大叫“卧槽”&#xff0c;原来是这种图&#xff0c;我以前经常狂刷不止&#xff0c;太有趣了。 其实meme是一个网络流行语&#xff0c;可译为模因。在大众非学术范围内也可翻译为我们所熟知的“梗”。其中“表…

SDK环境的安装(测试使用)

1、安装 将文件解压至目录,我的目录为:D:\Program Files\Android 解压后如下: 下载链接如下: sdk下载 提取码见文章最后: 2、配置环境 1、在环境变量中,选择系统变量,点击新建。 变量名:ANDROID_HOME 变量值:“你自己的android-sdk安装路径” (例如我的:D:\Pro…