Rust高效终端文件管理工具httm的使用,支持快速查找、去重和清理重复文件

示例图片

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

实用技巧

  1. 预览模式:始终先使用--preview--dry-run选项查看httm将要执行的操作,而不实际修改文件系统。

  2. 批量操作:在交互模式下,可以用m键标记多个文件,然后批量删除或执行其他操作。

  3. 自定义配置:创建~/.config/httm/config.toml文件可以自定义默认行为。

  4. 性能优化:对于非常大的目录,考虑使用--threads参数增加处理线程数。

注意事项

  • httm默认不会删除任何文件,除非明确使用--delete选项
  • 删除操作不可逆,建议先备份重要数据
  • 处理大量文件时可能需要较长时间和较多内存

完整示例DEMO

以下是一个完整的httm使用示例,展示如何查找、查看和删除重复文件:

  1. 首先安装httm(如果尚未安装)
cargo install httm
  1. 创建一个测试目录并生成一些重复文件
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/
  1. 查找重复文件(使用默认blake3哈希算法)
httm --snapshot ~/httm_test
  1. 交互式查看重复文件
httm --interactive ~/httm_test
  1. 预览要删除的文件(不实际删除)
httm --delete --dry-run ~/httm_test
  1. 实际删除重复文件(保留每个文件的一个副本)
httm --delete ~/httm_test
  1. 比较两个目录的差异
httm --compare ~/httm_test/dir1 ~/httm_test/dir2
  1. 生成JSON报告
httm --json ~/httm_test > httm_report.json
  1. 使用自定义配置(创建配置文件)
mkdir -p ~/.config/httm
echo 'algorithm = "sha256"
threads = 4' > ~/.config/httm/config.toml
回到顶部