#restic #disk-usage #analyzer #disk #usage #ncdu

nightly bin+lib redu

这就像是针对restic仓库的ncdu

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命令行工具 中排名

Download history 159/week @ 2024-05-11 239/week @ 2024-05-18 20/week @ 2024-05-25 114/week @ 2024-06-01 37/week @ 2024-06-08 166/week @ 2024-06-15 8/week @ 2024-06-22 107/week @ 2024-06-29 243/week @ 2024-07-06 16/week @ 2024-07-13 107/week @ 2024-07-20 265/week @ 2024-07-27 136/week @ 2024-08-03 120/week @ 2024-08-10 139/week @ 2024-08-17

665 每月下载量

MIT 许可证

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 会将你的文件/目录大小(每个仓库)缓存起来。在每次运行时,它将同步缓存与仓库中的快照,删除旧的快照并将新的快照整合到缓存中。

如果你有很多大型快照,第一次同步可能需要几分钟,具体取决于您的网络速度和计算机。下一次将会更快,因为它不再需要获取整个仓库。

经过一段时间,您将看到以下内容:

Screenshot of redu showing the contents of a repo

您可以使用 箭头键hjkl 进行导航。向右进入目录,向左返回父目录。

PgUp/PgDownC-b/C-b 可以向上或向下滚动一整页。

redu 为每个项目显示的大小是在所有快照中该项目的最大大小。也就是说,这是该项目在最大的快照中的大小。

条形图表示项目与当前位置其他所有内容的相对大小。

Enter 键可以打开一个小的窗口,显示当前突出显示项目的详细信息。

  • 具有最大大小的最新快照。
  • 该项目首次出现的最早日期和快照。
  • 该项目最后一次出现的最新日期和快照。

Screenshot of redu showing the contents of a repo with details open

在打开详细窗口的情况下,您也可以继续导航,它会根据您的浏览进行更新。

提示:您可以通过按 Escape 键关闭详细窗口(以及其他对话框)。

标记文件

您可以标记文件和目录,以构建要排除的项目列表。快捷键

  • m:标记选定的文件/目录
  • u:取消标记选定的文件/目录
  • c:清除所有标记(这将提示您进行确认)

标记在 redu 运行之间是持久的(它们保存在缓存文件中),所以您可以随意标记一些文件,然后退出并稍后再回来。

标记以星号开头显示,您可以在底部条形图中看到总标记数。

Screenshot of redu showing the contents of a repo with some marks

生成排除列表

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