26 个版本
0.8.3 | 2022年9月11日 |
---|---|
0.8.2 | 2022年2月8日 |
0.8.1 | 2021年12月28日 |
0.7.0 | 2021年11月13日 |
0.0.0 | 2018年10月17日 |
#56 在 Cargo 插件 中
45,494 每月下载量
385KB
9K SLoC
cargo cache
显示 cargo 缓存信息(~/.cargo/
或 $CARGO_HOME
)。可选的缓存清理。
主要特性
- 检查 cargo 缓存及其组件的大小(命令:
cargo cache
) - 进行简单的清理,删除检查输出但保留磁盘上重建所需的原始文件(
--autoclean
) - 清理一切(Cargo 需要时重新下载)
- 干运行以查看将要删除的内容(
--dry-run
) - 重新压缩 git 仓库(
--gc
) - 通过正则表达式查询搜索缓存(
cargo cache query "reg.*x"
) - 打印占用空间最多的软件包(
--top-cache-items
) - 支持替代注册表
- 删除比 X 更旧或更新的文件(
--remove-if-{older,younger}-than
) - 在
stable
、beta
和nightly
频道中构建和运行 - 清除用于构建指定软件包而不使用的缓存条目(
cargo cache clean-unref
) - 在本地 sccache 构建缓存上打印大小统计信息(
cargo cache sc
) - 验证提取的软件包源代码(
cargo cache verify
)
安装
cargo安装 cargo-cache
或对于最新的开发版本
cargo安装 --githttps://github.com/matthiaskrgr/cargo-cache cargo-cache
默认输出(cargo cache
)
这仅计算大小,不会触摸任何东西
Cargo cache '/home/matthias/.cargo':
Total: 4.22 GB
102 installed binaries: 920.95 MB
Registry: 2.25 GB
Registry index: 227.07 MB
4412 crate archives: 684.29 MB
2411 crate source checkouts: 1.34 GB
Git db: 1.05 GB
113 bare git repos: 993.72 MB
9 git repo checkouts: 55.48 MB
要了解更多关于 cargo 主目录内部子目录以及可以安全删除的内容,请检查 --info
。
用法
USAGE:
cargo cache [OPTIONS] [SUBCOMMAND]
OPTIONS:
-a, --autoclean Removes crate source checkouts and git repo checkouts
-e, --autoclean-expensive As --autoclean, but also recompresses git repositories
-f, --fsck Fsck git repositories
-g, --gc Recompress git repositories (may take some time)
-h, --help Print help information
-i, --info Print information cache directories, what they are for and what can be safely deleted
-k, --keep-duplicate-crates <N> Remove all but N versions of crate in the source archives directory
-l, --list-dirs List all found directory paths
-n, --dry-run Don't remove anything, just pretend
-o, --remove-if-older-than <date> Removes items older than specified date: YYYY.MM.DD or HH:MM:SS
-r, --remove-dir <dir1,dir2,dir3> Remove directories, accepted values: all,git-db,git-repos,
registry-sources,registry-crate-cache,registry-index,registry
-t, --top-cache-items <N> List the top N items taking most space in the cache
-V, --version Print version information
-y, --remove-if-younger-than <date> Removes items younger than the specified date: YYYY.MM.DD or HH:MM:SS
SUBCOMMANDS:
clean-unref remove crates that are not referenced in a Cargo.toml from the cache
help Print this message or the help of the given subcommand(s)
l check local build cache (target) of a rust project
local check local build cache (target) of a rust project
q run a query
query run a query
r query each package registry separately
registry query each package registry separately
sc gather stats on a local sccache cache
sccache gather stats on a local sccache cache
toolchain print stats on installed toolchains
trim trim old items from the cache until maximum cache size limit is reached
verify verify crate sources
显示 cargo 主目录中最大的项目
cargo cache --top-cache-items 5
Summary of: /home/matthias/.cargo/bin/ (588.35 MB total)
Name Size
alacritty 38.40 MB
xsv 29.78 MB
rg 28.51 MB
cargo-geiger 15.11 MB
mdbook 12.39 MB
Summary of: /home/matthias/.cargo/registry/src/ (3.11 GB total)
Name Count Average Total
mozjs_sys 4 131.83 MB 527.31 MB
wabt-sys 2 83.73 MB 167.46 MB
openblas-src 2 78.42 MB 156.84 MB
curl-sys 6 18.47 MB 110.83 MB
winapi-x86_64-pc-windows-gnu 2 54.90 MB 109.80 MB
Summary of: /home/matthias/.cargo/registry/cache/ (1.18 GB total)
Name Count Average Total
mozjs_sys 10 29.45 MB 294.50 MB
curl-sys 16 3.03 MB 48.54 MB
libgit2-sys 18 2.54 MB 45.64 MB
servo-skia 6 5.23 MB 31.39 MB
openssl-src 5 5.55 MB 27.73 MB
Summary of: /home/matthias/.cargo/git/db/ (918.97 MB total)
Name Count Average Total
polonius 1 136.63 MB 136.63 MB
mdbook 1 111.45 MB 111.45 MB
rust-rocksdb 2 33.31 MB 66.62 MB
osmesa-src 2 28.45 MB 56.90 MB
ring 2 23.02 MB 46.04 MB
Summary of: /home/matthias/.cargo/git/checkouts/ (3.80 GB total)
Name Count Average Total
parity-ethereum 2 666.36 MB 1.33 GB
xori 1 372.69 MB 372.69 MB
polonius 2 186.34 MB 372.67 MB
alacritty 9 39.08 MB 351.74 MB
osmesa-src 2 166.12 MB 332.24 MB
进行轻量级清理
这会删除提取的 tarball 源和仓库签出。原始源存档和 git 仓库会被保留,并将根据需要由 cargo 提取。运行 cargo cache --autoclean
Clearing cache...
Cargo cache '/home/matthias/.cargo':
Total: 3.38 GB => 3.28 GB
62 installed binaries: 665.64 MB
Registry: 2.03 GB => 2.00 GB
2 registry indices: 444.25 MB
10570 crate archives: 1.55 GB
96 => 0 crate source checkouts: 34.81 MB => 0 B
Git db: 685.13 MB => 619.64 MB
114 bare git repos: 619.64 MB
7 => 0 git repo checkouts: 65.48 MB => 0 B
Size changed 3.38 GB => 3.28 GB (-100.29 MB, -2.96%)
如果通过 $CARGO_HOME 环境变量覆盖了 cargo 主目录的默认位置,该软件包也能正常工作!
顺便说一句:cargo-cache 是我的 通过实践学习 的 rust 项目,如果你看到什么非常奇怪或者急需改进的地方,请告诉我并提交一个工单!
在 CI 中清理缓存
有时希望在 CI 中 缓存 $CARGO_HOME。如文档所述,这可能会将源缓存两次,从而增加不必要的开销。为了在存储之前减小缓存的大小,你可能想要运行 cargo cache --autoclean
。ci-autoclean
功能提供了一个非常精简的软件包版本,它只能自动在启动时运行 cargo-cache --autoclean
,并且应该在几秒钟内编译完成。要使用此功能,可以将以下命令添加到 CI 中
cargo install (--git git://github.com/matthiaskrgr/cargo-cache OR cargo-cache) --no-default-features --features ci-autoclean cargo-cache
cargo-cache # no further arguments required
如果你希望将 libgit 静态链接到 cargo-cache,可以添加 vendored-libgit
功能。
常见问题解答
问:这个项目与 sccache 有关系吗?答:不是特别相关。 cargo cache sccache
会打印本地(!)sccache-cache 的小结,并显示在指定日期最后访问的文件数量,但它不会修改 sccaches 缓存。它也不像 (s)ccache 那样作为编译器缓存。
许可证
版权所有 2017-2022 Matthias Krüger
Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
<LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
option. All files in the project carrying such notice may not be
copied, modified, or distributed except according to those terms.
依赖项
~17–29MB
~512K SLoC