树莓派不完全手册——备份树莓派(非全盘)


转到(树莓派不完全手册——目录)


1、备份前准备

备份树莓派,需要准备1个Linux系统和1个存储着待备份系统的存储设备(后面称作备份盘,一般来说是SD卡,我演示的是备份SD卡;也可以是硬盘,因为我以后系统会安装到硬盘,直接从硬盘里面启动树莓派)一般使用下面两种方式备份

1.1、系统选择

除了需要备份的备份盘,还需要一个Linux系统,Linux系统可以使用以下两种方式

1、直接使用虚拟机(本教程用这种方式演示,虚拟机环境为 Debian 10 的root用户
2、使用树莓派+系统盘(可以启动树莓派系统的SD卡,但不能是备份盘,过程跟第一种方式一样)

最终会做到用虚拟机第一次备份SD卡里面的系统,还原到硬盘里面,然后硬盘启动,分区,以后就用SD卡当做系统盘,用树莓派备份硬盘里的系统。

1.2、备份所需要安装的软件

sudo apt-get install kpartx parted dosfstools dump

kpartx 用于分区镜像
parted 格式化分区
dosfstools 提供格式化分区的格式
dump 备份工具

1.3、准备镜像文件

1.3.1、查看备份盘需要备份的目录所占的空间

1.3.1.1、查看备份盘的路径
使用命令
fdisk -l
查看SD卡的路径
查看备份盘的路径
红色框框住的就是备份盘的路径
/dev/sdb1是备份盘系统的 /boot目录
/dev/sdb2是备份盘系统的 /目录
1.3.1.2 挂载备份盘
要查看、操作备份盘的文件,首先要把他挂载到当前系统里
cd ~/
mkdir boot
mkdir root
mount /dev/sdb1 boot
mount /dev/sdb2 root
1.3.1.3 查看备份盘已使用空间
查看备份盘已使用空间,是为了后面确定创建镜像的大小,我创建镜像的大小大约是 (boot目录总空间 + / 根目录已使用空间) * 1.1
使用命令
df -h
在这里插入图片描述
可以看到 boot目录总大小为 252MB
/目录已使用大小为 4.6 * 1024 ≈ 4710MB
创建的镜像大小 ≈5433MB

1.3.2、创建一个空白的镜像文件

根据步骤1.3.1.3的计算,下面将要创建一个大小大约为5433MB的镜像

dd if=/dev/zero of=pi.img bs=1M count=5433

1.3.3、分割镜像

1.3.3.1、查看镜像需要分割的大小
fdisk -l /dev/sdb

可以看出
在这里插入图片描述
分区表类型是dos
boot目录的开始和结束分别为8192524287
/目录的开始是524288,结束不用管,因为刚才创建的镜像文件的大小足够存储备份盘boot+/目录下的文件,所以结束直接是镜像文件的结束大小就好了。

1.3.3.2、开始分割

下面是分割镜像的命令

#分区表格式类型为 msdos
parted pi.img --script -- mklabel msdos
#为两个目录分区(下面第二条命令最后面是 "负一",代表一直分割到镜像文件结束)
parted pi.img --script -- mkpart primary fat32 8192s 524287s
parted pi.img --script -- mkpart primary ext4 524288s -1
1.3.3.3、查看分割结果
fdisk -l /dev/sdb pi.img

可以看到sdb的分区情况和pi.img镜像的分割情况,是多么的相似
在这里插入图片描述

1.3.4、把镜像文件虚拟为循环设备

# 寻找第一个未使用的循环设备
losetup -f
· 这里将会输出一个类似于 /dev/loop0 之类的结果,下面的操作都是使用刚才输出的 loop0,这里要根据实际情况自己更改
# 将pi.img虚拟成循环设备
losetup /dev/loop0 pi.img
# 查看结果
losetup -a
· 成功的话会输出 /dev/loop0: [2049]:1048581 (/root/pi.img)

1.3.5、装载镜像

kpartx -av pi.img
· 下面输出pi.img的装载文件名,文件在目录 /dev/mapper/ 下
· loop0p1 对应着存放 boot 目录下的文件
· loop0p2 对应着存放 / 目录下的文件

1.3.6、格式化镜像

mkfs.vfat -n boot /dev/mapper/loop0p1
mkfs.ext4 /dev/mapper/loop0p2

1.3.7、创建系统用户

因为我的虚拟机只有root用户,我的树莓派系统的用户是pi,所以这里最好创建一个pi用户

useradd pi

1.3.8、挂载镜像文件到文件系统

# 创建 boot_bak 目录,用来存放备份盘 boot 目录的文件
mkdir boot_bak
# 创建 root_bak 目录,用来存放备份盘 / 目录的文件
mkdir root_bak
# 挂载 loop0p1 到 boot_bak 目录
mount -t vfat -o uid=pi,gid=pi,umask=0000 /dev/mapper/loop0p1 boot_bak/
# 挂载 loop0p2 到 root_bak 目录
mount -t ext4 /dev/mapper/loop0p2 root_bak/

2、开始备份

2.1、备份boot目录下的文件

# 拷贝 boot 目录下的文件到 boot_bak
cp -rfp boot/* boot_bak/
# 查看 boot_bak 目录是否拷贝文件成功
ls boot_bak/

2.2、备份系统盘 / 目录下的文件

# 赋予 root 目录相对应的权限、用户和用户组
chmod 777 root_bak
chown pi.pi root_bak
# 进入 root_bak 目录
cd root_bak
# 备份 /,还原备份到 root 目录
dump -0uaf - ../root/ | restore -rf -
· 经过一番等待,看到输出 DUMP: DUMP IS DONE 就是备份完成了

2.3、修改PARTUUID

这里需要把
镜像的boot分区(/dev/mapper/loop0p1) 和 /分区(/dev/mapper/loop0p2)的PARTUUID
设置到
boot_bak/cmdline.txtroot/etc/fstab文件
让系统找到相对应的分区

2.3.1、查看PARTUUID

blkid

在这里插入图片描述
可以看到
boot分区(/dev/mapper/loop0p1)的PARTUUIDa7951e41-01
/分区(/dev/mapper/loop0p2)的PARTUUIDa7951e41-02

2.3.2、修改boot_bak/cmdline.txt

通过vi命令修改boot_bak/cmdline.txt文件,找到root=PARTUUID=,把值修改为a7951e41-02

2.3.3、修改root_bak/etc/fstab

通过vi命令修改root_bak/etc/fstab文件,把/boot/前面PARTUUID的值分别修改为a7951e41-01a7951e41-02


到这里,备份操作已经完成了,pi.img就是备份的镜像文件,后面将会把镜像还原到外置硬盘,从硬盘启动树莓派。这个备份盘里面的系统也最好不要删掉,因为后面会把这个备份盘作为系统盘,用树莓派备份外置硬盘里面的系统。


转到(树莓派不完全手册——目录)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值