玩 NAS 最绝望的一分钟:你的 Docker 数据不会备份?



折腾 NAS 最大的乐趣是什么?

装各种乱七八糟的 Docker。

搭个小雅,配好上万部电影的刮削。搭个 NextCloud,把全家的照片都存进去。搭个 Bitwarden,存下所有的密码。

看着满屏绿色的 “Running”,成就感拉满。

然后,有一天。系统崩溃了。

或者你不小心手贱,点错了更新按钮。

容器没了。

你安慰自己:没事,我有 docker-compose.yml 备份,重新跑一下就行。

等你跑完,打开网页。

傻眼了。

账号怎么全没了?我幸幸苦苦刮削的海报墙呢?我的笔记呢?

恭喜你,你只是备份了”程序”,根本没有备份”数据”。

━━━━━━━━━━━━━━━

一、为什么备份配置文件没用?

NAS 圈有个经久不衰的月经贴:Docker 数据怎么存?

很多人以为,只要把那几行 YAML 代码保存下来,就万事大吉了。

什么概念?

这就像你买了一套房,你只备份了房子的图纸,却没有备份放在保险柜里的房产证和金条。

房子塌了,图纸能帮你把空壳建起来。但保险柜里的东西,再也找不回来了。

Docker 容器本身是无状态的,可以随便删。但里面的数据,必须挂载出来。

如果你用的是 Bind Mounts(直接挂载到主机的文件夹),那还好办。连着文件夹一起备份就行。

但如果你用的是 Named Volumes(命名卷,数据存在被 Docker 藏起来的 /var/lib/docker/volumes 里)呢?

大部分人,压根不知道这地方的存在。

更糟糕的是第二点。

二、数据库,不能随意直接拷

我直接把整个共享文件夹定时复制一份,不就行了?

群晖的 Hyper Backup,极空间的备份工具,都是这么干的。

但这里有个大坑。

如果你跑了数据库(比如 MySQL、PostgreSQL),当数据库正在运行、正在写入数据的时候,你突然把底层文件拷贝走。

这份备份,极大概率是坏的。

什么意思?

数据库在写字写到一半,你把纸抽走复印了一份。复印出来的永远是残缺的半截话。

等你哪天真的需要恢复数据时,才会发现:没有验证过的备份,等于薛定谔的备份。

恢复的时候,直接报数据库损坏。

折腾一晚上搭好的一百个服务 vs 坏一块硬盘瞬间回到解放前。

够不够刺激?

三、Reddit 万人热议的方案

那到底该怎么办?

最近在知名自托管社区 r/selfhosted 上,跑出了一个爆帖:《你们是怎么备份 Docker 的?》

我带大家看看,真正的极客是怎么干的。

他们有一条金标准:备份数据库(及其挂载的卷),必须先暂停容器。

听起来很麻烦?

不需要自己写脚本。社区里有两个被推爆的高分工具。

方案 1:offen/docker-volume-backup (小白首选)

这是目前最受推荐的自动化工具。安装包不到 25MB。

它怎么工作?

你把它当成一个普通的 Docker 容器跑起来。它会按照你设定的时间(比如每天凌晨 3 点):

  1. 自动暂停你需要备份的容器(保证数据完整)
  2. 把数据打包压缩
  3. 发送到你的云端(支持 S3、WebDAV,甚至百度网盘/阿里云盘的 WebDAV 挂载)
  4. 自动重启容器
  5. 在旧备份太多时,自动帮你删掉更早的

不需要你敲几百行代码,写个配置文件丢进去,全自动运行。

方案 2:BretFisher/vackup (极客之选)

这是由 Docker 官方认证专家 (Docker Captain) 写的脚本工具。

如果你不想搞复杂的定时发云端,只想在本地偶尔手动把某个隐藏的很深的 Volume 导出来存好。

用这个 vackup 工具,两行命令,直接把 Volume 变成一个干净的 .tar.gz 压缩包。

想恢复?也是一句命令。

(注:现在新版 Docker Desktop 已经内置类似功能,但 NAS 玩家往往没有 Desktop 界面,这个脚本依然是神器。)

⚠️ 关于 Duplicati 的排雷

很多老教程会推荐用 Duplicati 来做备份。

听奶爸的,别用

在 Reddit 的那个帖子里,大量重度用户血泪控诉:这玩意长期运行后,它自己的数据库极其容易损坏。

你要用它恢复数据的时候,它告诉你它自己坏了。

这就是套娃式悲剧。

如果只是备份普通文件夹(Bind Mounts),老老实实用 Restic 或者群晖自带的 Hyper Backup。甚至最古老的 Rsync 都比它靠谱。

真正的玩家,不是看谁搭的服务多。

而是看谁在硬盘冒烟的那一刻,还能气定神闲地去泡杯咖啡。

你的 Docker 文件夹,昨晚备份了吗?

关注科技奶爸,下周教你实操部署自动化备份库。

参考来源

━━━━━━━━━━━━━━━

#NAS #Docker #数据备份 #群晖 #极空间 #服务器防灾