16个版本
新 0.2.9 | 2024年8月24日 |
---|---|
0.2.8 | 2024年8月19日 |
0.2.5 | 2024年7月31日 |
0.1.5 | 2024年6月17日 |
0.1.3 | 2024年5月23日 |
414 在 命令行工具 中排名
665 每月下载量
2MB
3K SLoC
简介
redu 简而言之:它是你的 restic 仓库中的 ncdu。
如果你想知道在 restic 仓库中占用这么多空间的是什么,以便你可以找到所有可能被备份的无用缓存并从快照中删除它们,那么这正好适合你。
redu 将所有快照的数据聚合到一个视图中,以便你可以轻松地找到罪魁祸首!
安装
你可以从 Github 下载预构建的二进制文件,目前支持以下平台
- Darwin (MacOS) arm64
- Darwin (MacOS) x86-64
- Linux arm64
- Linux x86-64
- Windows arm64
- Windows x86-64
注意:在 MacOS 上,如果你通过浏览器下载,可能需要使用以下命令移除隔离:xattr -d com.apple.quarantine <binary name>
或者你可以使用 cargo 进行安装
cargo +nightly install redu --locked
注意:目前需要 nightly 版本来构建。
运行
你可以指定仓库和密码命令,方式与 restic 支持的方式完全相同。
例如使用环境变量
$ export RESTIC_REPOSITORY='sftp://my-backup-server.my-domain.net'
$ export RESTIC_PASSWORD_COMMAND='security find-generic-password -s restic -a personal -w'
$ redu
或通过命令行参数
redu -r 'sftp://my-backup-server.my-domain.net' --password-command 'security find-generic-password -s restic -a personal -w'
注意: --repository-file
(环境变量: RESTIC_REPOSITORY_FILE
) 和 --password-file
(环境变量: RESTIC_PASSWORD_FILE
),以及通过 RESTIC_PASSWORD
环境变量设置的纯文本密码,都受到支持,并且与 restic 中的用法相同。
与 restic 类似,如果未以其他方式提供,redu 将提示您输入密码。
用法
Redu 会将你的文件/目录大小(每个仓库)缓存起来。在每次运行时,它将同步缓存与仓库中的快照,删除旧的快照并将新的快照整合到缓存中。
如果你有很多大型快照,第一次同步可能需要几分钟,具体取决于您的网络速度和计算机。下一次将会更快,因为它不再需要获取整个仓库。
经过一段时间,您将看到以下内容:
您可以使用 箭头键 或 hjkl 进行导航。向右进入目录,向左返回父目录。
PgUp/PgDown 或 C-b/C-b 可以向上或向下滚动一整页。
redu 为每个项目显示的大小是在所有快照中该项目的最大大小。也就是说,这是该项目在最大的快照中的大小。
条形图表示项目与当前位置其他所有内容的相对大小。
按 Enter 键可以打开一个小的窗口,显示当前突出显示项目的详细信息。
- 具有最大大小的最新快照。
- 该项目首次出现的最早日期和快照。
- 该项目最后一次出现的最新日期和快照。
在打开详细窗口的情况下,您也可以继续导航,它会根据您的浏览进行更新。
提示:您可以通过按 Escape 键关闭详细窗口(以及其他对话框)。
标记文件
您可以标记文件和目录,以构建要排除的项目列表。快捷键
- m:标记选定的文件/目录
- u:取消标记选定的文件/目录
- c:清除所有标记(这将提示您进行确认)
标记在 redu 运行之间是持久的(它们保存在缓存文件中),所以您可以随意标记一些文件,然后退出并稍后再回来。
标记以星号开头显示,您可以在底部条形图中看到总标记数。
生成排除列表
按 g 退出 redu 并生成一个包含所有标记且按字母顺序排列的列表到标准输出。
redu 打印的其余内容(包括 UI 本身)都发送到标准错误,这样您可以将 redu 的输出重定向到文件,以获取可以直接与 restic 一起使用的排除文件。
例如
$ redu > exclude.txt
$ restic rewrite --exclude-file=exclude.txt --forget
注意:redu 严格为 只读,永远不会修改您的存储库本身。
退出
您也可以通过按 q 键直接退出而无需生成列表。
贡献
欢迎提交错误报告、功能请求和 PR!请继续!
如果您想贡献并讨论某些问题,也可以给我发电子邮件或在 rust Discord 或 Freenode 上与我交谈。
测试和基准
您可以使用以下方式运行测试:
cargo test
还有一些基于 criterion 的基准测试可以运行,使用以下方式:
cargo bench --features bench
依赖项
~34–47MB
~768K SLoC