## 2026 年为什么用 Kopia
Linux 备份这件事,每隔一两年工具轮换一次,旧文章很容易过期。Timeshift 适合本地系统回滚,但不联网。Borg 去重快,但上云要靠 rclone 拼。Restic 是把本地数据直传 S3 / B2 的默认选项,但没有 GUI,多台机器从手机管理很别扭。
Kopia 卡在中间:自带 GUI、能去重、能加密、原生支持 S3 / B2 / Azure / SFTP / WebDAV / 本地。2026 年 5 月发的 v0.23 加了 storage-provider 注册和更稳的服务端调度,6 月 16 日的 v0.23.1 修了一个维护者明确标注”可能导致数据丢失”的竞态,这个时间点重新看一下 Kopia 比较合适。
下面是一台 Linux 机器上的真实安装、首次备份、还原(含单文件和 FUSE 挂载),用来判断它是否适合你的环境。
## Linux 上安装 Kopia
Kopia 的安装是 FOSS 备份工具里最干净的:单个二进制,默认不跑守护进程,GUI 是可选的。挑自己发行版对应的就行。
“`bash
# 当前稳定版(写稿时是 v0.23.x):
curl -sSLf https://kopia.io/signing-key | sudo gpg –dearmor
-o /usr/share/keyrings/kopia.gpg
echo “deb [signed-by=/usr/share/keyrings/kopia.gpg]
https://kopia.io/apt/ stable main”
| sudo tee /etc/apt/sources.list.d/kopia.list
sudo apt update && sudo apt install kopia kopia-ui
“`
Fedora / RHEL 用[官方 RPM 仓库](https://kopia.io/docs/installation/),Arch 的 AUR 包 `kopia` 跟随上游。`kopia-ui` 是基于 Electron 的桌面客户端,要 GUI 就装,无头服务器跳过它。
装好后确认:
“`bash
$ kopia –version
Kopia 0.23.1 (built with go1.26.4 on linux/amd64)
“`
看到上面版本说明你装上了 2026 年 5 月的 v0.23 系列,包含竞态修复。看到 `apt list –upgradable` 里有 v0.22 就顺手升一下。
## 创建第一个仓库
Kopia 的 *repository* 是加密 blob 存放处,可以是本地、NFS、SFTP 路径或云端。先选最容易的那个,后面随时可以迁。
外接盘上的本地仓库:
“`bash
$ sudo mkdir -p /mnt/backup/kopia
$ sudo kopia repository create filesystem
–path=/mnt/backup/kopia
Enter password to encrypt new repository: ********
Re-enter to confirm: ********
Initialized repository in /mnt/backup/kopia.
“`
Backblaze B2(恢复到新 B2 桶不收 egress 流量费):
“`bash
$ kopia repository create b2
–bucket=my-backups
–key-id=
–key=
–prefix=kopia
“`
S3(AWS / MinIO / Wasabi / R2 都行):
“`bash
$ kopia repository create s3
–bucket=my-bucket
–prefix=kopia
–access-key=<...> –secret-access-key=<...>
–endpoint=s3.us-east-1.amazonaws.com
“`
仓库密码是跟云端密钥分开存的——所有 per-blob 加密密钥都从它派生(AES-256-GCM),丢了密码,桶在也读不出来。放密码管理器里。

## Kopia 内部数据流
备份之前,先看 Kopia 在背后做了什么。每个快照都走同一条管线:

1. **分块(Chunk)**——64 字节滚动哈希 + 平均 4 MiB 块大小切文件。相同内容跨文件产出相同块。
2. **加密(Encrypt)**——每个块用仓库密码派生的密钥做 AES-256-GCM 加密。
3. **压缩(Compress)**——默认 zstd;想快换 `–compression=lz4`,想更紧换 `–compression=s2`。
4. **去重(Deduplicate)**——块按内容寻址,仓库已存在的块不上传。
结果:同一个 `~/Projects` 备份两次,第二次只上传真的改了的部分;两台机器上有共享文件,块也是对齐的。
## 第一次快照
“`bash
$ kopia snapshot create ~/Documents
Snapshotted 1,243 files, 412.7 MiB
Snapshot ID: k192a3c2b4f88e0d1c12e at 2026-08-04 09:15:04 UTC
“`
看一下结果:
“`bash
$ kopia snapshot list
2026-08-04 09:15:04 k192a3c2b4f88e0d1c12e host:thinkpad paths:~/Documents
“`
一次性把重要目录都带上:
“`bash
$ kopia snapshot create all
~/Documents ~/Projects ~/.config /etc/nginx
“`
`all` 适合手动临时任务。要定时跑,就得上 *policy*。
## 设置留存策略和压缩策略
Kopia 的 policy 决定了”这是备份而不是一堆副本”。没有留存规则,仓库会一直涨到桶满,然后上传失败。
“`bash
$ kopia policy set ~/.config
–keep-latest=14
–keep-daily=30
–keep-weekly=12
–keep-monthly=12
–compression=zstd
“`
上面这条保留最近 14 个快照、30 天日备份、12 周、12 月,搭配 `–compression=zstd` 和 `–retention-above-percentage=80`,就是个自动清理的省心配置,仓库满时从最旧开始丢。
定时任务交给 `~/.config/systemd/user/kopia.service` + timer,或者直接 cron。

## 三种还原方式
Kopia 的”还原”是大家挑备份工具最容易忽略、但出事时最关键的部分。
**1. 翻快照找文件**。
“`bash
$ kopia snapshot list
$ kopia ls k192a3c2b4f88e0d1c12e:Documents/report.pdf
-rw-r–r– 412.7 KB 2026-08-04 09:14:51
“`
**2. 把指定文件/目录还原到新目录**——99% 情况你想要的流程,不会动到在线数据。
“`bash
$ kopia restore k192a3c2b4f88e0d1c12e
Documents/report.pdf
/tmp/recover/
Restored 1 file (412.7 KB) to /tmp/recover/Documents/report.pdf.
“`
**3. FUSE 只读挂载为目录**——不知道要哪个文件的时候,用 `kopia mount` 把整份快照暴露成虚拟目录,再用任何文件管理器拖出来。
“`bash
$ kopia mount k192a3c2b4f88e0d1c12e /mnt/k
$ ls /mnt/k/Documents
report.pdf notes.txt …
$ fusermount -u /mnt/k
“`
这些都不需要 GUI,无头服务器照样跑。仓库在 S3、B2 还是外接盘,命令都一样。

## Kopia GUI(需要的时候)
Electron 的 `kopia-ui` 在笔记本和工作站上值得装。它接入同一个 `kopia` server 进程,给你带日历视图的快照浏览,能用表单而不是 CLI 编辑 policy。背后引擎就是上面手敲的命令,没有第二份配置要同步。
官方文档走 GUI 流程在 [kopia.io/docs/getting-started](https://kopia.io/docs/getting-started/)。多台机器集中备份,可以看 [Kopia Repository Server](https://kopia.io/docs/repository-server/)——多个客户端都把数据往一个服务端仓库塞,带 HTTP API 和 Web UI。
## Kopia 不该用的场景
Kopia 不是磁盘镜像工具。想”克隆整块 SSD 之后直接换盘”用 `dd`、`Clonezilla`、`btrfs send`,让 Kopia 边上去。Borg 在裸机恢复上的故事更全,Timeshift 的”一键系统回滚”也要比 Kopia 简单。
homelab 一群 Linux 机器、每台都要自己加密备份到 S3 / B2 的话,2026 年 Kopia v0.23 是最干净的选项之一,可以放手让它自动跑。
项目主页:[https://kopia.io](https://kopia.io) · 发布:[github.com/kopia/kopia/releases](https://github.com/kopia/kopia/releases)
评论