树莓派系统压缩备份——PiShrink应用实操
先进行全卡备份
树莓派系统全卡备份有以下几种方式:
Windows全卡备份:
- 在硬盘上创建img后缀空文件;
- 打开Win32DiskImager,选择刚刚创建的空img 文件和 SD 卡盘符;
- 点击read等待完成。
- 特点:备份文件与SD卡容量一致,还原时必须使用比镜像更大容量的SD卡。
树莓派上直接复制系统:
- 保持载有原系统的SD卡正常运行,将新(已完成格式化)的SD卡通过读卡器挂载到树莓派,之后使用umount 卸载该挂载;
- 使用命令
dd bs=4M if=/dev/mmcblk0 of=/dev/sda
将原树莓派系统内容全部拷贝到新SD卡上(mmcblk0 是树莓派上系统 TF卡,sda 是新SD卡,可以通过lsblk命令查看),等待完成后即实现卡内系统的复制。 - 此外,也可使用树莓派的桌面系统自带 SD Card Copier,无需输入命令完成复制过程。
- 特点:该方法实际上是将原系统镜像写入另外一张 SD 卡,适合有新SD卡的情况下将原有系统复制,不适合用作备份。
Linux全卡备份
- SD卡挂载
- Ubuntu环境下SD卡会自动进行挂载;
- 其他发行版本Linux可能会出现无法自动挂载SD卡情况,需要通过以下命令进行手动挂载:
cd /media
sudo mkdir sdc1 sdc2
sudo mount /dev/sdc1 /media/sdc1
sudo mount /dev/sdc2 /media/sdc2
- SD卡挂载完成后,使用
df -h
命令可以查看SD卡内情况,/dev/sdb1
和/dev/sdb2
即树莓派系统所在的SD卡,Ubuntu文件夹名称为sdb,其他发行版可能为sdc。 - 全卡备份
使用 dd 命令直接备份SD卡,Ubuntu下SD卡的路径是/dev/sdb1
和/dev/sdb2
,因此备份整个SD卡的路径为/dev/sdb
,明确SD卡路径后执行命令:
# 压缩包保存路径及文件名自拟
sudo dd if=/dev/sdb | gzip>/path/filename.gz
- 特点:可以在备份的同时压缩镜像大小,但在进行最小化备份时需要先解压。
再进行镜像切割实现最小化
安装PiShrink
- 使用wget安装PiShrink:
wget https://raw.githubusercontent.com/Drewsif/PiShrink/master/pishrink.sh
若遇到无法连接的情况,需要修改host文件解决DNS污染问题:
- 在https://site.ip138.com/raw.Githubusercontent.com/上查询IP地址。
- 打开host文件:
sudo nano /etc/hosts
- 打开文件后添加
151.101.76.133 raw.githubusercontent.com
即可
- 将下载的 PiShrink 变成二进制可执行文件:
chmod +x pishrink.sh
- 将文件移动到
bin
目录:
sudo mv pishrink.sh /usr/local/bin/
处理.gz文件
先对压缩包进行解压缩:
gzip -d FileName.gz
# 或
gunzip FileName.gz
将解压的文件重命名为.img后缀的镜像文件:
mv filename filename.img
执行镜像压缩
- 确保.img文件与PiShrink处于同一文件夹内。
- 确保系统语言为英文。
- 启动PiShrink进行压缩:
sudo pishrink.sh filename.img
此时终端会出现假死,耐心等待即可,或用watch命令监听filename.img文件。