1 个不稳定版本
0.1.0 | 2021 年 10 月 26 日 |
---|
#5 在 #copies
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 License,版本 2.0,(LICENSE-APACHE)
- MIT 许可证(LICENSE-MIT)
。
除非您明确表示,否则您有意提交给工作的任何贡献,根据 Apache-2.0 许可证的界定,将如上所述双重许可,不附加任何额外条款或条件。
依赖关系
~6–15MB
~264K SLoC