惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - Franky
C
CXSECURITY Database RSS Feed - CXSecurity.com
S
Schneier on Security
Know Your Adversary
Know Your Adversary
Security Latest
Security Latest
Spread Privacy
Spread Privacy
Project Zero
Project Zero
T
The Exploit Database - CXSecurity.com
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
AI
AI
N
News | PayPal Newsroom
A
Arctic Wolf
NISL@THU
NISL@THU
W
WeLiveSecurity
Security Archives - TechRepublic
Security Archives - TechRepublic
Hacker News: Ask HN
Hacker News: Ask HN
P
Palo Alto Networks Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
大猫的无限游戏
大猫的无限游戏
L
Lohrmann on Cybersecurity
Last Week in AI
Last Week in AI
T
Threatpost
The Last Watchdog
The Last Watchdog
博客园_首页
C
Cybersecurity and Infrastructure Security Agency CISA
酷 壳 – CoolShell
酷 壳 – CoolShell
量子位
Engineering at Meta
Engineering at Meta
爱范儿
爱范儿
aimingoo的专栏
aimingoo的专栏
S
Security Affairs
P
Privacy & Cybersecurity Law Blog
B
Blog RSS Feed
AWS News Blog
AWS News Blog
P
Proofpoint News Feed
雷峰网
雷峰网
T
Tenable Blog
Schneier on Security
Schneier on Security
H
Heimdal Security Blog
V2EX - 技术
V2EX - 技术
V
V2EX
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
S
Secure Thoughts
Latest news
Latest news
Help Net Security
Help Net Security
Jina AI
Jina AI
Stack Overflow Blog
Stack Overflow Blog
The Cloudflare Blog
V
Vulnerabilities – Threatpost
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org

涛叔

自用 Claude Code 拼车中转服务 欢迎使用 @ZZ.AC 邮箱服务 我在用的 VPS 云主机 Go语言接口的空指针问题 玩转 ZZ.AC 域名 ZZ.NIC 公益 Linux 主机空间 使用 Nginx 构建计费 DoH 代理服务 通过 Let’s Encrypt 为 IP 地址签发免费 SSL 证书
实现备份3-2-1原则
2026-02-21 · via 涛叔

NAS上线之后便部署了 Immich 来保存照片1。自托管虽然空间够用,但数据安全却需要自行保障。为此,我参考3-2-1原则制定了数据备份方案,今天分享给大家。

💡Tip

备份3-2-1原则为即为3个副本、2个不同备份介质、1个异地灾备中心。即,数据保留3份,备份在2个不同备份介质中,同时还有至少1个异地容灾数据中心。

我在 NAS 设备一文2中已经讲过,因为存储价格高企,只买了两块4T的硬盘。如果做 RAID,最大容量只有4T,很不划算。但为了数据安全又不得不备份数据。这可如何是好呢?

我想的方案是在应用导致备份数据。简单来说就是通过工具自动备份照片等核数据。比如我的两块硬盘 A 和 B,Immich 数据指定保存到 A 上,然后再通过工具定时将数据同步到 B 上,这就实现了最基本的数据备份。只要不是两块硬盘同时坏,数据就不会丢。

因为两块硬盘在同一设备上,备份工具有多种先择。最简单也最常用的就是 rsync,可以实现增量备份。下面指令就能完成备份:

rsync -avP /a/immich /b/backup

首次执行会复制全部数据,后续再执行只会复制新增的数据,非常高效。

但我却不建议在这种情形下使用 rsync,因为它缺少一种核心特性——数据快照!

数据快照可以解决为数据版本。将磁盘上的照片和视频数据看成一个整体,每天都会增删。我希望可以把每天的数据状态用快照来固定下来。如果今天不小心删除了某些文件,就可以回滚到昨天的版本。

自己误删除的场景问题还不大,最危险的是设备被黑客控制,它们可能将所有数据都加密,然后勒索赎金。如果不用快照而是直接用 rsync,那么家时备份工具可能会用加密后数据来覆盖正常的数据,从而丧失保护作用。而用了快照就不同了,它只能影响最新的快照,而无法破坏已经备份的版本。

带数据快照的备份工具也有很多,我这里用的是 BorgBackup,它支持快照、加密、压缩等功能。

在使用之前需要先创建备份仓库:

borg init --encryption=none $BACKUP_PATH/immich

我这里禁用了加密功能。首先,我是自己的设备,不需要加密数据;其次,加密数据会额外消耗算力,耗电不说,还会增加备份时长。所以我就禁用了。如果大家需要将数据备份到三方的服务器,那确实应该开启加密。这部分可以自己用 AI 查询。

创建仓库之后就可以备份数据了。备份数据需要指定快照名字:

borg create --stats "$BACKUP_PATH/immich::{now}" $UPLOAD_LOCATION \
        --exclude $UPLOAD_LOCATION/thumbs/ \
        --exclude $UPLOAD_LOCATION/encoded-video/

这里后面的::{now}表示用当前时间做版本号。这里我还用--exclude跳过一些临时目录,里面的内容可以通过 Immich 生成,没有必要占用宝贵的磁盘空间。

数据备份之后可以通过list子命令查看快照:

borg list immich/
2025-12-31T04:00:04  Wed, 2025-12-31 04:00:05 [700665f3312ee979...]
2026-01-31T04:00:04  Sat, 2026-01-31 04:00:05 [91eac62238eec0aa...]
2026-02-28T04:00:04  Sat, 2026-02-28 04:00:04 [b3e87ce3b3e63c95...]
2026-03-01T04:00:04  Sun, 2026-03-01 04:00:04 [727e7272739f5f01...]
2026-03-08T04:00:04  Sun, 2026-03-08 04:00:04 [c52dfd6f81447c18...]
2026-03-15T04:00:04  Sun, 2026-03-15 04:00:04 [7ce6672c22950384...]
2026-03-16T04:00:04  Mon, 2026-03-16 04:00:04 [1be999423649aa5f...]

注意第一列就是前面说的版本号。备份之后我们就可以查看或者提取相关数据:

# 查看快照文件目录
borg list $BACKUP_PATH/immich::2026-03-16T04:00:04
# 提取快照内容到当前目录
borg extract $BACKUP_PATH/immich::2026-03-16T04:00:04
# 删除快照
borg delete $BACKUP_PATH/immich::2026-03-16T04:00:04

每天生成快照会占用大量磁盘空间,我们可以制定清理策略。比如最近7天每天保留一个快照,最近4周每周保留一个快照,最近3个月每月保留一个快照,可以执行如下命令:

borg prune \
  --keep-daily=7 \
  --keep-weekly=4 \
  --keep-monthly=3 \
  $BACKUP_PATH/immich

borg 会自动删除过期的快照。但删除后不会清理数据,为此还需要执行:

borg compact $BACKUP_PATH/immich

好了,到现在我们就完成了最基本的数据备份。要满足3-2-1原则,我们还得再做一次异地备份。通常大家会将备份数据上传到网盘。但我家情况特别,有两个小院,而且已经通过 10G 光纤打通3,所以我就把异地备份数据放到另一个小院了。

另一个小院因为不住人,只放了一台 GL-iNet A1300 迷你路由器。好在我还有一块2T闪迪固态移动硬盘,就用它们保存数据了。这台路由器上刷了 OpenWRT 系统,接入移动硬盘还需要额外安装软件包4

简陋的异地备份设备

然后就用 rsync 来同步数据就行了:

rsync -avzP --delete /data2/backup root@a13.lan:/mnt/sda1

A1300 性能较差,而 rsync 走 ssh 又需要加密,所以首次全量同步性能较差,只有 10MB/s,白瞎了我 10Gbps 的网络🤦‍♂️好在后续只会同步增量数据,问题不大。数据无价,先确保安全,再想办法提升性能。

💡Tip

还有细节需要提一下,备份数据使用 root 账号,运行 Immich 使用普通账号。这样即便 Immich 服务被黑客攻破,它也很难获得 root 权限来操作备份数据。

以上就是我的3-2-1备份方案。在保障数据安全的前提一下,尽量复用已有设备,减少浪费,算是一种比较经济的方案。但这套方案还不够完善。虽然异地备份可以抵抗火灾这类的问题,但两个小院毕竟在一个村里,如果有洪水或地震,可能也会完全丢失数据,后续还是有必要在云端备份数据。

来一张 nano-banana-pro 根据本文内容生成的总结图片😂

数据备份3-2-1方案

  1. ./immich-with-podman.html↩︎

  2. ./nas.html↩︎

  3. 有兴趣可以看我家的网络拓扑 ./network.html↩︎

  4. 请参考官方文档 https://openwrt.org/docs/guide-user/storage/usb-drives↩︎