备份整个 Linux 系统

, Read in about 2 min

Posted by Ryen on Monday, February 1, 2021
With final update in December 26,2023

本文总阅读量

首先要知道当前的机器上有哪些磁盘,用 fdisk -l 可以查出

# fdisk -l
Disk /dev/mmcblk0: 7.3 GiB, 7818182656 bytes, 15269888 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/mmcblk0boot1: 4 MiB, 4194304 bytes, 8192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/mmcblk0boot0: 4 MiB, 4194304 bytes, 8192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sda: 465.8 GiB, 500107862016 bytes, 976773168 sectors

可以看出, mmcb1k0 就是机器自身的硬盘,而 sda 则是我自己外接的移动硬盘。

经过了解知道,dd 可以将当前整块磁盘的内容,完整地复制到其它的磁盘。命令如下:

dd if=/dev/sda of=/dev/sdb

这样就是把 sda 这块盘的内容复制到 sdb 里

但是平时从网上下载的固件主要是 img 格式的,这种怎么做呢?同样用 dd 就行:

dd if=/dev/sda of=/media/one/backup.img

N1 上用的命令是这个:

dd if=/dev/mmcblk0 of=/media/one/back.img

等了好久好久,才复制完成,此时在我移动硬盘的根目录下,可以看到一个 back.img 文件。

之前要恢复的话,用这个命令

dd if=/media/one/back.img of=/dev/mmcblk0

在 ubuntu 中将系统dd到 U盘

sudo dd if=/dev/sda of=/dev/sdb conv=noerror,sync
^C14583513+0 records in
14583513+0 records out
7466758656 bytes (7.5 GB, 7.0 GiB) copied, 7048.69 s, 1.1 MB/s
$ dd if=/dev/mmcblk1 of=/media/one/back.img
15269888+0 records in
15269888+0 records out
7818182656 bytes (7.8 GB, 7.3 GiB) copied, 2434.71 s, 3.2 MB/s

之后把这个 img 文件,复制到电脑,然后用工具将它写入 U盘,之后插到 emmc 里面同样是 armbian 的N1上,结果开机后进入的还是 emmc 里的系统。但是通过 fdisk -l 发现,boot 分区是在U盘里的。也就是说,N1是从U盘读取启动文件,然后启动 emmc 里面的系统,不知道 emmc 里是其它系统时,是否就能从 U盘启动系统?

「真诚赞赏,手留余香」

Ryen's Blog

真诚赞赏,手留余香

使用微信扫描二维码完成支付