背景
之前有写一份备份策略:谈谈树莓派 2B * 2(4B+)的备份策略
本不想有用得着的一天,但闪迪的 SD 终究还是在年尾凉了,想来这也是 7×24 运行的第 7 年开头,算是功德圆满,转头就又购入了一张。毕竟这年头,爱情都比不上这时长。
对比起之前坏掉的硬盘,SD 卡几乎没有挽回余地,当 SD 卡仅可读时需要意识到卡片已坏,珍惜最后一次的可读机会,不要去做直接断电等加速毁坏行为。这里比较幸运的是坏掉的最后一天刚好有一次备份。
因为我在备份时,抛弃了 docker 的 overlay2 文件夹,于是相对与恢复系统外,多了一步 docker 的修复。
详情
准备一个 Linux 虚拟机,或者直接启动一个 live CD,准备好需要恢复的备份文件。
树莓派的 SD ,主要是两个分区,使用的 MS-DOS 分区表,一个卷标 system-boot
,大小 300M 即可,fat32
,打上标签 boot
与 lba
。另一个卷标 writable
,ext4
,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条评论