原作者:restic authors。阅读原文:Working with repositories。
版本与范围:restic 0.19.1 官方 stable 文档;原文核验日期:2026-10-05。本译稿覆盖原文章节及代码示例;示例输出来自原文,未在本地运行。
译者说明:以下译文覆盖原文全部章节和 31 个命令/输出块。原文命令仅供阅读,未在本地执行。正文中的覆盖索引命令是故障演示,会破坏仓库;rewrite、repair、prune 和格式迁移也会修改状态,须按对应说明审查后使用。

列出全部快照
现在,可以列出仓库中保存的全部快照。大小列只会出现在使用 restic 0.17.0 或更新版本创建的快照上,表示创建快照时所含文件的大小。快照记录的目录可能与快照内部的目录结构不同,详情参阅“绝对路径与相对路径”。
原文参考:Absolute and relative paths。
$ restic -r /srv/restic-repo snapshots
enter password for repository:
ID Date Host Tags Directory Size
-------------------------------------------------------------------------
40dc1520 2015-05-08 21:38:30 kasimir /home/user/work 20.643GiB
79766175 2015-05-08 21:40:19 kasimir /home/user/work 20.645GiB
bdbd3439 2015-05-08 21:45:17 luigi /home/art 3.141GiB
590c8fc8 2015-05-08 21:47:38 kazik /srv 580.200MiB
9f0bc19e 2015-05-08 21:46:11 luigi /srv 572.180MiB
可以按目录路径筛选列表:
$ restic -r /srv/restic-repo snapshots --path="/srv"
enter password for repository:
ID Date Host Tags Directory Size
-------------------------------------------------------------------
590c8fc8 2015-05-08 21:47:38 kazik /srv 580.200MiB
9f0bc19e 2015-05-08 21:46:11 luigi /srv 572.180MiB
也可以按主机筛选:
$ restic -r /srv/restic-repo snapshots --host luigi
enter password for repository:
ID Date Host Tags Directory Size
-------------------------------------------------------------------
bdbd3439 2015-05-08 21:45:17 luigi /home/art 3.141GiB
9f0bc19e 2015-05-08 21:46:11 luigi /srv 572.180MiB
这些筛选条件可以组合使用。
此外,还可以按相同的筛选字段——主机、路径、标签——对输出分组:
$ restic -r /srv/restic-repo snapshots --group-by host
enter password for repository:
snapshots for (host [kasimir])
ID Date Host Tags Directory Size
------------------------------------------------------------------------
40dc1520 2015-05-08 21:38:30 kasimir /home/user/work 20.643GiB
79766175 2015-05-08 21:40:19 kasimir /home/user/work 20.645GiB
2 snapshots
snapshots for (host [luigi])
ID Date Host Tags Directory Size
-------------------------------------------------------------------
bdbd3439 2015-05-08 21:45:17 luigi /home/art 3.141GiB
9f0bc19e 2015-05-08 21:46:11 luigi /srv 572.180MiB
2 snapshots
snapshots for (host [kazik])
ID Date Host Tags Directory Size
-------------------------------------------------------------------
590c8fc8 2015-05-08 21:47:38 kazik /srv 580.200MiB
1 snapshots
列出快照中的文件
要取得某个快照中的文件列表,可以使用 ls 命令:
$ restic ls 073a90db
snapshot 073a90db of [/home/user/work.txt] filtered by [] at 2024-01-21 16:51:18.474558607 +0100 CET:
/home
/home/user
/home/user/work.txt
特殊快照 ID latest 用来列出仓库中最新快照的文件和目录。配合 --host 参数,可以只选择来自指定主机的最新快照。
$ restic ls --host kasimir latest
snapshot 073a90db of [/home/user/work.txt] filtered by [] at 2024-01-21 16:51:18.474558607 +0100 CET:
/home
/home/user
/home/user/work.txt
默认情况下,ls 会输出快照中的全部文件。
也可以按目录筛选文件列表。快照 ID 后面的所有位置参数都会被解释为绝对目录路径,仅列出这些目录内的文件。按目录筛选时,默认不列出子目录中的文件;加入 --recursive 才会递归包含子目录。指定的目录必须是绝对路径,以路径分隔符开头,路径中使用正斜杠“/”作为分隔符。
$ restic ls latest /home
snapshot 073a90db of [/home/user/work.txt] filtered by [/home] at 2024-01-21 16:51:18.474558607 +0100 CET:
/home
/home/user
$ restic ls --recursive latest /home
snapshot 073a90db of [/home/user/work.txt] filtered by [/home] at 2024-01-21 16:51:18.474558607 +0100 CET:
/home
/home/user
/home/user/work.txt
使用 --long 可以显示文件的更多详情,包括权限、UID、GID、文件大小、修改时间和路径。面向脚本的使用场景,ls 还支持 --json;其 JSON 输出格式见 ls 文档。
原文参考:ls。
$ restic ls --long latest
snapshot 073a90db of [/home/user/work.txt] filtered by [] at 2024-01-21 16:51:18.474558607 +0100 CET:
drwxr-xr-x 0 0 0 2024-01-21 16:50:52 /home
drwxr-xr-x 0 0 0 2024-01-21 16:51:03 /home/user
-rw-r--r-- 0 0 18 2024-01-21 16:51:03 /home/user/work.txt
NCDU(NCurses Disk Usage)是一款分析目录磁盘占用的工具。ls 支持通过 --ncdu 按 NCDU 格式输出快照信息。
用法如下:restic ls latest --ncdu | ncdu -f -
可以通过 --sort 和 --reverse 调整 ls 的输出顺序。--sort 可选 name、size、time=mtime、atime、ctime 或 extension,默认按 name 排序;指定 --reverse 可以反转顺序。
$ restic ls --long latest --sort size --reverse
snapshot 711b0bb6 of [/tmp/restic] at 2025-02-03 08:16:05.310764668 +0000 UTC filtered by []:
-rw-rw-r-- 1000 1000 16772 2025-02-03 08:09:11 /tmp/restic/cmd_find.go
-rw-rw-r-- 1000 1000 3077 2025-02-03 08:15:46 /tmp/restic/conf.py
-rw-rw-r-- 1000 1000 2834 2025-02-03 08:09:35 /tmp/restic/find.go
-rw-rw-r-- 1000 1000 1473 2025-02-03 08:15:30 /tmp/restic/010_introduction.rst
drwxrwxr-x 1000 1000 0 2025-02-03 08:15:46 /tmp/restic
dtrwxrwxrwx 0 0 0 2025-02-03 08:14:22 /tmp
$ restic ls --long latest --sort time
snapshot 711b0bb6 of [/tmp/restic] at 2025-02-03 08:16:05.310764668 +0000 UTC filtered by []:
-rw-rw-r-- 1000 1000 16772 2025-02-03 08:09:11 /tmp/restic/cmd_find.go
-rw-rw-r-- 1000 1000 2834 2025-02-03 08:09:35 /tmp/restic/find.go
dtrwxrwxrwx 0 0 0 2025-02-03 08:14:22 /tmp
-rw-rw-r-- 1000 1000 1473 2025-02-03 08:15:30 /tmp/restic/010_introduction.rst
drwxrwxr-x 1000 1000 0 2025-02-03 08:15:46 /tmp/restic
-rw-rw-r-- 1000 1000 3077 2025-02-03 08:15:46 /tmp/restic/conf.py
排序同样适用于 --json,但不能与 --ncdu 同时使用。不加 --long 也可以排序。
$ restic ls latest --sort extension
snapshot 711b0bb6 of [/tmp/restic] at 2025-02-03 08:16:05.310764668 +0000 UTC filtered by []:
/tmp
/tmp/restic
/tmp/restic/cmd_find.go
/tmp/restic/find.go
/tmp/restic/conf.py
/tmp/restic/010_introduction.rst
在仓库之间复制快照
若要在两个仓库之间传输快照,例如从本地仓库传到远程仓库,可以使用 copy 命令:
$ restic -r /srv/restic-repo-copy copy --from-repo /srv/restic-repo --verbose
repository d6504c63 opened successfully
repository 3dd0878c opened successfully
[0:00] 100.00% 2 / 2 index files loaded
[0:00] 100.00% 7 / 7 index files loaded
snapshot 410b18a2 of [/home/user/work] at 2020-06-09 23:15:57.305305 +0200 CEST by user@kasimir
copy started, this may take a while...
[0:00] 100.00% 13 / 13 packs copied
snapshot 4e5d5487 of [/home/user/work] at 2020-05-01 22:44:07.012113 +0200 CEST by user@kasimir
skipping snapshot 4e5d5487, was already copied to snapshot 50eb62b7
snapshot 7a746a07 saved, copied from source snapshot 410b18a2
该命令把源仓库 /srv/restic-repo 的全部快照复制到目标仓库 /srv/restic-repo-copy。目标仓库必须已经存在。首次创建目标仓库时,应按下文“确保复制快照的去重效果”所述,在 init --from-repo 后加上 --copy-chunker-params,以便两个仓库之间也能正常去重。
之前已经复制过的快照会在后续 copy 操作中跳过。只有带上 --verbose,才会打印跳过快照的信息。为提高效率,快照会分批复制,因此 snapshot [...] saved 消息可能在相应快照内容复制完一段时间后才出现。
重要
由于源仓库与目标仓库使用不同的加密密钥,复制过程需要下载(读取)并上传(写入)相关快照的全部内容,因此带宽用量和费用可能高于平常备份时的预期。
重要
复制过程不会重新分块,这可能使复制来的文件与目标仓库中已有文件无法相互去重。若同一文件同时存在于源仓库和目标仓库,复制后它在目标仓库内占用的空间可能达到原来的两倍。避免这一问题的方法见下文。
通过 --from-repo 指定源仓库,或用 --from-repository-file 指定一个保存源仓库地址的文件。这两项也分别对应环境变量 $RESTIC_FROM_REPOSITORY 和 $RESTIC_FROM_REPOSITORY_FILE。源仓库密码可以由 --from-password-file 指定的文件读取,或由 --from-password-command 指定的命令提供;对应环境变量为 $RESTIC_FROM_PASSWORD_FILE 和 $RESTIC_FROM_PASSWORD_COMMAND。也可以直接使用 $RESTIC_FROM_PASSWORD 传入密码。若要选择解密密钥,可把其 ID 传给 --from-key-hint,或设置 $RESTIC_FROM_KEY_HINT。
注意
如果源仓库和目标仓库使用相同后端,配置该后端的选项与环境变量可能同时作用于两个仓库。例如,可能无法为源仓库和目标仓库分别指定不同账户。可改用 rclone 后端,并在 rclone 中配置不同 remote,以避开这个限制。
注意
如果 copy 被中断,再次运行时会接着完成中断的复制。不过仓库索引并非持续更新,可能损失最多约 10 分钟的进度。
筛选要复制的快照
可以按主机、备份中的路径,或以逗号分隔的标签列表筛选快照,也可以组合这些条件:
$ restic -r /srv/restic-repo-copy copy --from-repo /srv/restic-repo --host luigi --path /srv --tag foo,bar
还可以直接列出要复制的快照 ID;此时只复制指定快照,而不是全部快照:
$ restic -r /srv/restic-repo-copy copy --from-repo /srv/restic-repo 410b18a2 4e5d5487 latest
确保复制快照的去重效果
copy 虽然可以在任意仓库之间传输快照,但源仓库与目标仓库的快照未必能相互去重。要确保去重正常,两个仓库必须使用相同的参数把大文件切分成小数据块,因此需要额外的初始化步骤。分块参数相同,restic 才会把两个仓库中的相同文件切成相同数据块,从而对跨仓库复制的快照实现去重。
分块参数在新建目标仓库时只生成一次。对于接收复制数据的仓库,必须让 restic 在初始化时沿用源仓库的分块参数:
$ restic -r /srv/restic-repo-copy init --from-repo /srv/restic-repo --copy-chunker-params
已经存在的仓库无法更改分块参数。
从快照中移除文件
有时,快照包含的文件比预期更多。与其删除整个快照并重新执行备份——事后往往做不到——不如使用 rewrite 重写受影响的快照,排除不需要的文件:
$ restic -r /srv/restic-repo rewrite --exclude secret-file
repository c881945a opened (repository version 2) successfully
snapshot 6160ddb2 of [/home/user/work] at 2022-06-12 16:01:28.406630608 +0200 CEST by user@kasimir
excluding /home/user/work/secret-file
saved new snapshot b6aee1ff
snapshot 4fbaf325 of [/home/user/work] at 2022-05-01 11:22:26.500093107 +0200 CEST by user@kasimir
modified 1 snapshots
$ restic -r /srv/restic-repo rewrite --exclude secret-file 6160ddb2
repository c881945a opened (repository version 2) successfully
snapshot 6160ddb2 of [/home/user/work] at 2022-06-12 16:01:28.406630608 +0200 CEST by user@kasimir
excluding /home/user/work/secret-file
new snapshot saved as b6aee1ff
modified 1 snapshots
支持的排除选项包括 --exclude、--exclude-file、--iexclude 和 --iexclude-file,其行为与 backup 命令相同,具体见“排除文件”。
原文参考:Excluding files。
也支持 --include、--include-file、--iinclude 和 --iinclude-file。这些 include 选项可以将现有快照或一组快照缩减为仅包含真正需要的文件。例如,只保留图片可以使用:restic rewrite -r ... --iinclude "*.jpg" --iinclude "*.jpeg" --iinclude "*.png"。
可以采用与 copy 相同的筛选方式,只重写部分快照,参阅“筛选要复制的快照”。
--snapshot-summary 可以为尚无汇总信息的旧快照补充摘要数据;创建摘要时只会新增 TotalFilesProcessed 和 TotalBytesProcessed 两个字段。
默认情况下,rewrite 会保留原快照,并为每个实际发生修改的快照创建一个新快照。新快照带有 rewrite 标签,用来与未经修改的原快照区分。
也可以使用 --forget,立即移除原快照。在这种情况下,新快照不添加标签。请注意,这只移除快照记录,并不删除仓库中的实际数据。之后还需要运行 prune,清理不再被引用的数据;这与使用 forget 之后的处理方式相同。
若想预览 rewrite 将做出的更改,可以使用 --dry-run。它会模拟重写过程,仅打印计划执行的操作,不实际修改仓库。
注意
rewrite 会检查是否可能以未预料到的方式修改快照;如果无法保证信息完整,它会报错:cannot encode tree at "[...]" without losing information。当快照由更新版本的 restic 或某个第三方实现创建时,就可能出现这种情况。
要把快照转换成 rewrite 期望的格式,原文给出的命令是 restic -r /srv/restic-repo repair snapshots <snapshotID>。该命令会修改快照,不应未经核对就对唯一的备份副本运行。
修改快照元数据
有时需要更改现有快照的元数据。目前支持重写主机名和备份时间:在 rewrite 中使用 --new-host 后接新主机名,或使用 --new-time 后接新时间戳。
$ restic -r /srv/restic-repo rewrite --new-host newhost --new-time "1999-01-01 11:11:11"
repository b7dbade3 opened (version 2, compression level auto)
[0:00] 100.00% 1 / 1 index files loaded
snapshot 8ed674f4 of [/path/to/abc.txt] at 2023-11-27 21:57:52.439139291 +0100 CET by user@kasimir
setting time to 1999-01-01 11:11:11 +0100 CET
setting host to newhost
saved new snapshot c05da643
modified 1 snapshots
检查完整性与一致性
设想仓库所在服务器的硬盘发生故障;更糟的是,攻击者取得了高权限并篡改仓库文件,试图让你恢复恶意数据。下面是原文用来演示破坏索引的命令。译者警示:它会直接覆盖真实索引文件,仅供理解故障示例,切勿执行。
$ echo "boom" > /srv/restic-repo/index/de30f3231ca2e6a59af4aa84216dfe2ef7339c549dc11b09b84000997b139628
尝试恢复按上述方式被篡改的快照时,会得到错误:
$ restic -r /srv/restic-repo --no-cache restore c23e491f --target /tmp/restore-work
...
Fatal: unable to load index de30f323: load <index/de30f3231c>: invalid data returned
为了在这些问题真正影响恢复前发现它们,应定期运行 check,检查仓库是否健康、一致,以及重要备份数据是否完好。可执行的检查分为两类:
结构的一致性与完整性,例如快照、树和 pack 文件的组织关系;这是默认检查范围。
实际备份数据的完整性;需要使用下面介绍的参数启用。
运行 check 即可检查仓库结构。若仓库像上例一样受损,check 会发现问题,并给出与恢复时相同的错误:
$ restic -r /srv/restic-repo check
...
load indexes
error: error loading index de30f3231ca2e6a59af4aa84216dfe2ef7339c549dc11b09b84000997b139628: LoadRaw(<index/de30f3231c>): invalid data returned
The repository index is damaged and must be repaired. You must run ``restic repair index`` to correct this.
Fatal: repository contains errors
警告
如果 check 报告仓库错误,就必须修复仓库。只要仓库仍然损坏,恢复其中某些文件或目录就会失败;新快照也不能保证可以恢复。
损坏仓库的修复方法见“故障排查”,也可以根据 check 提供的提示处理。
原文参考:Troubleshooting。
如果仓库结构完整,restic 会输出 no errors were found:
$ restic -r /srv/restic-repo check
...
load indexes
check all packs
check snapshots, trees and blobs
no errors were found
默认情况下,check 会新建临时缓存目录,以核查仓库中的数据。若要复用现有缓存,可以加上 --with-cache。
如果没有显式设置缓存目录,check 会在系统临时目录下创建临时缓存,参阅“临时文件”。如果已经指定缓存目录,则使用指定位置,详情见“缓存”。
原文参考:Temporary files;Caching。
默认的 check 不会确认磁盘上的实际 pack 文件是否被修改,因为那需要读取仓库中每个 pack 文件的完整副本。若也要校验这些文件的内容完整性,应使用 --read-data:
$ restic -r /srv/restic-repo check --read-data
...
load indexes
check all packs
check snapshots, trees and blobs
read all data
[0:00] 100.00% 3 / 3 items
duration: 0:00
no errors were found
注意
--read-data 必须下载仓库中的所有 pack 文件,因此运行时间更长,也可能产生比常规 check 更高的带宽费用。
也可以使用 --read-data-subset,每次只检查部分 pack 文件。它提供三种选择方式:第一种检查指定分组;第二种、第三种按给定百分比或大小随机抽取数据。
使用 --read-data-subset=n/t,每次检查 pack 文件的一个指定部分。参数包含 n 和 t 两个值:运行 check 时,所有 pack 文件会在逻辑上分为 t 个大小大致相等的组,只检查第 n 组。例如,下面五次调用可完成对仓库全部 pack 文件的检查:
$ restic -r /srv/restic-repo check --read-data-subset=1/5
$ restic -r /srv/restic-repo check --read-data-subset=2/5
$ restic -r /srv/restic-repo check --read-data-subset=3/5
$ restic -r /srv/restic-repo check --read-data-subset=4/5
$ restic -r /srv/restic-repo check --read-data-subset=5/5
使用 --read-data-subset=x%,随机选择一定比例的 pack 文件。x 是需要检查的百分比,可以是整数,也可以是小数。即使执行很多次,这种方式也不能保证覆盖全部文件;不过,很容易将它自动化,在每次备份后抽查少量数据。使用小数百分比的例子如下:
$ restic -r /srv/restic-repo check --read-data-subset=2.5%
若检查比例较大,通常更适合直接指定整数百分比:
$ restic -r /srv/restic-repo check --read-data-subset=10%
使用 --read-data-subset=nS,可以按大小随机抽取部分 pack 文件。其中 n 是整数,S 是大小单位 K、M、G 或 T。restic 会先把该大小换算为仓库总大小的百分比,之后的行为与上面的百分比方式相同。例如:
$ restic -r /srv/restic-repo check --read-data-subset=50M
$ restic -r /srv/restic-repo check --read-data-subset=10G
在仓库中查找内容
restic find 用来搜索仓库中保存的文件或目录。
查找文件与目录
可以提供一个或多个文件名,也可以提供匹配这些文件名的模式。模式语法见“排除文件”。例如:
原文参考:Excluding files。
$ restic -r /srv/restic-repo find "0/**/7"
Found matching entries in snapshot 774ebacd from 2026-01-16 09:01:17
/srv/restic-repo/restic/testdata/0/0/9/7
警告
restic find 的所有位置参数都被当作匹配模式。包含空格的名称必须加引号,例如 "file one.bar"。如果不确定,应使用带引号的通配模式,例如 "*.txt"。
如果知道某种文件模式位于哪个快照或哪些快照中,可以用 --snapshot 限制搜索范围;此参数可以重复指定:
$ restic -r /srv/restic-repo find --snapshot latest file1.txt
Found matching entries in snapshot caffee11 from 2026-01-16 09:01:17
/srv/restic-repo/restic/testdata/0/for_cmd_ls/file1.txt
注意
若不指定 --snapshot,find 会搜索所有快照。也可以用标准筛选选项 --host、--path 和 --tag 缩小范围。
find 还可以通过 --oldest 与 --newest,查找 inode 修改时间处于给定区间的文件与目录。不必同时指定两个选项,只限定一侧的时间区间也可以。下面的例子查找修改日期位于 2025 年内的文件。
$ restic -r /srv/restic-repo find --oldest 2025-01-01 --newest "2025-12-31 23:59:59" "*.txt"
Found matching entries in snapshot dd90f84d from 2026-01-17 17:26:41
/srv/restic-repo/restic/testdata/0/for_cmd_ls/file1.txt
/srv/restic-repo/restic/testdata/0/for_cmd_ls/file2.txt
这些命令同样支持 --json。各选项对应的输出详情见 find 文档。
原文参考:find。
查找 blob、树或 pack 文件
find 的其他选项用于查找 blob、树和 pack 文件。普通用户通常用不到,但排查 restic 问题时可能很有帮助。更自动化的仓库修复方式见“故障排查”。
原文参考:Troubleshooting。
举个简单的例子,查找指定数据 blob 可以运行:
$ restic -r /srv/restic-repo find --blob fcd9ec0c
Found blob fcd9ec0c99f7992c184666e3040831b919f3375157bd563a2b65cde1c6789847
... in file /srv/restic-repo/restic/testdata/0/0/9/60
(tree 6409bed28d08898b849ecc4fdf338cdb0d67358619c99e6f6c3b402b1895baf8)
... in snapshot 774ebacd (2026-01-16 09:01:17)
升级仓库格式版本
使用较早 restic 版本创建的仓库采用旧格式,需要升级才能使用全部新功能。升级必须显式执行,因为更新的仓库格式会提高访问该仓库所需的最低 restic 版本。例如,格式版本 2 只能由 restic 0.14.0 或更新版本读取。
升级到仓库格式版本 2 分为两步:先执行 migrate upgrade_repo_v2,它会检查仓库完整性,然后升级格式版本。必须先修复仓库问题,迁移才能进行。迁移完成后,再运行 prune 压缩仓库元数据。如果希望限制单次重写的数据量,可以使用 prune --max-repack-size size,详情见“自定义清理”。
原文参考:Customizing pruning。
仓库中已有的文件内容不会因此被重写;新备份的数据会被压缩。随着持续备份,压缩数据的比例会逐渐增加。要加快这一过程,对全部尚未压缩的数据进行压缩,可以运行 prune --repack-uncompressed。如果计划用最高压缩级别备份,还应为 prune 加上 --compression max。对于已经备份的数据,之后无法改变其压缩级别。
译者核验与使用边界
本文依据 2026-10-05 的 restic 0.19.1 stable 页面。大小列只适用于 restic 0.17.0 及之后创建的快照;仓库格式 v2 要求所有访问客户端至少为 0.14.0。
copy 的 -r 指向目标仓库,--from-repo 指向源仓库。原文示例目标必须预先建立。两端密钥不同意味着客户端读入、解密并重新加密写出,可能产生整批下载和上传费用,不能当作后端内部零拷贝。
--copy-chunker-params 只在新建目标仓库时复制分块参数;已有仓库不能就地修改这一参数。copy 本身不重新分块,参数不匹配可能妨碍源、目标数据的交叉去重。
rewrite 默认保留原快照,--forget 才移除旧快照引用;prune 才清理不再引用的数据。因此仅执行 rewrite --exclude 并不代表敏感文件已经从全部历史、副本或存储系统中彻底删除。
原文 echo "boom" > .../index/... 会直接覆盖索引,是破坏性故障演示;译文已紧邻代码加警告。repair snapshots、rewrite --forget、prune 与 migrate 都会更改仓库,执行前需确认仓库、凭据、独立副本和兼容客户端。本文未执行它们。
check 默认主要核查结构,不能把 no errors were found 扩大为全部数据都被完整读取。--read-data 下载并验证全部 pack 内容;--with-cache 复用缓存会改变读取路径,不能据此声称完成独立远端介质重读。
n/t 分组可用完整组次实现计划覆盖,但应考虑多次检查间仓库变化;x% 与 nS 是随机抽查,多次成功不保证累计覆盖全部 pack 文件。
--from-password-command 会运行提供的凭据命令,应只使用可信配置。所有路径、快照 ID、主机名和示例时间必须替换为实际目标;文中历史示例输出不是本地运行记录。
迁移格式会提高所有客户端的最低兼容版本;prune --repack-uncompressed 可产生大量读写、时间和带宽开销,--max-repack-size 用来约束单次重写量。未发现需修改的命令语法,保留原文命令并明确使用边界。
来源、署名与授权
本文译自 restic authors 的 Working with repositories,文档版权 © 2023 restic authors。restic 软件仓库采用 BSD-2-Clause,以下保留其完整版权与许可;该软件许可不自动等同于文档的独立转载条款。译者补充与原文内容已作区分。
补充核验来源
restic 官方仓库 BSD-2-Clause 许可:软件及相关代码许可,完整文本见下文。
相关代码的完整许可
Copyright (c) 2014, Alexander Neumann;以下为 restic 原始 BSD-2-Clause 许可。
BSD 2-Clause License Copyright (c) 2014, Alexander Neumann <alexander@bumpern.de> All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.













暂无评论内容