我最近一直在整理和整理旧照片 - 发现很多情况下,Date created
元数据并不反映照片的拍摄日期(或扫描日期),而是显示上次从另一个存档目录复制的日期时间(我猜)。虽然我的具体场景只涉及图像文件,但我正在寻找一种可以应用于任何文件类型的解决方案。
是否有任何技巧/技术可以帮助防止这种情况在将来在 Windows/Linux 上发生,例如使Date created
元数据只读?
此外,如果您能提供任何关于如何设置估计值(或精确值)Date created
来更正这些已更新文件的提示,我将不胜感激:)
答案1
“创建日期”是无意义的,它一直只是关于特定的实例该文件的权限。Windows 不允许手动更改它,而 Linux 通常甚至不允许有直到最近才有了这种改变。(即便如此,也只有一些文件系统保留了“出生”时间,而且没有通用的 API 来访问它。注意,Linux 上的“ctime”是不是创建时间。
你会更幸运地尝试保留“修改日期”时间戳,更多是关于内容文件的。大多数文件管理器都会显示这些内容。大多数程序默认会保留这些内容——Dropbox 会保留这些内容,Zip 存档也会保留这些内容,甚至在下载文件时也会传输这些内容通过网络。
所以我的一般建议是寻找方法来“锁定”修改的时间戳。锁定更困难(尽管可能不是非常必要),但在 Linux 上,编写一个脚本至少备份还原它:
#!/usr/bin/env perl
sub mtime { return (stat shift)[9]; }
print "#!/bin/sh\n";
for $file (grep {-f} glob("*")) {
print "touch -d @".mtime($file)." '$file'\n";
}
(嗯,这是一个备份脚本生成恢复脚本。
但是,您说的是照片。我猜它们是以 JPEG 格式存储的,而不是“原始”格式。大多数照片管理工具都支持在 JPEG 中嵌入“Exif”元数据,大多数相机都会自动执行此操作。因此,对于 Windows,在文件资源管理器中,您只需启用“拍摄日期”列而不是“创建/修改日期”,它就会在 JPEG 文件中显示照片日期。