备份树莓派系统的多种方法,构建镜像

news2024/11/29 2:37:49

在我们使用树莓派进行学习或者搭建实验环境时经常会把系统玩坏,辛苦配置的开发环境又得重新配置;或者更新某一软件后发现新版本和某些组件不兼容,又无法降级。这个时候我们会想将系统在稳定时进行备份,在系统出现问题后可以很方便的进行恢复。

1、使用 Win32DiskImager 进行备份(Read操作)
这个方法是网上很多教程中写的方法,这个方法的缺点是:只能进行全卡备份,像我使用的内存卡容量是 128G,安装好系统和一些组件后虽然只占用10G左右的空间,用这个方法进行备份的镜像大小将是 128G(虽然我只使用了其中的 10G 的空间),网上很多文章说可以用PiShrink脚本进行压缩裁剪,但我测试后很多系统会裁剪失败,原因是该脚本不支持部分系统的镜像,我自己用 Ubuntu server 和 Manjaro-arm 进行测试都是这个问题,如果你用 16G 以下的小容量 tf 卡,直接用这种方法就行。

2、站内的老备份教程
该方法主要是将系统备份到另一张 tf 卡,如果我们只有一张卡,并且备份只是用于归档,用这个方法就比较鸡肋了。

3、使用 rpi-backup 脚本进行备份
这是我寻求备份方案以来找到的最好的树莓派系统备份解决方案,解决了备份文件体积大,恢复也方便,这个脚本备份文件的体积为 已用空间×1.2,我的系统占用了不到 10G 的空间,备份文件大概是 11G 多一些,这相比于全盘备份的 128G 已经小太多了,在使用7z进行极限压缩后甚至只有 1.7G,进行日常归档备份完全可以接受。

该脚本进行系统恢复时也很方便,将 img 文件像安装系统一样刷入 tf卡 后对分区进行简单拓展后即可。接下来就来演示怎么使用该脚本进行备份。

备份演示

首先 clone 该脚本:

git clone https://github.com/nanhantianyi/rpi-backup.git && cd rpi-backup

然后要安装依赖项,这里我用的是 Manjaro-arm 系统。在 Manjaro 系统中该脚本无法自动安装依赖项,需要运行这行命令 sudo pacman -Sy && pacman -S dosfstools parted multipath-tools rsync 来安装依赖。
如果你是用 apt 进行安装软件的系统,可以跳过这一步,该脚本会自动安装依赖项。

然后运行

sudo ./back.sh youImageName.img

该脚本就会开始备份,如果不指定文件名则会自动命名。
如果你的内存卡剩余空间不够的话就挂载 U 盘,将 img 直接保存在 U 盘中,要注意U盘务必挂载到 /media 目录下,不要挂载到 /mnt,因为脚本会对 /mnt 目录进行备份操作,会导致递归性的备份,总之就是不要挂载到 /mnt 目录,切记!

脚本运行结束后就得到了备份镜像。

备份的恢复

备份镜像恢复可以直接用烧录软件直接烧录,这里我使用的是 Etcher,我也推荐大家使用这个软件,站内有这个软件的文章:使用 Etcher 给 SD 卡安装树莓派系统,界面简洁明了,选择镜像,选择要刷入的磁盘,Flash!


在烧录完毕后不要着急,我们还要一项操作没有做,打开 DiskGenius 后查看 tf 卡的分区可以看到有一部分空闲分区没有被分配。

这会导致进入系统后可用空间变少,在这里我直接用 DiskGenius 将空闲分区分配给 root 分区,这样不用在进入系统后做其他操作。
也可以进入系统后执行 git clone 来的 resize.sh 脚本进行扩容操作:sudo resize.sh,脚本运行完毕后会自动重启,两个步骤效果一样(但在部分系统会无法运行,还是推荐用 DiskGenius 弄好再开机)。

最后也不要忘了给该项目点一个 Star。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1804565.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在AMD GPU上加速大型语言模型的Flash Attention

Accelerating Large Language Models with Flash Attention on AMD GPUs — ROCm Blogs 引言 在这篇博客文章中,我们将指导您如何在AMD GPU上安装Flash Attention,并提供与在PyTorch中标准SDPA比较其性能的基准测试。我们还将测量Hugging Face中多个大型…

locale本地化库学习

std::locale 类型的对象(本地环境对象)是不可变刻面的一个不可变索引集。C 输入/输出库的每个流对象都与一个 std::locale 对象关联,并用它的各刻面来分析及格式化所有数据。另外,每个 std::basic_regex 对象也都与一个本地环境对…

【Gitlab】Gitlab MAC M1通过Docker Desktop安装教程

一、拉取镜像 docker pull yrzr/gitlab-ce-arm64v8 二、配置容器 2.1 配置Volumes 镜像下载完成后,可在Docker Desktop看到镜像 点击run,弹出以下界面,配置端口映射和目录挂载后,即可生成一个容器 配置Volumes Host PathCont…

51单片机-独立按键控制灯灯灯

目录 简介: 一. 1个独立按钮控制一个灯例子 二. 在加一个独立按键,控制第二个灯 三. 第一个开关 开灯, 第二个开关关灯 四. 点一下开灯,在点一下关灯 五. 总结 简介: 51 单片机具有强大的控制能力,而独立按键则提供了一种简单的输入方式。 当把独立按键与 …

Go微服务: 分布式之通过本地消息实现最终一致性和最大努力通知方案

通过本地消息实现最终一致性 1 )概述 我们的业务场景是可以允许我们一段时间有不一致的消息的状态的,并没有说必须特别高的这个消息的一致性比如说在TCC这个架构中,如果采用了消息的最终一致性,整体架构设计要轻松好多即便我们库…

设计模式-外观(门面)模式(结构型)

外观模式 外观模式又称门面模式(结构型模式),它是一个可以屏蔽系统复杂性的设计模式。俗话说没有什么问题是加一层“介质”解决不了的,如果有那就在加一层。在开发过程中肯定封装过Utils类,我认为这就是一种门面模式&…

Python魔法之旅-魔法方法(23)

目录 一、概述 1、定义 2、作用 二、应用场景 1、构造和析构 2、操作符重载 3、字符串和表示 4、容器管理 5、可调用对象 6、上下文管理 7、属性访问和描述符 8、迭代器和生成器 9、数值类型 10、复制和序列化 11、自定义元类行为 12、自定义类行为 13、类型检…

【C++11数据结构与算法】C++ 栈

C 栈(stack) 文章目录 C 栈(stack)栈的基本介绍栈的算法运用单调栈实战题LC例题:[321. 拼接最大数](https://leetcode.cn/problems/create-maximum-number/)LC例题:[316. 去除重复字母](https://leetcode.cn/problems/remove-duplicate-letters/) 栈的基…

如何使用ERC-20与Sui Coin标准创建Token

区块链使用tokens作为传递价值的基本手段。它们可以是区块链的原生交换单位,也可以是应用中的交换单位,甚至可以在游戏世界中用作货币。tokens还支持Sui和其他区块链上的强大DeFi活动。 以太坊使用ERC-20标准来创建tokens,借用智能合约&…

VueRouter3学习笔记

文章目录 1,入门案例2,一些细节高亮效果非当前路由会被销毁 3,嵌套路由4, 传递查询参数5,命名路由6,传递路径参数7,路径参数转props8,查询参数转props9,replace模式10&am…

ChatGPT-4o, 腾讯元宝,通义千问对比测试中文文化

国内的大模型应用我选择了国内综合实力最强的两个,一个是腾讯元宝,一个是通义千问。其它的豆包,Kimi,文心一言等在某些领域也有强于竞品的表现。 问一个中文文化比较基础的问题,我满以为中文文化chatGPT不如国内的大模型。可事实…

【安装笔记-20240608-Linux-动态域名更新服务之YDNS】

安装笔记-系列文章目录 安装笔记-20240608-Linux-动态域名更新服务之YDNS 文章目录 安装笔记-系列文章目录安装笔记-20240608-Linux-动态域名更新服务之YDNS 前言一、软件介绍名称:YDNS主页官方介绍 二、安装步骤测试版本:openwrt-23.05.3-x86-64注册填…

基于协调过滤算法商品推荐系统的设计

管理员账户功能包括:系统首页,个人中心,商品管理,论坛管理,商品资讯管理 前台账户功能包括:系统首页,个人中心,论坛,商品资讯,商家,商品 开发系统…

PyTorch学习6:多维特征输入

文章目录 前言一、模型说明二、示例1.求解步骤2.示例代码 总结 前言 介绍了如何处理多维特征的输入问题 一、模型说明 多维问题分类模型 二、示例 1.求解步骤 1.载入数据集:数据集用路径D:\anaconda\Lib\site-packages\sklearn\datasets\data下的diabetes.cs…

【C++ STL】模拟实现 string

标题:【C :: STL】手撕 STL _string 水墨不写bug (图片来源于网络) C标准模板库(STL)中的string是一个可变长的字符序列,它提供了一系列操作字符串的方法和功能。 本篇文章,我们将模拟实现STL的…

Polar Web【中等】写shell

Polar Web【中等】写shell Contents Polar Web【中等】写shell思路&探索EXP运行&总结 思路&探索 初看题目,预测需要对站点写入木马,具体操作需要在过程中逐步实现。 打开站点(见下图),出现 file_put_contents 函数,其…

pdf文件如何防篡改内容

PDF文件防篡改内容的方法有多种,以下是一些常见且有效的方法,它们可以帮助确保PDF文件的完整性和真实性: 加密PDF文档: 原理:通过设置密码来保护PDF文档,防止未经授权的访问和修改。注意事项:密…

如何对stm32查看IO功能。

有些同学对于别人的开发板的资源,或者IO口,或者串口等资源不知道怎么分配。 方法1、看硬石、野火、正点原子的开发板,看下他们的例子,那个资源用什么。自己多看几个原理图,多看几个视频,做一下笔记。以后依…

通过无障碍控制 Compose 界面滚动的实战和原理剖析

前言 针对 Compose UI 工具包,开发者不仅需要掌握如何使用新的 UI 组件达到 design 需求,更需要了解和实现与 UI 的交互逻辑。 比如 touch 事件、Accessibility 事件等等。 Compose 中对 touch 事件的处理和原理,笔者已经在《通过调用栈快…

Point-LIO:鲁棒高带宽激光惯性里程计

1. 动机 现有系统都是基于帧的,类似于VSLAM系统,频率固定(例如10Hz),但是实际上LiDAR是在不同时刻进行顺序采样,然后积累到一帧上,这不可避免地会引入运动畸变,从而影响建图和里程计精度。此外…