抬头仰望星空,是否能发现自己的渺小。

伪斜杠青年

人们总是混淆了欲望和理想

浅谈树莓派 4B tar 增量备份还原

背景

之前有写一份备份策略:谈谈树莓派 2B * 2(4B+)的备份策略

本不想有用得着的一天,但闪迪的 SD 终究还是在年尾凉了,想来这也是 7×24 运行的第 7 年开头,算是功德圆满,转头就又购入了一张。毕竟这年头,爱情都比不上这时长

对比起之前坏掉的硬盘,SD 卡几乎没有挽回余地,当 SD 卡仅可读时需要意识到卡片已坏,珍惜最后一次的可读机会,不要去做直接断电等加速毁坏行为。这里比较幸运的是坏掉的最后一天刚好有一次备份。

因为我在备份时,抛弃了 docker 的 overlay2 文件夹,于是相对与恢复系统外,多了一步 docker 的修复。

详情

准备一个 Linux 虚拟机,或者直接启动一个 live CD,准备好需要恢复的备份文件。

树莓派的 SD ,主要是两个分区,使用的 MS-DOS 分区表,一个卷标 system-boot,大小 300M 即可,fat32,打上标签 boot lba。另一个卷标 writableext4,swap 自行创建,后面记得写入 /etc/fstab 即可。分区推荐用 Linux常用的 Gparted,别想不开用什么命令行。

值得一提的是,在备份恢复时,需要将 boot 分区挂载在 / 中,类似:

mkdir /mount_path/boot/
mkdir /mount_path/boot/firmware

mount /dev/sdd2 /mount_path/
mount /dev/sdd1 /mount_path/boot/firmware

所有操作默认已经提权 sudo -s ,接下来就是一顿的 tar 恢复操作,我这里是增量备份,于是进行了多次解压覆盖:

tar xvpfz ubuntu_server_2025_01_06_buckup.tgz -C /mount_path
tar xvpfz ubuntu_server_2025_01_13_buckup.tgz -C /mount_path
tar xvpfz ubuntu_server_2025_01_20_buckup.tgz -C /mount_path
tar xvpfz ubuntu_server_2025_01_27_buckup.tgz -C /mount_path

完成后,修改恢复位置的 /etc/fstab,没有什么特殊需求的一般也就 swap 需要进行 uuid 的修改。

关于 docker 的修复

由于 docker 的源等都是正常的,只需要把 docker 链重新装一遍即可:

apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

因为网络问题,这里需要配置 docker 的代理 /etc/docker/daemon.json 

{
"proxies": {
"http-proxy": "http://0.0.0.0:xxxx",
"https-proxy": "http://0.0.0.0:xxxx"
}
}

然后重启 docker :systemctl restart docker

重新创建 docker 中需要的网络配置,容器等,由于存在之前的缓存会报错,这里需要进行一次 docker system prune -a ,注意:一些自定义的镜像也会被清除

在重新构建镜像时发现也被限制得不行,于是 build 命令也需要追加代理:

docker build -t your_image:latest . --network host \
--build-arg HTTP_PROXY=http://0.0.0.0:xxxx \
--build-arg HTTPS_PROXY=http://0.0.0.0:xxxx

容器弄完就大差不差了,数据和配置都在。

其他

其他一些自定义的 system service 以及自动任务等可能需要进行一些调试,避免无法启动而不知,以上。


本站由以下主机服务商提供服务支持:

0条评论

发表评论