![EXT4 文件的修改日期标记为 1979 年 11 月 29 日](https://linux22.com/image/193502/EXT4%20%E6%96%87%E4%BB%B6%E7%9A%84%E4%BF%AE%E6%94%B9%E6%97%A5%E6%9C%9F%E6%A0%87%E8%AE%B0%E4%B8%BA%201979%20%E5%B9%B4%2011%20%E6%9C%88%2029%20%E6%97%A5.png)
我正在运行 Linux Mint 20.2 64 位 Cinnamon,这些是未通过完整性测试的 FLAC 文件。这些文件似乎播放得很好。这可能是因为修改日期错误。创建日期和上次访问日期似乎是正确的。所以我问两个问题:
这个不正确的修改日期是否是文件未通过完整性测试的原因?使用此命令在终端中运行测试
$ find ~/Music/ -type f -iname '*.flac' -print0 | xargs --null flac -wst
有没有什么简单的方法可以批量更改修改日期,或者我需要逐个文件进行修改(有数百个此类文件)?
答案1
首先,Unix 文件系统 (FS) 通常不跟踪“创建时间”(我说一般是因为现在有 FS 跟踪“诞生”时间)。 stat() 系统调用中的“ctime”字段是不是“(C)reation time”与 DOS/WIN 中类似,但它是“inode (C)hange time”——inode 本身最后一次修改的时间。
其次,它是否以及如何影响任何完整性检查取决于您使用的工具。大多数工具不会考虑任何时间戳,因为时间戳变化太频繁。如果存在完整性故障,则更有可能是真正的完整性故障——文件“播放正常”,因为编解码器只是丢弃坏数据,这些数据可能不足以被人类注意到。
相关的是,您有如此多的错误时间戳的事实表明,驱动器本身出现故障,并在尝试“恢复和重新定位”坏扇区时导致数据损坏。大多数现代驱动器都支持 SMART 故障检测方法,您可以安装各种 SMART 监视器和工具来检查其状态。我建议你这样做。
第三,touch -- *.flac
应该一次性将它们全部更新到当前时间。 (当然,除非您有太多文件名,以至于超出了 shell 为传递文件名列表而创建的缓冲区。但这是另一个问题。)