#timestamp #metadata #file #copies #cli #created #repairing

app timetime

用于修复文件副本时间戳元数据的 CLI 工具 🕛🕧🕐🕜🕑🕝🕒

1 个不稳定版本

0.1.0 2021 年 10 月 26 日

#5#copies

MIT/Apache

11KB
124

timetime

用于修复文件副本时间戳元数据的 CLI 工具 🕛🕧🕐🕜🕑🕝🕒

基本用法

当给定两个或更多文件时,timetime 将交叉检查它们的创建/修改时间戳,并 💅 修复 ✨ 每个文件的时间戳元数据,以匹配最早的值

timetime my-file.txt backups/my-file.txt

默认情况下,🚨文件必须有相同的数据校验和🚨,因为它假设它们是副本。如果不满足此条件,将生成警告并导致操作失败。可以使用 --force-f 选项绕过此限制

timetime --force file-1 file-2 file-3

⚠️小心使用⚠️,因为这会盲目覆盖任意数量的时间戳!

"修改" 与 "创建"

默认情况下,timetime 将比较 mtime ("修改时间") 以及在支持的系统上,btime ("创建时间")。

要仅比较 "修改" 时间戳,请使用 --mtime-m 标志

timetime --mtime file-1 file-2

请注意,某些文件系统会通过自动将 btime 设置为与 mtime 相匹配来防止文件的 "创建时间" 在 "修改时间" 之后。

比较策略

当提供多个文件时,timetime 可以配置为使用最新的时间戳,而不是最旧的时间戳

timetime --strategy newest file-1 file-2

这在已知一组文件处于错误时区或其时间戳元数据以某种方式损坏的情况下可能很有用。

时区安全性

作为一个特殊功能,timetime 将检测文件的日期是否偏离了一个 精确 的小时数。如果是这样,它将输出一个警告

Warning: files may have matching timestamps from different timezones

由于存在假阳性的风险,此警告不会停止执行,除非提供了额外的 --tz-safety 参数

timetime file-1 file-2 --tz-safety

rmlint 一起使用

timetime 命令旨在作为更复杂的文件合并和/或删除脚本的一部分使用,例如由 rmlint 产生的脚本。

例如,在删除重复文件之前,可能需要 "修正" 文件的时间戳,以保留最旧的修改/创建时间戳。这可以通过向 rmlint 提供自定义删除命令来完成

rmlint -o sh -c sh:cmd='timetime --tz-safety "$1" "$2" && rm "$1"' --keep-all-tagged --must-match-tagged -T df /media/backup // /media/original

上述命令将检测 /media/backup 中的文件,这些文件与 /media/original 中的文件相同,然后 "修复" 备份和原始文件的时间戳,然后(只有成功后)删除重复文件。

一如既往,在大量删除文件之前,务必仔细测试操作!

通过 Cargo 安装

设置 Rust/Cargo 并通过运行以下命令从 crates.io 安装

cargo install timetime

感谢

  • rmlint 维护者提供了一个如此可靠且文档齐全的项目
  • Carol Nichols 和 Steve Klabnik 为 官方书籍 贡献

贡献

  • 检查问题跟踪器,并考虑创建一个新的问题。
  • 分支项目并创建一个新分支以供您贡献。
  • 在您的分支上编写、提交并推送您的贡献。
  • 确保项目构建成功(cargo build)且功能仍按预期工作。
  • 提交一个拉取请求。

许可证

根据您选择,许可协议为以下之一

除非您明确表示,否则您有意提交给工作的任何贡献,根据 Apache-2.0 许可证的界定,将如上所述双重许可,不附加任何额外条款或条件。

依赖关系

~6–15MB
~264K SLoC