导:
Linux中有一个一切皆文件的说法,当需要拷贝或者备份整个Linux系统时,可以将整个
/
目录拷贝到另外一块磁盘上
1、空白磁盘创建分区
首先需要准备一块空白磁盘,大小自定,文件系统格式跟要拷贝的系统保持一致。
将该空白磁盘插到某台主机上(根据个人喜好选择任意系统,目的是对空白磁盘进行分区,这里使用Ubuntu图形界面主机说明)
首先查看需要拷贝的linux的文件系统情况
$ sudo df -h
/dev/sda2 50G 21G 30G 41% /
/dev/sda1 599M 6.9M 592M 2% /boot/efi
# 这里主要注意 /boot/efi 目录的大小,这个目录是启动目录,用来替代BIOS中的主引导记录分区表。一般情况下需要单独创建一个分区(EFI格式)挂载给该目录,EFI分区通常大小为 100-550 MB
# fdisk -l
.......
.......
设备 起点 末尾 扇区 大小 类型
/dev/sda1 2048 1230847 1228800 600M EFI 系统
# 磁盘没有挂载之前使用 df 命令是无法查看到详细信息的
# 使用 fdisk 命令可以查看所有磁盘信息(包括未加载磁盘)
$ sudo fdisk -l
# 查看到空白磁盘的对应硬盘名字之后可以继续使用 fdisk 命令对其进行分区
# 如果是IDE接口硬盘: /dev/dh[a-z],硬盘名字应该是dh[a-z]开头
# 如果是SCSI接口硬盘: /dev/sd[a-z],硬盘名字应该是sd[a-z]开头
根据上边显示的原系统的信息,我们至少需要为新的空白磁盘创建两个分区,一个是EFI格式的启动分区用来写入原启动目录 /boot/efi,一个数据分区用来写入原/目录下的所有数据
这里使用了Ubuntu图形界面的磁盘管理工具为空白磁盘创建了两个分区,一个EFI分区,一个数据主分区(当时未进行记录,不再进行展示图片)
2、空白磁盘写入数据
# 首先使用 df -h 查看老数据都在那个分区中,确定数据源和数据输出点
$ sudo df -h
/dev/sda2 50G 21G 30G 41% /
/dev/sda1 599M 6.9M 592M 2% /boot/efi
# 从这里可以看到老数据根目录在/dev/sda2,启动目录/boot/efi在/dev/sda1中
这里使用 dd 命令将老数据写入新的空白磁盘
$ dd if=老磁盘的数据分区名称 of=新空白磁盘的分区名称
例:dd if=/dev/sda2 of=/dev/sdb2
# 可以另外打开一个终端使用 watch 查看dd进度
$ sudo watch -n 5 pkill -USR1 ^dd$
根目录复制完成之后,将老系统的/boot/efi数据写入到新磁盘的EFI分区
$ dd if=老磁盘的启动分区名称 of=新空白磁盘的启动分区名称
例:dd if=/dev/sda1 of=/dev/sdb1
# 同样也可以另外打开一个终端使用 watch 查看dd进度
$ sudo watch -n 5 pkill -USR1 ^dd$
3、完成
写入没有问题之后,新磁盘插入到一个新主机上就可以直接开机使用了
参考:
https://www.linuxprobe.com/xiangjie-linux-ygf.html
https://blog.csdn.net/woailyoo0000/article/details/86485666