#垃圾 #命令行工具 #rm #命令行 #模糊查找器 #日期时间

app trasher

一个小型的命令行工具,用于通过垃圾系统替换'rm'和'del'

21个稳定版本

3.3.2 2024年5月7日
3.2.0 2024年3月29日
2.1.0 2023年9月28日
2.0.4 2023年5月1日
1.4.3 2020年10月1日

#133文件系统

Download history 6/week @ 2024-04-27 149/week @ 2024-05-04 9/week @ 2024-05-11 7/week @ 2024-05-18 1/week @ 2024-05-25 1/week @ 2024-06-29 21/week @ 2024-07-06

1,379 每月下载量

Apache-2.0

45KB
1K SLoC

垃圾处理程序

crates.io unsafe forbidden

垃圾处理程序是一个小型命令行工具,旨在替换rm

它通过将待删除的项目移动到垃圾目录而不是立即删除它们来实现。由于移动单个项目几乎是瞬时的(即使是大型目录),而递归删除项目可能需要相当长的时间,因此垃圾处理程序比rm,尤其是在大型目录中。

包括一个可选的模糊查找器,以交互方式恢复项目。

用法

有几种可用的操作

  • ls:列出垃圾中的项目,使用-d / --details获取项目的尺寸和内容
  • rm <path>:将项目移动到垃圾,使用-p / --permanently删除项目而不是将其移动到垃圾
  • unrm <name>:在当前目录中恢复项目,使用--id提供ID和--to指定其他恢复位置
  • unrm-ui:交互式恢复项目(将显示模糊查找器)
  • drop <name>:永久地从垃圾中删除项目,使用--id提供ID
  • clear:从垃圾中删除所有项目

它是如何工作的

当项目被移动到垃圾时,其名称将加上删除日期和一个通过双重CRC计算的ID(见技术细节)。

例如,删除名为my-files的项目时,它将被移动到垃圾目录下,名称类似于

my-files [@ 2020.08.03_11h36m36s.093347700+0200] {IBuc}

这允许您打开垃圾目录并查看其内容,而无需使用垃圾处理程序二进制文件。此外,垃圾处理程序不使用索引文件,它仅从垃圾中存在的文件中提取信息,因此您可以将其移动到另一个驱动器而不会出现问题,甚至可以将两个垃圾目录合并成一个!

此重命名还允许删除具有相同名称的多个项目而不会发生冲突。

您可以指定名称来从回收站恢复项目。如果多个项目具有相同的名称,将显示具有提供名称的项目列表以及它们的ID,并要求您指定要恢复的项目ID。

外部文件系统

移动实际上是通过对文件重命名来完成的,这比移动数据要快得多,并且会产生完全相同的结果。对于外部文件系统,在文件系统的根目录中创建一个回收站目录。

技术细节

被删除的项目名称必须符合UTF-8规范,因此无效的UTF-8文件名会导致程序失败,除非在删除期间提供了 -a / --allow-invalid-utf8-item-names 标志,这将导致将文件名转换为有效的UTF-8字符串,可能会丢失一些信息。

回收站项目的名称由原始项目名称、删除日期和时间(以纳秒为单位,包括时区)以及一个ID组成,该ID是删除日期的24位CRC校验和。

CRC被选择是因为它非常快,并且使用24位CRC在不同日期之间发生冲突的风险极低(除非一个项目被删除数十万次,并且具有相同的名称)。

在删除项目时,如果多个回收站项目具有相同的名称,则需要 同时 指定ID和名称,因此不需要对文件名进行CRC校验,这样可以避免所有与文件名相关的冲突风险,而文件名可能具有数百万个不同的值。

依赖项

~12-22MB
~279K SLoC