Rust高效终端文件管理工具httm的使用,支持快速查找、去重和清理重复文件
示例图片
httm简介
httm是一个用Rust编写的高效终端文件管理工具,它能帮助你快速查找、去重和清理重复文件。它支持ZFS/BTRFS/NILFS2快照、Time Machine备份以及普通的文件系统(如ext4/XFS/NTFS),能列出文件的多个版本并支持交互式恢复。
主要功能
- 查找文件在不同数据集上的多个版本
- 递归列出已删除的文件
- 列出本地和远程备份池中的文件快照
- 支持自定义预览命令(默认使用
diff
比较当前版本) - 交互式浏览、选择、修剪和恢复模式
- 支持JSON/CSV等多种输出格式
安装方法
通过Cargo安装
# 安装Rust工具链
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# 安装httm
cargo install httm
通过PPA安装(Ubuntu/Debian)
sudo add-apt-repository ppa:kimono-koans/ppa
sudo apt update
sudo apt install httm
通过Homebrew安装(MacOS)
brew install httm
使用示例
基本查询
# 查找/etc/hosts文件的所有版本
httm /etc/hosts
# 以JSON格式输出查询结果
httm --json /var/log/syslog
# 查找/var/log目录下已删除的文件
httm -d /var/log
交互式恢复
# 交互式恢复/etc/nginx/nginx.conf文件
sudo httm -r /etc/nginx/nginx.conf
# 自动恢复最新的.bashrc版本
httm -l -r ~/.bashrc
文件比较
# 比较不同版本的SSH配置文件
bowie /etc/ssh/sshd_config
# 比较两个特定版本
httm --preview "vim -d" /etc/resolv.conf
创建快照
# 为/etc目录创建ZFS快照
sudo httm -S /etc
# 创建保护性快照并恢复文件
sudo httm --guard -r /var/www/html/index.html
完整示例代码
示例1:系统配置文件管理
# 1. 列出所有/etc/hosts版本
httm /etc/hosts
# 2. 比较当前版本与上一个版本
bowie /etc/hosts
# 3. 交互式恢复旧版本
sudo httm -r /etc/hosts
# 4. 创建保护性快照
sudo httm --guard /etc
示例2:开发环境管理
# 1. 查找项目文件的所有版本
httm ~/projects/myapp/src/main.rs
# 2. 将文件历史转换为git存档
nicotine ~/projects/myapp/Cargo.toml
# 3. 查找并删除重复的编译产物
httm --omit-ditto ~/projects/myapp/target | xargs rm -f
示例3:日志文件分析
# 1. 查找所有syslog版本
httm --snaps /var/log/syslog
# 2. 归档所有日志版本
httm -n --omit-ditto /var/log/syslog | tar -zcvf syslog_versions.tar.gz -T -
# 3. 比较错误日志变化
bowie /var/log/nginx/error.log
注意事项
- 对于系统文件操作通常需要sudo权限
- 使用BTRFS/NILFS2文件系统时需要root权限访问快照
- 远程备份需要预先配置好挂载点
- 恢复操作前建议先创建保护性快照(–guard选项)
1 回复
Rust高效终端文件管理工具httm的使用指南
工具介绍
httm是一个用Rust编写的高效终端文件管理工具,专门用于快速查找、识别和清理重复文件。它特别适合需要管理大量文件的用户,提供了强大的去重功能和直观的交互界面。
主要功能
- 快速查找重复文件
- 交互式文件浏览
- 支持多种哈希算法验证文件
- 批量删除重复文件
- 彩色终端输出
- 支持多种文件系统
安装方法
使用cargo安装
cargo install httm
使用Homebrew安装(macOS)
brew install httm
使用Linux包管理器
部分Linux发行版可能已包含httm,或可通过系统包管理器安装。
基本使用方法
1. 查找重复文件
httm --snapshot /path/to/directory
这会创建目录的快照并显示重复文件。
2. 交互式浏览重复文件
httm --interactive /path/to/directory
进入交互模式后,可以使用方向键导航,空格键选择文件,然后执行操作。
3. 删除重复文件
httm --delete /path/to/directory
谨慎使用此命令,建议先预览要删除的文件。
高级用法示例
使用特定哈希算法
httm --algorithm=blake3 /path/to/directory
支持的算法包括: sha1, sha256, sha512, blake3(默认)
排除特定目录
httm --exclude "*.tmp" --exclude "/path/to/exclude" /target/directory
生成JSON输出
httm --json /path/to/directory > duplicates.json
比较两个目录
httm --compare /first/directory /second/directory
实用技巧
-
预览模式:始终先使用
--preview
或--dry-run
选项查看httm将要执行的操作,而不实际修改文件系统。 -
批量操作:在交互模式下,可以用
m
键标记多个文件,然后批量删除或执行其他操作。 -
自定义配置:创建
~/.config/httm/config.toml
文件可以自定义默认行为。 -
性能优化:对于非常大的目录,考虑使用
--threads
参数增加处理线程数。
注意事项
- httm默认不会删除任何文件,除非明确使用
--delete
选项 - 删除操作不可逆,建议先备份重要数据
- 处理大量文件时可能需要较长时间和较多内存
完整示例DEMO
以下是一个完整的httm使用示例,展示如何查找、查看和删除重复文件:
- 首先安装httm(如果尚未安装)
cargo install httm
- 创建一个测试目录并生成一些重复文件
mkdir -p ~/httm_test/{dir1,dir2}
echo "test content" > ~/httm_test/dir1/file1.txt
echo "test content" > ~/httm_test/dir1/file2.txt
echo "different content" > ~/httm_test/dir1/file3.txt
cp ~/httm_test/dir1/* ~/httm_test/dir2/
- 查找重复文件(使用默认blake3哈希算法)
httm --snapshot ~/httm_test
- 交互式查看重复文件
httm --interactive ~/httm_test
- 预览要删除的文件(不实际删除)
httm --delete --dry-run ~/httm_test
- 实际删除重复文件(保留每个文件的一个副本)
httm --delete ~/httm_test
- 比较两个目录的差异
httm --compare ~/httm_test/dir1 ~/httm_test/dir2
- 生成JSON报告
httm --json ~/httm_test > httm_report.json
- 使用自定义配置(创建配置文件)
mkdir -p ~/.config/httm
echo 'algorithm = "sha256"
threads = 4' > ~/.config/httm/config.toml