大容量系统盘如何复制到小容量中
一、背景
当前我有一块3.5寸12T的SATA Ubuntu 18.04系统盘A,其中各种文件加起来一共53G。感觉这么点文件放这么大个盘里浪费资源,刚好手里还有一个2T的SATA盘B,就想把整个系统从盘A迁移到盘B
二、环境准备
1、可正常运行的linux环境
2、3个硬盘 :可用系统盘A、目标盘B、源系统盘C
三、操作步骤
1、识别到三个盘的盘符
a、先用盘C开机,df -h 获取到系统盘的盘符 : /dev/sda
root@ubuntu:~# df -h
b、再插入盘A,用 lsscsi -g 获取到盘符: /dev/sdb
root@ubuntu:~# lsscsi -g
c、再插入盘A,用 lsscsi -g 获取到盘符: /dev/sdc
root@ubuntu:~# lsscsi -g
2、格式化盘B
a、使用fdisk + 盘符格式化盘B
root@ubuntu:~# fdisk /dev/sdb
之后按 d 删除分区即可,有几个分区删几个分区。
Command (m for help): d
Partition number (1,2, default 2)
例如:我有两个分区
依次输入【d】【1】【d】【2】即可
最后别忘了输入 【w】,用于保存,否则删除分区的操作不会生效
初次使用 fdisk 命令,可以按【m】获取使用说明
b、使用 fdisk 命令新建硬盘分区
首先用 lsblk -f 查看源A盘的分区:
root@ubuntu:~# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 vfat FC18-399F
└─sda2 ext4 819d24a1-bd33-4916-9c12-741a477ef20d /
可以看到我这里有两个分区,然后在B盘上新建相同类型的分区: sdb1(vfat格式)、 sdb2(ext4格式)
新建分区还是用 fdisk 命令(本例新建两个)
```bash
root@ubuntu:~# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.31.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): n
Partition number (1-128, default 1):
输入Partition number(即:分区号),按回车键。如果在 /dev/sdb 上没有建立过其他分区,则输入 1 ,如果建立过其他分区,则按顺序编号即可。输入 First cylinder (即:分区的起始柱面),保持默认值即可,按回车键,输入Last cylinder (即:分区的结束柱面)或空间大小。最后别忘了输入 【w】,用于保存
用mkfs.ext4 /dev/sdb2 与 mkfs.vfat /dev/sdb1 来格式化分区
root@ubuntu:~# mkfs.vfat /dev/sdb1
root@ubuntu:~# mkfs.ext4 /dev/sdb2
3、挂载盘B与盘C
这时把源系统盘C与目标盘B挂载到A系统盘上,然后将对应分区复制过去
mkdir old_hdd#新建挂载点用于挂载旧分区
mkdir new_hdd#新建挂载点用于挂载新分区
mount /dev/sdc1 old_hdd/#挂载旧分区1
mount /dev/sdb1 new_hdd/#挂载新分区1
cp -rf old_hdd/* new_hdd/#拷贝文件
umount new_hdd/#取消挂载新分区
umount old_hdd/#取消挂载旧分区
mount /dev/sdc2 old_hdd/#挂载旧分区2
mount /dev/sdb2 new_hdd/#挂载新分区2
cp -rf old_hdd/* new_hdd/#拷贝文件
umount new_hdd/#取消挂载新分区
umount old_hdd/#取消挂载旧分区
4、修改盘B的 UUID
经过前面几步的操作,使用 lsblk -f 可以查看到盘B与盘C,分区格式和分区数量已经相同。仔细观察可以发现,UUID不一样。下一步将需要将盘B的UUID更新为它自身的UUID,同时更新整个系统涉及到UUID的配置文件
盘B UUID=cd74f8e8-1e00-4606-8e0c-c6ece444edec
盘C UUID=819d24a1-bd33-4916-9c12-741a477ef20d
mount /dev/sdb1 new_hdd/#挂载新分区1
grep -rl '819d24a1-bd33-4916-9c12-741a477ef20d' new_hdd/ | xargs sed -i s/819d24a1-bd33-4916-9c12-741a477ef20d/cd74f8e8-1e00-4606-8e0c-c6ece444edec/g #更新所有UUID字段
umount new_hdd/#取消挂载
mount /dev/sdb2 new_hdd/#挂载新分区2
grep -rl '819d24a1-bd33-4916-9c12-741a477ef20d' new_hdd/ | xargs sed -i s/819d24a1-bd33-4916-9c12-741a477ef20d/cd74f8e8-1e00-4606-8e0c-c6ece444edec/g#更新所有UUID字段
umount new_hdd/#取消挂载
更新完UUID之后,记得拔掉电源关机(这里必须掉电重启,不能reboot,否则引导文件会报错),再把盘A、盘C取走,只留盘B,再重新上电,机器就可以从盘B开起来了。
版权声明:本文为weixin_44750356原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。