Plakar 社区版 1.1.8 介绍与选型指南
Plakar 社区版(开源 Kloset 加密去重备份引擎)介绍与选型:项目沿革、Kloset 架构与快照模型、数据管道、功能特性、快速开始与 restic/Borg 等同类备份工具对比,基于 Ubuntu 22.04 + v1.1.8 实测(2026-10-30)。
Plakar 社区版 1.1.8 介绍与选型指南
目标:全面认识 Plakar 社区版(开源版)这款「加密、去重、可校验」的备份引擎——理解 Kloset 存储库架构与快照模型,并在十分钟内跑通「建库 → 备份 → 浏览 → 恢复」最小闭环。文中全部命令与输出均在 Ubuntu 22.04.5 LTS(x86_64)+ Plakar v1.1.8 环境实测通过,实测日期 2026-10-30。
一、环境信息
本章列出实测环境的关键可复现信息,正文所有命令与回显均来自该环境:
- 操作系统:Ubuntu 22.04.5 LTS
- 系统架构:x86_64
- 软件版本:Plakar v1.1.8(社区版,
plakar version回显plakar/v1.1.8;官方 deb 包版本号1.1.8-1) - 开发语言:Go(官方安装文档注明:自 v1.1.8 起从源码构建需要 Go 1.26.10 及以上)
- Kloset 仓库目录:
/srv/backups(本地文件系统后端) - 备份源目录:
/srv/demo-docs(含configs/、docs/、photos/三个子目录,覆盖符号链接与二进制样本文件,逻辑总量约 792 KiB) - 服务端口:
plakar server默认监听 9876;plakar ui实测监听 8146 - 实测日期:2026-10-30
二、软件概述
2.1 一句话定位
Plakar 是 PlakarKorp 公司开源的备份引擎,官方仓库的一句话描述是「plakar is a backup solution powered by Kloset and ptar」:由 Kloset 不可变存储库与 ptar 归档格式两大自研底座驱动,主打「Encrypted, deduplicated, verifiable, and scalable」(加密、去重、可校验、可扩展),以零信任加密与无厂商锁定为卖点。它可以对任意目录做快照,把数据放进一个加密、去重的存储库,之后随时浏览、校验、按需恢复,而不必整包还原。
它主要回应传统备份方案的三个痛点:
- 快照是黑盒:很多工具的备份产物只能整体还原,想确认某个文件是否备好、想对比两个时间点的差异都很麻烦。Plakar 的快照是「可浏览」的——可以像文件系统一样查看内容、逐字节对比两个快照、只恢复其中一个文件,还可以在完全不还原的前提下校验快照完整性。
- 多版本存储成本线性膨胀:Plakar 基于内容定义分块做去重,配合压缩,保存大量历史快照不会等比例占用磁盘。
- 加密不彻底:Plakar 的加密同时覆盖数据与元数据,其密码学实现经过了第三方审计(官方 2025-02-28 发布审计报告,见参考链接)。
2.2 项目沿革与社区活跃度
以下数据于 2026-10-30 实查 GitHub 仓库 PlakarKorp/plakar:
| 项目 | 数据 |
|---|---|
| 仓库地址 | https://github.com/PlakarKorp/plakar |
| 创建时间 | 2021-03-19 |
| 开发语言 | Go |
| 开源许可 | ISC License |
| Stars | 2101 |
| Forks | 103 |
| 开放 Issues | 84 |
| 官网 | https://www.plakar.io |
社区渠道包括 Discord、Reddit(r/plakar)与 YouTube 频道,文档与版本发布节奏较快,属于年轻但高速迭代的项目:截至 2026-10-30,官网下载页在售版本从 v1.0.4 一路排到 v1.1.8,Ubuntu 官方 deb 仓库的候选版本即为 1.1.8-1。
2.3 社区版与 Control Plane(企业版)的分野
Plakar 官网下载页明确写着:「Plakar Control Plane is the enterprise version of Plakar. It is delivered as a virtual appliance and provides a web-based management interface for centralized backup management for your infrastructure.」 也就是说,Plakar 存在社区版(开源 CLI 引擎)与 Control Plane(集中控制面,企业版)两条产品线,社区文档独立挂在 docs/community/ 路径下。本文及本系列文档均以社区版 v1.1.8 为对象,对比如下:
| 维度 | Plakar 社区版(本文对象) | Plakar Control Plane(企业版) |
|---|---|---|
| 定位 | 开源备份引擎(CLI + 内置 Web UI) | 企业级集中备份管理平台 |
| 交付形态 | 单一静态二进制 / deb / rpm / apk / tar.gz | 虚拟设备(AWS AMI、QCOW2、OVA、ISO) |
| 管理界面 | plakar ui 单仓库视角 | Web 集中管理控制面 |
| 许可 | ISC 开源 | 商业授权 |
| 适用对象 | 单机或少量服务器的技术团队自维护 | 需要集中管控大量备份任务的企业 |
2.4 官方能力画像
官方仓库对 Plakar 能力差异化的概括是:快照可浏览(inspect、diff、单文件 restore);每个快照可独立校验而无需还原;去重与压缩使多快照的存储成本不再线性增长;加密覆盖数据与元数据且经过审计;通过集成(integrations)扩展备份源与存储后端。使用形态上「Plakar can be used from the command line or through its built-in web UI」——CLI 是第一公民,Web UI 是内置附属。这些画像在下文架构与功能章节中均能对应到实测证据。
三、核心架构
3.1 总体形态:CLI 引擎 + Kloset 存储库
Plakar 是纯客户端形态的备份引擎:没有服务端依赖、不需要数据库,所有状态收敛在一个 Kloset 存储库(repository)里。仓库可以放在本地目录,也可以是远程 HTTP 端点(由 plakar server 暴露)、S3 兼容对象存储、SFTP 等(后两者等集成包经 plakar pkg 安装后可用)。命令行用 plakar at <location> 前缀显式指定仓库;省略 at 时使用默认仓库目录(当前用户主目录下的 .plakar)或环境变量 PLAKAR_REPOSITORY 指向的位置。
💡 技术拓展:备份工具的存储后端(location)常见形态对比——
后端 形式 适用场景 本地目录 直接路径(如 /srv/backups)单机备份、NAS/NFS 挂载点 远程服务端 http://host:9876(plakar server)多客户端共用一个仓库、细粒度授权 对象存储 S3 兼容桶( plakar pkg add s3后可用)异地容灾、海量数据、按量付费 SSH 远端 sftp://host/path(plakar pkg add sftp后可用)复用已有 SSH 通道与主机 本文实测采用「本地目录」与「http 远端」两种形态;S3/SFTP 属集成包能力,需先安装对应 pkg。
3.2 Kloset 存储库的目录结构
初始化完成后的仓库目录实测如下(ls /srv/backups):
CONFIG
locks
packfiles
states
| 条目 | 作用 |
|---|---|
CONFIG | 仓库配置(二进制格式),记录分块/哈希/压缩/加密全套参数与 RepositoryID |
locks/ | 仓库级排他锁文件,防止并发写入损坏(实测见 4.5 节维护与锁) |
packfiles/ | 数据包文件,加密去重后的实际数据存放处(单包上限 64 MiB) |
states/ | 快照状态数据(snapshot state) |
对 CONFIG 文件做十六进制查看,其头部可见 _KLOSET_ 魔数及内嵌的 RepositoryID、Packfile、Chunking 等字段名——仓库参数自描述,任何兼容实现都能解读。
3.3 快照(Snapshot)模型
每次 plakar backup 生成一个快照,快照 ID 是 64 位十六进制串,交互中通常用前 8 位短 ID(如 f7e99ead)。plakar info <快照ID> 的实测回显展示了快照的完整元数据结构:
$ plakar at /srv/backups info f7e99ead
Version: v1.0.0
SnapshotID: f7e99ead520e651084789f01a7497ba26b00f55392e0c0450dff5eba74a6eb62
Timestamp: 2026-10-30 11:58:47.158175599 +0000 UTC
Duration: 21.834503ms
Name: prod-docs
Environment:
Perimeter:
Category:
VFS:
- Root: a0e2363f315bf93689012b82a07ddde3cd0ea75ba6160d0161620fbae7341691
- Xattrs: a1a297e2b54722f899c503501e050986e0006349a6140bc133af727ae8310843
- Errors: a1a297e2b54722f899c503501e050986e0006349a6140bc133af727ae8310843
Importer:
- Type: fs
- Origin: plakar-server
- Directory: /srv/demo-docs
Context:
- MachineID:
- Hostname: plakar-server
- Username: root
- OperatingSystem: linux
- Architecture: amd64
- NumCPU: 6
- GOMAXPROCS:
- ProcessID: 4538
- Client: plakar/v1.1.8
- CommandLine: plakar at /srv/backups backup -name prod-docs /srv/demo-docs
Summary:
- Directories: 5
- Files: 5
- Symlinks: 1
- Devices: 0
- Pipes: 0
- Sockets: 0
- Setuid: 0
- Setgid: 0
- Sticky: 0
- Objects: 5
- Chunks: 5
- MinSize: 0 B (0 bytes)
- MaxSize: 512 KiB (524288 bytes)
- Size: 792 KiB (810455 bytes)
- MinModTime: 1970-01-01 00:00:00 +0000 UTC
- MaxModTime: 2026-10-30 11:46:42 +0000 UTC
- MinEntropy: 0.000000
- MaxEntropy: 7.999643
- HiEntropy: 2
- LoEntropy: 1
- MIMEAudio: 0
- MIMEVideo: 0
- MIMEImage: 0
- MIMEText: 3
- MIMEApplication: 3
- MIMEOther: 0
- Errors: 0
逐段解读:
- VFS:快照的虚拟文件系统,Root 是根节点哈希——快照本质是一棵带哈希校验的文件树,因此可独立校验、可任意两个快照间 diff;
- Importer:数据来源连接器信息(类型、来源、目录),fs 即本地文件系统导入器;
- Context:采集环境上下文(主机名、用户、系统、架构、客户端版本乃至完整命令行),审计友好;
- Summary:文件/目录计数汇总,并延伸到符号链接数、对象/分块统计、修改时间范围、熵值与 MIME 类型分布(实测该快照:文本 3、应用 3),可一眼识别快照内容特征。
快照彼此独立、自包含,这是「快照可单独校验、可任意 diff、删除互不影响」的基础。
3.4 数据管道:分块 → 哈希 → 压缩 → 加密 → 打包
plakar info 实测回显给出仓库级全套参数(以下为 /srv/backups 仓库完整输出):
$ plakar at /srv/backups info
Version: v1.0.0
Timestamp: 2026-10-30 11:45:27.56549473 +0000 UTC
RepositoryID: 86928610-d625-4e33-9b45-24a7a48816e4
Packfile:
- MaxSize: 64 MiB (67108864 bytes)
Chunking:
- Algorithm: fastcdc-v1.0.0
- MinSize: 512 KiB (524288 bytes)
- NormalSize: 1.0 MiB (1048576 bytes)
- MaxSize: 8.0 MiB (8388608 bytes)
Hashing:
- Algorithm: BLAKE3
- Bits: 256
Compression:
- Algorithm: LZ4
- Level: 131072
Encryption:
- SubkeyAlgorithm: AES256-KW
- DataAlgorithm: AES256-GCM-SIV
- ChunkSize: 65536
- Canary: 02fa6160df03bf0a188cabc772e222efb57f5475e9f0097523233dce3f3c78daba50a7f7e2c85e3df62469a6d6cb7656fb52dfe0f19a03831efd4d96cf02ea54415288a8285e79182d733a337b81214995f15782d5bb15d27d241539c13916f57f9c1538
- KDF: ARGON2ID
- Salt: ee60c428766755e99fc5691950e76f37
- SaltSize: 16
- KeyLen: 32
- Time: 4
- Memory: 262144
- Thread: 1
Snapshots: 2
Storage size: 8.8 MiB (9264860 bytes)
Logical size: 792 KiB (810507 bytes)
管道五步的含义与实测参数:
- 分块(Chunking):内容定义分块,算法
fastcdc-v1.0.0,块大小 512 KiB~8 MiB(平均 1 MiB); - 哈希(Hashing):BLAKE3、256 位,块哈希即去重身份,内容相同则哈希相同;
- 压缩(Compression):LZ4、压缩级别 131072;
- 加密(Encryption):子密钥用 AES256-KW 封装,数据块用 AES256-GCM-SIV 认证加密(块 64 KiB),口令经 Argon2id 派生(time=4、memory=256 MiB、单线程),Canary 字段用于口令正确性快速校验;
- 打包(Packfile):块打包写入 packfiles,单包上限 64 MiB。
💡 技术拓展:去重分块算法对比——
算法 原理 特点与取舍 固定分块 按固定字节长度切块 实现最简;文件头部插入一个字节后整块错位,去重率崩塌 Rabin 指纹 滑动窗口多项式指纹定界 经典 CDC,restic 采用;窗口计算成本中等 Buzhash 滑动窗口循环哈希定界 计算快,BorgBackup、kopia 采用 FastCDC 在 CDC 基础上加大窗口跳跃 + 分级阈值 更少哈希计算、更快定界,Plakar 实测采用 fastcdc-v1.0.0 Plakar 取 FastCDC 并把块上限提到 8 MiB,利于大文件场景的去重效率。
💡 技术拓展:常见密码哈希/摘要算法对比——
算法 特点 适用场景 SHA-256 最通用的密码学摘要,生态最广,速度一般 通用校验、证书 SHA-3 系列 与 SHA-2 不同的构造,抗length-extension 替代 SHA-2 的场景 BLAKE2 快于 MD5 级别的安全摘要 高吞吐哈希 BLAKE3 BLAKE2 后继,树形并行,极快且抗碰撞 本文实测采用:海量数据块的快速定身 Plakar 选用 BLAKE3(256 位)正是看中其在 GB 级吞吐下的哈希速度。
💡 技术拓展:认证加密(AEAD)算法对比——
算法 特点 适用场景 AES-256-GCM 通用 AEAD,硬件加速普及 传输与存储加密的主流选择 ChaCha20-Poly1305 无 AES 硬件时表现好 移动端/软实现(kopia 可选) AES-256-CTR + Poly1305 组合式构造 restic 采用的组合 AES-256-GCM-SIV 抗 nonce 误用的 SIV 变体,误用随机数也不会泄露等值关系 对实现错误更宽容的存储加密,Plakar 实测采用 Plakar 的组合是「口令 Argon2id 派生主密钥 → AES256-KW 封装数据子密钥 → AES256-GCM-SIV 加密数据块」,密钥分层、职责清晰。
3.5 非守护进程设计与三种访问形态
官方仓库明确说明:「Plakar does not run as a daemon. To back up on a schedule, run plakar backup from a systemd timer or cron.」 Plakar 不以常驻守护进程方式工作,定时备份靠 cron 或 systemd timer 拉起 CLI(官方提供了定时备份指南,见参考链接)。它的三种运行形态都是按需拉起:
| 形态 | 命令 | 用途 |
|---|---|---|
| CLI | plakar <子命令> | 备份、浏览、恢复、维护等全部能力 |
| Web UI | plakar ui | 起一个本地 Web 界面查看/操作仓库 |
| 远程仓库服务 | plakar server | 把仓库以 HTTP 端点暴露给多客户端 |
这个设计让 Plakar 的资源占用趋近于零(无任务时无进程),也意味着生产上要自己负责调度(见 6.2 限制)。
四、功能特性
4.1 端到端加密(数据 + 元数据)
加密覆盖数据与元数据,仓库口令不落盘(也可选择写入 stores 配置,见配置篇章的实测说明,本篇快速开始用环境变量注入)。加密强度的旁证实测:对 packfiles 目录下全部数据包做明文字符串扫描,任何包含 PlakarKorp 等可读字符串的位置计数均为 0——数据与文件名等元数据在磁盘上不可读。官方还于 2025-02-28 发布了第三方密码学实现审计报告(见参考链接),这在开源备份工具中并不多见。
4.2 去重与压缩
分块去重 + LZ4 压缩由引擎自动完成。去重效果的直观实测:plakar dup 复制一个既有快照(不重新扫描源目录),仅耗时 271.388µs、写出 395 KiB——全部数据块直接命中既有块,新快照只补写少量元数据:
8f173218: backup completed without errors in 271.388µs (in: 0 B, out: 395 KiB)
💡 技术拓展:备份工具常用压缩算法对比——
算法 压缩率 速度 典型采用 LZ4 中 极快(GB/s 级) Plakar(实测默认,级别 131072)、Borg 默认 zstd 高 快,可调级别多 restic 默认 auto、kopia 默认、Borg 可选 gzip/zlib 中 中 Borg 可选(兼容老场景) lzma 很高 慢 Borg 可选(冷数据) Plakar 当前仓库参数为 LZ4,偏向「备份窗口短、CPU 别成为瓶颈」的取舍。
4.3 快照可浏览、可校验、可对比
这是 Plakar 最有辨识度的能力组合,全部有实测支撑:
按内容检索与读取(locate 找路径、cat 直接输出快照内文件内容):
$ plakar at /srv/backups locate site.conf
f7e99ead:/srv/demo-docs/configs/site.conf
225488c3:/srv/demo-docs/configs/site.conf
$ plakar at /srv/backups cat f7e99ead:/srv/demo-docs/docs/readme.md
Plakar is an open-source backup solution by PlakarKorp. UPDATED-FOR-DIFF-TEST
单文件校验(digest 计算快照内文件的摘要,可与源文件 sha256sum 对账):
$ plakar at /srv/backups digest f7e99ead:/srv/demo-docs/docs/readme.md
SHA256 (/srv/demo-docs/docs/readme.md) = 9b9d99e7bd52a7f6fd0db2679e52e2f590e39003b1f470d5e428ca5825a89be9
跨快照 diff(文本出统一 diff,二进制报 differ,目录列出公共子目录;下例的 b0239ef3 与 ec109d75 是同一实测会话中的前序快照——后者是改动 readme.md 之后的再备份):
$ plakar at /srv/backups diff b0239ef3:/srv/demo-docs/docs/readme.md ec109d75:/srv/demo-docs/docs/readme.md
--- b0239ef3:/srv/demo-docs/docs/readme.md
+++ ec109d75:/srv/demo-docs/docs/readme.md
@@ -1,2 +1,2 @@
-Plakar is an open-source backup solution by PlakarKorp.
+Plakar is an open-source backup solution by PlakarKorp. UPDATED-FOR-DIFF-TEST
4.4 安全的删除与保留策略
删除是两阶段的:plakar rm <id> 先只列出将要删除的快照,确认无误加 -apply 才真正执行;保留策略由 plakar policy 定义、plakar prune 执行,且 prune 默认同样是 dry-run:
$ plakar at /srv/backups rm 8f173218
rm: would remove these 1 snapshot(s), run with -apply to proceed
2026-10-30T11:47:35Z 8f173218 791 KiB 0s /srv/demo-docs
$ plakar at /srv/backups prune -policy onepd
prune: would keep 1 and delete 2 snapshot(s), run with -apply to proceed
keep 2026-10-30T11:57:13Z 225488c3 52 B /srv/demo-docs/configs tags=tmp match=day:2026-10-30 rank=1 cap=1
delete 2026-10-30T11:46:57Z ec109d75 792 KiB /srv/demo-docs tags=nightly match=day:2026-10-30 rank=2 cap=1
delete 2026-10-30T11:45:34Z b0239ef3 791 KiB /srv/demo-docs match=day:2026-10-30 rank=3 cap=1
上例策略 onepd 为「每天最多保留 1 个快照」(policy 配置实测为 periods.day.cap: 1),dry-run 输出直接给出保留/删除明细与判定依据(rank/cap),加 -apply 后实测删除 2 个、保留 1 个。
4.5 仓库维护与锁机制
plakar maintenance 做仓库空间回收:先给孤儿数据包「着色」标记,7 天宽限期后才物理删除,误删风险低。实测输出:
$ plakar at /srv/backups maintenance
maintenance: Coloured 1 packfiles (0 orphaned) for deletion
Coloured packfiles are scheduled to be removed in 7d
maintenance: 0 blobs and 0 packfiles were removed
仓库通过 locks/ 目录做排他锁。实测曾因上次中断留下过期锁而报 plakar: Can't take exclusive lock, repository is already locked,删除 locks 目录下的过期锁文件后恢复正常——维护类操作前先确认无残留锁是必要习惯。
4.6 多仓库与同步(3-2-1 就绪)
一个 Kloset 仓库可以同步到另一个仓库(plakar sync to/from),天然支撑「3 份副本、2 种介质、1 份异地」的 3-2-1 备份策略。实测把本地仓库 @localbak 同步到对端仓库 @mirror:
$ plakar at /srv/backups-mirror sync from @localbak
b0239ef3: OK ✓ /srv/demo-docs/docs/report-v1.bin
b0239ef3: synchronize completed without errors in 28.359397ms (in: 4.7 KiB, out: 1.9 MiB)
info: Synchronization of b0239ef3787bcc0850c5689989505bec314f2311370ee625c550e0f92b4728e6 finished
info: sync: synchronization from localhost to localhost completed: 2 snapshots synchronized
同步后对端仓库 ls 可见全部快照。远端形态下(plakar server 暴露 HTTP 端点),客户端把远端注册为 store 后同样可 sync——见 4.10。
4.7 集成与包管理(pkg)
Plakar 通过内置包管理器扩展备份源与存储后端,官方集成列表包括 PostgreSQL、MySQL、etcd、Kubernetes、S3 兼容对象存储等:
$ plakar pkg add s3 # 安装 S3 集成包
$ plakar pkg add -u s3 # 升级指定集成包
$ plakar pkg add -u # 升级全部已装集成包
升级集成包不会影响已有的 store、source、destination 配置。
4.8 归档导出:archive 与 ptar
两种导出形态,实测均通过:
plakar archive:把快照导出为普通 tar 文件(可与任何工具交互):
$ plakar at /srv/backups archive -o /srv/share/snapshot-b0239ef3.tar b0239ef3
$ ls -la /srv/share/snapshot-b0239ef3.tar
-rw-r--r-- 1 root root 803416 Oct 30 11:47 /srv/share/snapshot-b0239ef3.tar
$ tar -tf /srv/share/snapshot-b0239ef3.tar
srv/demo-docs/configs/site.conf
srv/demo-docs/docs/numbers.txt
srv/demo-docs/docs/readme.md
srv/demo-docs/docs/report-v1.bin
srv/demo-docs/photos/img-001.raw
plakar ptar:导出为 ptar 自包含归档——保留去重、压缩与加密能力的「单文件仓库」,官方为此格式专门撰写了设计文章(见参考链接):
$ plakar at /srv/backups ptar -o /srv/share/demo-docs.ptar /srv/demo-docs
fd646440: OK ✓ /srv/demo-docs/configs/site.conf
fd646440: OK ✓ /srv/demo-docs/configs
fd646440: OK ✓ /srv/demo-docs/photos/img-001.raw
$ ls -la /srv/share/demo-docs.ptar
-rw------- 1 root root 833378 Oct 30 11:48 /srv/share/demo-docs.ptar
ptar 主要选项实测(plakar help ptar):-o 输出文件名、-hashing 摘要算法(默认 BLAKE3)、-k/-kloset 把多个 Kloset 位置并入同一 ptar(可多次指定)、-no-compression 关闭透明压缩、-plaintext 关闭透明加密、-overwrite 覆盖已存在的输出。
4.9 内置 Web UI
plakar ui 起一个本地 Web 界面。实测以 -addr 0.0.0.0:8146 监听、-no-auth 关闭令牌认证、-no-spawn 不自动拉起浏览器:
$ plakar at /srv/backups ui -addr 0.0.0.0:8146 -no-auth -no-spawn
launching webUI at http://0.0.0.0:8146
另开终端验证 HTTP 可达性:
$ curl -sI http://127.0.0.1:8146 | head -1
HTTP/1.1 200 OK
UI 可浏览快照列表与内容、发起备份。默认(不加 -no-auth)UI 的 HTTP API 需要携带认证令牌,暴露到非本机地址时务必保留认证或另行加固。
4.10 远程共享仓库(server)
plakar server 把一个 Kloset 仓库暴露为 HTTP 端点,供多客户端远程读写。实测在仓库主机启动:
$ plakar at /srv/backups server -listen 0.0.0.0:9876
info: listening on http://0.0.0.0:9876
客户端侧把远端注册为一个 store(store add 静默成功),即可用 @remote 别名透明访问(实测与服务端同机演示;跨机部署时把地址换成服务端 IP 即可):
$ plakar store add remote location=http://127.0.0.1:9876
$ plakar at @remote ls
2026-10-30T11:58:47Z f7e99ead 792 KiB 0s /srv/demo-docs
2026-10-30T11:57:13Z 225488c3 52 B 0s /srv/demo-docs/configs
服务端默认禁用删除操作(防误删,需显式 -allow-delete 才放开),并可用 -token 强制 Bearer 令牌认证、用 -cert/-key 启用 HTTPS。
五、快速开始(最小可用示例)
本节给出从零到恢复的完整最小闭环,全部命令与回显为实测记录。
5.1 安装
Ubuntu 22.04 按官方 APT 仓库三步安装(先装依赖并导入官方签名密钥,再配仓库安装):
$ sudo apt-get update
$ sudo apt-get install -y curl gnupg2
$ curl -fsSL https://plakar.io/dist/keys/plakar-packages.gpg | sudo gpg --dearmor -o /usr/share/keyrings/plakar.gpg
$ echo "deb [signed-by=/usr/share/keyrings/plakar.gpg] https://plakar.io/dist/repos/deb/ stable main" | sudo tee /etc/apt/sources.list.d/plakar.list
$ sudo apt-get update
$ sudo apt-get install plakar
$ plakar version
plakar/v1.1.8
回显 plakar/v1.1.8 即安装成功。离线环境与 deb/tar.gz 直装等更多方案,参考官方安装文档(见参考链接)。
5.2 创建仓库
先准备演示口令(生产环境请使用高强度独立口令并妥善保管),再初始化仓库:
$ export PLAKAR_PASSPHRASE=q1w2e3r4
$ plakar at /srv/backups create
$ echo $?
0
create 成功时静默返回(rc=0),验证手段是 plakar at /srv/backups info(回显见 3.4 节)。若不设环境变量,create 会在终端交互提示 repository passphrase:;在无终端的自动化脚本里则需用环境变量或 -keyfile 方式注入,否则实测报 plakar: inappropriate ioctl for device。
5.3 首次备份与查看
$ plakar at /srv/backups backup -name prod-docs /srv/demo-docs
f7e99ead: OK ✓ /srv/demo-docs/docs/report-v1.bin
f7e99ead: backup completed without errors in 21.834503ms (in: 0 B, out: 979 KiB)
ls 查看快照列表(时间、短 ID、大小、耗时、路径):
$ plakar at /srv/backups ls
2026-10-30T11:58:47Z f7e99ead 792 KiB 0s /srv/demo-docs
2026-10-30T11:57:13Z 225488c3 52 B 0s /srv/demo-docs/configs
5.4 检索与校验
$ plakar at /srv/backups locate site.conf
f7e99ead:/srv/demo-docs/configs/site.conf
225488c3:/srv/demo-docs/configs/site.conf
$ plakar at /srv/backups cat f7e99ead:/srv/demo-docs/docs/readme.md
Plakar is an open-source backup solution by PlakarKorp. UPDATED-FOR-DIFF-TEST
$ plakar at /srv/backups digest f7e99ead:/srv/demo-docs/docs/readme.md
SHA256 (/srv/demo-docs/docs/readme.md) = 9b9d99e7bd52a7f6fd0db2679e52e2f590e39003b1f470d5e428ca5825a89be9
5.5 恢复
restore -to 把快照内容直接写入目标目录(注意:是「内容」直接落目录,不再嵌套源路径层级,官方文档特别强调这一点):
$ plakar at /srv/backups restore -to /tmp/restore-test f7e99ead:/srv/demo-docs/docs
f7e99ead: OK ✓ /
f7e99ead: OK ✓ /readme-link.md
f7e99ead: OK ✓ /numbers.txt
f7e99ead: OK ✓ /readme.md
f7e99ead: OK ✓ /report-v1.bin
$ ls -la /tmp/restore-test
total 292
drwxr-xr-x 2 root root 4096 Oct 30 11:43 .
drwxrwxrwt 1 root root 4096 Oct 30 12:26 ..
-rw-r--r-- 1 root root 23893 Oct 30 11:43 numbers.txt
lrwxrwxrwx 1 root root 29 Oct 30 11:43 readme-link.md -> /srv/demo-docs/docs/readme.md
-rw-r--r-- 1 root root 78 Oct 30 11:46 readme.md
-rw-r--r-- 1 root root 262144 Oct 30 11:46 report-v1.bin
用 digest 或 sha256sum 对比恢复文件与源文件摘要一致,闭环完成。实测中还做过更极端的演练:把源目录全部删除后,用快照整体恢复,恢复结果与备份源逐字节一致。
六、适用场景与限制
6.1 适用场景
| 场景 | 对应能力 | 实测依据 |
|---|---|---|
| 服务器文件与配置的定时备份 | CLI + cron/systemd timer,快照去重省空间 | 5.3 节备份实测,重复备份 271µs 完成(4.2 节) |
| 误删除/误改的细粒度找回 | 快照可浏览、单文件 cat/restore | 5.5 节恢复实测;整目录删除后恢复逐字节一致 |
| 3-2-1 多副本与异地容灾 | sync to/from 多仓库同步、S3/SFTP 集成 | 4.6 节 sync 实测 2 snapshots synchronized |
| 备份数据的离线交付与冷存 | ptar 自包含加密归档 | 4.8 节 ptar 实测 833378 B 单文件 |
| 多机器共用一个仓库 | plakar server 远程端点 + store 注册 | 4.10 节 @remote ls 实测成功 |
| 数据库/K8s 等数据源备份 | pkg 集成(PostgreSQL、MySQL、etcd、Kubernetes) | 4.7 节官方集成清单 |
6.2 限制与注意事项
- 无常驻调度器:Plakar 不作为守护进程运行,定时备份需要 cron/systemd timer 自行编排(官方有定时备份指南,见参考链接);无任务时无进程,但「到点自动备份」完全依赖外部调度。
- 单口令模型:仓库安全完全绑定一个口令(Argon2id 派生),没有内置的多用户体系或 KMS 集成;口令丢失等于数据不可恢复(错口令实测直接
failed to unlock repository,退出码 77)。生产环境需把口令纳入密钥管理流程。 - 仓库参数不可逐项调优:分块/哈希/压缩/加密参数由引擎内置默认值确定(3.4 节),当前版本没有用户级调参入口——这是「开箱即用」的另一面。
- 社区规模尚小:2101 Stars(2026-10-30 实查)与 restic 等成熟工具差距明显,遇到疑难问题可依赖的社区经验相对少;项目迭代快,升级后建议关注 Release Notes。
- 存储格式演进需手动迁移:官方升级文档明确,新版引入的新磁盘格式不会自动迁移旧仓库,需要「新建仓库 +
plakar sync from旧仓库」的方式迁移(官方安装文档 Upgrading 一节原文给了这两条命令)。 - 企业级集中管理不在社区版:多机集中管控、策略下发等能力属于 Control Plane 企业版(2.3 节),社区版用户需自建脚本化运维。
七、同类选型对比
7.1 候选概览
开源文件级备份工具中,restic、BorgBackup、kopia 是与 Plakar 同台竞争的三款主流产品,本站亦有其专项文档(见 7.3)。社区活跃度数据于 2026-10-30 实查(shields.io 徽章与 GitHub API):
| 项目 | 最新版本 | Stars | 开发语言 | 许可 |
|---|---|---|---|---|
| restic | v0.19.1 | 37k | Go | BSD-2-Clause |
| kopia | v0.23.1 | 15k | Go | Apache-2.0 |
| BorgBackup | v1.4.5 | 14k | Python + C | BSD-3-Clause |
| Plakar | v1.1.8 | 2101 | Go | ISC |
解读:Plakar 的社区规模与三者差距明显,属于「新一代、快速爬坡期」;但其架构最年轻(快照自包含 + 不可变存储库 + ptar),功能面(见 7.2)已经覆盖三者的核心能力集。
7.2 能力维度对比
| 维度 | restic | BorgBackup | kopia | Plakar 1.1.8 |
|---|---|---|---|---|
| 内容定义分块去重 | ✓(Rabin) | ✓(Buzhash) | ✓(Buzhash 等) | ✓(FastCDC,512 KiB~8 MiB 实测) |
| 压缩 | zstd(v0.14+) | lz4/zstd/zlib/lzma 可选 | zstd 等多种可选 | LZ4(实测固定) |
| 静态二进制部署 | ✓ | 需 Python 环境 | ✓ | ✓(Go 静态编译) |
| 加密 | AES-256-CTR + Poly1305 | AES-CTR + HMAC(加密仓库模式) | AES-256-GCM 或 ChaCha20 | AES256-KW + AES256-GCM-SIV、Argon2id(实测) |
| 密码学第三方审计 | 无公开完整审计 | 无 | 无 | ✓(2025-02 官方发布审计报告) |
| 快照内容浏览/diff | ls + diff ✓ | list + diff ✓ | 目录浏览 ✓ | ls/diff/cat/locate(实测) |
| 不还原校验完整性 | check ✓ | check ✓ | check ✓ | check/digest(实测 digest 单文件对账) |
| 单文件恢复 | ✓(restore 指定路径) | ✓(extract 指定路径) | ✓ | ✓(restore + cat,实测) |
| 内置 Web UI | 无官方(社区 Backrest) | 无 | ✓(kopia server) | ✓(plakar ui,实测 HTTP 200) |
| 保留策略内置 | forget --keep-* | prune 内置策略 | policy 内置 | policy + prune(实测删 2 留 1) |
| 仓库间同步/复制 | copy ✓ | 无(transfer 仅限版本升级) | sync-to ✓ | sync to/from ✓(实测) |
| 单文件加密归档导出 | 无 | export-tar(不加密) | 无 | ptar(保留加密去重,实测) |
| FUSE 挂载 | ✓ | ✓ | ✓ | ✓(plakar-mount 只读) |
| 远程仓库协议 | REST server/rclone | SSH(borg serve) | kopia server/SFTP/Blob | plakar server + S3/SFTP 集成(实测 server) |
| 调度方式 | 外部 cron/timer | 外部 cron/timer | server 可常驻 + 外部调度 | 外部 cron/timer(官方明确非守护进程) |
解读(如何读这张表):四者在「去重、加密、快照管理」主干能力上已高度同质,真正的分野在生态成熟度(restic 最大)与差异化能力——Plakar 独有的组合是「元数据级加密 + 第三方密码学审计 + ptar 单文件加密归档 + Kloset 不可变存储库」;Borg 的 export-tar 与内置 prune 历史最久;kopia 是三者中唯一自带官方 Web UI 的成熟项目。
7.3 选型建议
- 如果团队追求最大社区、最丰富的踩坑资料与第三方教程,则优先 restic,可参考《Restic 0.19 介绍与选型指南》;
- 如果已有 Borg 存量备份、或主机间习惯走 SSH 通道做集中仓库,则继续 BorgBackup,可参考《BorgBackup 1.4 介绍与选型指南》;
- 如果需要给 restic 补一个官方支持之外的图形管理层,则可看 Backrest,参考《Backrest v1.14.1 介绍与选型指南》;
- 如果要「官方自带 Web UI + 内置保留策略 + 多端同步」且能接受新项目,则kopia 或 Plakar 皆可,Plakar 的增量价值在加密审计、ptar 归档与更现代的快照模型;
- 如果核心诉求是「元数据也不落明文、密码学经过审计、能把整个仓库打包成单文件带走」,则 Plakar 是四者中唯一同时满足的选择;
- 如果需要企业级集中管控多机备份策略,则以上均不覆盖,需评估 Plakar Control Plane(企业版)或其他商业方案。
八、参考链接
官方来源(访问日期均为 2026-10-30):
- Plakar 官网:https://www.plakar.io
- 官方下载页(社区版 + Control Plane 版本矩阵):https://www.plakar.io/download/
- 社区版文档站:https://www.plakar.io/docs/community/
- 安装指南(APT/RDN/macOS/Windows/Go Install):https://www.plakar.io/docs/community/v1.1.0/quickstart/installation/
- 首次备份 Quickstart:https://www.plakar.io/docs/community/v1.1.0/quickstart/first-backup
- 命令参考:https://www.plakar.io/docs/community/v1.1.0/references/commands
- 定时备份指南:https://www.plakar.io/docs/community/v1.1.0/guides/setup-scheduler-daily-backups/
- GitHub 仓库:https://github.com/PlakarKorp/plakar
- v1.1.8 Release Notes:https://github.com/PlakarKorp/plakar/releases/tag/v1.1.8
- Kloset 不可变存储库设计文章:https://www.plakar.io/posts/2025-04-29/kloset-the-immutable-data-store
- ptar 归档格式设计文章:https://www.plakar.io/posts/2025-06-27/it-doesnt-make-sense-to-wrap-modern-data-in-a-1979-format-introducing-.ptar/
- Plakar 密码学实现第三方审计报告:https://www.plakar.io/posts/2025-02-28/audit-of-plakar-cryptography/
本站相关篇目:
本系列姊妹篇:
- 《Ubuntu 22.04 安装 Plakar 社区版 1.1.8 指南》(APT/deb/tar.gz 三方案安装全流程)
- 《Plakar 社区版 1.1.8 配置参数详解》(仓库参数、四类 YAML 配置、环境变量与生产模板)
- 《Plakar 社区版 1.1.8 常用 CLI 命令与工具详解》(全部子命令实操与故障演练)