树莓派系统分区与系统备份还原
前言:
关键字:Raspberry Pi、rsync、Linux、系统分区、系统备份、系统还原;
以上的方法其实博主用了很久了,没写这个一是因为写博客太花时间,二是博主觉得这个东西太基础了,网上有很多同类教程,感觉没这必要。而现在写这个是因为,新装系统的确烦,而且我闲。在测试一些项目时,博主经常需要一个干净的系统去测试原代码的有效性,为避免重复的安装系统及相关软件[浪费时间],于是吧,也就有了这篇博文,同时我也感觉这篇博客能帮到不少玩树莓派的人,于是也就写写吧~
一、硬件与软件环境
本教程在以下环境下搭建测试通过!
-
硬 件 :Raspberry Pi 3B
-
操作系统 :Raspbian Buster Lite
-
测试日期:无/2020年06月06日
二、系统分区
关于树莓派TF卡的分区,一般情况下,你需要以下工具:DiskImager、DiskGenius;当然,这两个工具不是必须的,你可以用任何同类工具代替,只是博主习惯了使用这两个工具。以下为实现树莓派分区的基本操作流程~
01、在WINDOW下使用“DiskImager”烧录最新的树莓派镜像,这步没什么好说的,别忘记了在烧录完成后,在对应盘符下创建一个无后缀的“ssh”空文件用于启用SSH连接服务;
02、在WINDOW下启动“DiskGenius”对TF卡进行分区,此时你应该考虑你的TF卡想应用的分区方案;本博文中,博主使用的是一张32G的TF卡,分区方案是,TF卡的最后约10GB的数据空间用于对操作系统的备份,其它空间均应用于根分区,分区方案见下图;之所以在此时进行分区而不是在树莓派系统内分区,主要原因是因为现在的树莓派系统在首次使用时,会默认自动扩展系统内的根分区[使用TF卡的容量得到有效应用],在这样的情况下,就需要对分区进行缩容再划分,这就需要考虑磁盘存储数据的原理问题了,明显的与其要折腾扇区计算这种东西,这方法就简单多了;
03、在分区完成后,将TF卡插入至树莓派内并SSH连接至树莓派,执行“sudo fdisk -l /dev/mmcblk0”命令查看系统分区情况,结果如下图所示,记录下“/dev/mmcblk0p2”的“Start”值与“/dev/mmcblk0p3”的“End”值;
04、并合并“/dev/mmcblk0p2”与“/dev/mmcblk0p3”两个分区;这需要几步操作,包括删除原来的相关分区、创建新分区;执行“sudo fdisk /dev/mmcblk0”命令进入分区配置工具,具体操作过程如下图;放心操作,所有操作在执行“保存分区操作”并不会生效;
05、执行“sudo fdisk -l /dev/mmcblk0”命令查看系统分区情况,经过上一步操作后,分区情况应如下图所示;同时记录下“/dev/mmcblk0p4”的“Start”值与“End”值为下一步作准备;
06、执行“sudo fdisk /dev/mmcblk0”命令删除“/dev/mmcblk0p4”主分区,并将其设定为扩展分区,并利用该扩展分区的所有容量创建新的逻辑分区;如下图;
07、现在TF的分区工作已经完成了,以下进行一些必须操作以保证系统正常运行,包括使用“sudo resize2fs /dev/mmcblk0p2”命令校正“/dev/mmcblk0p2”分区,及使用“sudo mkfs -t ext4 /dev/mmcblk0p5”格式化“/dev/mmcblk0p5”逻辑分区;提示:“/dev/mmcblk0p2”的校正时间较长[视容量],请耐心等待;过程如下图;
08、最终结果如下图;
三、系统配置
本部分并不是必要的,只是博主过程中一步。树莓派的原生操作系统很多时候并不符合博主的使用目的,所以博主一般会在此时对原生系统作一些额外的配置之后再作备份,比如说,作一些系统的配置与优化[VSFTPD教程中有优化示例],及安装一些软件;博主习惯安装以下软件“docker”、“docker-compose”、“aptitude”、“rsync”、“vim”、“tree”、“unzip”及“sysstat”,仅供参考。
四、系统备份
使用“rsync”命令进行系统备份,博主也不记得这个工具是不是已经默认自带了,也不想花时间去查证这种无意义的东西~,如果系统内未自带,请使用以下命令安装;
1 2 |
# 安装“rsync”; sudo apt-get install rsync -y |
使用“rsync”对操作系统进行备份或还原,其好处是备份与还原速度快,缺点是,操作比较复杂,因为“rsync”本质来说是一个文件同步工具,而操作系统内,很多东西是不需要备份的,而且也不能备份,比如说“/proc”目录。使用“rsync”工具进行操作系统备份,首先需要创建一份文件/目录排除清单,以下为操作系统目录排除清单,我并不打算科普这些目录的作用,感兴趣自行百度或谷歌;
1 2 3 4 5 6 7 8 9 10 |
mkdir -p /home/pi/System_BAK && cd /home/pi/System_BAK # 创建“/home/pi/System_BAK ”目录并进入目录; touch exclude.conf # 创建用于记录排除清单的文件; nano exclude.conf # 编辑“exclude.conf”文件; # 编辑文件你也可以使用“vi”、“vim”或任意其它同类文本编辑工具; # 并输入下文内容; |
以下为“exclude.conf”排除清单文件中的内容;
1 2 3 4 5 6 7 8 9 10 |
/boot /dev /home /media /mnt /proc /run /sys /tmp /lost+found |
在文件排除清单“exclude.conf”编辑完成后,现进行备份操作;对备份的存放位置,我们将其设定在之前的“/dev/mmcblk0p5”分区内;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
sudo mount /dev/mmcblk0p5 /mnt # 将“/dev/mmcblk0p5”挂载至“/mnt”; mkdir -p /mnt/System_BAK # 创建“/mnt/System_BAK”用于保存操作系统备份; sudo rsync -a --info=progress2 --partial --delete --exclude-from=/home/pi/System_BAK/exclude.conf / /mnt/System_BAK/ # -a :归档模式,表示以递归方式传输文件,并保持所有文件属性;即[ -rlptgoD ]; # --info= :fine-grained informational verbosity # --partial :保留那些因故障而没有传输完成的文件,以是加快随后的再次传输; # --delete :删除那些DST中SRC没有的文件; # --exclude-from= :排除FILE中指定的目录或文件; ls -l /mnt/System_BAK # 查看是否备份成功; |
五、系统还原
对操作系统进行还原操作,使用前务必记得挂载“/dev/mmcblk0p5”分区;
1 2 3 4 5 6 7 8 9 10 11 12 13 |
sudo mount /dev/mmcblk0p5 /mnt # 将“/dev/mmcblk0p5”挂载至“/mnt”; sudo rsync -a --info=progress2 --partial --delete --exclude-from=/home/pi/System_BAK/exclude.conf /mnt/System_BAK/ / # 将“/mnt/System_BAK/”还原至根目录内; # -a :归档模式,表示以递归方式传输文件,并保持所有文件属性;即[ -rlptgoD ]; # --info= :fine-grained informational verbosity # --partial :保留那些因故障而没有传输完成的文件,以是加快随后的再次传输; # --delete :删除那些DST中SRC没有的文件; # --exclude-from= :排除FILE中指定的目录或文件; sudo reboot # 重启使用还原生效; |
六、其它
不想写,有什么问题留言;
树莓派系统分区与系统备份还原:等您坐沙发呢!