Linux系统迁移实战:如何用tar命令将Ubuntu完整克隆到新硬盘(附UUID避坑指南)
最近工作室的几台主力开发服务器硬盘开始告警,SMART数据不太乐观,是时候给它们换个新家了。直接重装系统再配置环境?想想那些复杂的依赖、自定义的服务和调试了无数次的参数就头疼。对于Linux系统管理员或者深度用户来说,最优雅的解决方案莫过于“系统迁移”——把旧硬盘上的整个运行环境,像搬家一样原封不动地搬到新硬盘上。这不仅仅是文件的复制,更是包括引导、分区、配置在内的完整生态迁移。今天,我就结合最近一次成功的迁移经历,详细拆解用最经典的 tar 命令完成这项任务的全过程,并重点剖析那个让无数人栽跟头的“UUID”问题,提供一套可复制的避坑指南。
1. 迁移前的核心认知与准备工作
系统迁移,听起来像是高级操作,但其核心思想却非常朴素:将运行中的系统状态,完整地“冷冻”成一个快照,然后在新的硬件上“解冻”恢复。Linux的“一切皆文件”哲学为此提供了天然便利。我们不需要像Windows那样处理复杂的注册表或系统还原点,只需要处理好文件、权限以及引导信息即可。
然而,直接复制所有文件是行不通的。正在运行的系统有大量临时文件、进程锁和动态设备节点(如/dev, /proc, /sys, /run),这些都不应该被打包。因此,我们的策略是:从一个“纯净”的、不直接运行旧系统内核的环境(通常是Live USB)中,对旧硬盘的根文件系统进行打包。
在动手之前,你需要准备好以下几样东西:
- 一个Ubuntu Live USB启动盘:用于创建一个独立于旧硬盘系统的操作环境。建议使用与旧系统相同或更新版本的Ubuntu镜像制作。
- 目标新硬盘:已物理安装到电脑中。它可以是全新的空白盘,也可以预先分区(推荐),甚至可以先安装一个最简版的同版本Ubuntu作为“脚手架”。
- 足够的存储空间:用于存放备份压缩包。可以是新硬盘上的一个独立分区,也可以是另一个外接存储设备。
- 一个记录工具:纸笔或另一个电子设备,用于记录新旧硬盘的设备标识符(如
/dev/sda,/dev/nvme0n1)和分区的UUID。
为什么推荐先在新硬盘安装一个基础系统? 这并非必须,但能极大简化后续步骤,尤其是对于UEFI引导的系统。这个基础系统的作用是:
- 自动帮你创建好EFI系统分区(ESP)和正确的分区表(GPT)。
- 预先安装好GRUB引导程序。
- 提供了一个可以直接挂载和操作的“目标框架”,我们只需将其
/(根)分区的内容替换成我们的备份即可。
2. 实战操作:从Live环境到完整备份
一切就绪后,我们重启电脑,从制作好的Ubuntu Live USB启动盘启动,选择“试用Ubuntu”进入桌面环境。这个环境运行在内存中,为我们操作本地硬盘提供了安全且独立的工作台。
2.1 识别与挂载新旧硬盘
首先,我们需要明确哪块盘是旧的(源),哪块是新的(目标)。打开终端,使用lsblk或fdisk命令可以清晰地看到所有存储设备。
sudo fdisk -l
或者使用更直观的lsblk:

&spm=1001.2101.3001.5002&articleId=153801569&d=1&t=3&u=023263f38a974bf7a44a2248bb19da3f)
3560

被折叠的 条评论
为什么被折叠?



