Python - 文件修改时间比较,奇怪的行为

时间:2014-01-10 06:55:07

标签: python file date comparison datemodified

我为我的文件使用了Python备份脚本,并且从硬盘驱动器备份到与我的PC分离并永久连接外部驱动器的两个笔式驱动器。

我的脚本中有逻辑,只有在源文件较新时才会从源到目标执行复制。

如果目标文件较新,我只是报告错误而不进行任何复制。

这适用于永久连接的外部驱动器。但对于笔式驱动器,对于大多数文件,目标文件报告为比源文件更新。

我只使用笔式驱动器进行备份,从不使用其他任何东西。因此,笔式驱动器上的文件不可能更新。

可能是什么问题?

谢谢你, Vishy

2 个答案:

答案 0 :(得分:0)

您可能在不同的文件系统类型上遇到了不同时间戳的问题。由于你发布的信息很少,我不得不猜测。

我正在考虑的机制是:

您的A类原始文件系统(例如ext3fs,reiserfs,ntfs,...)可能包含每个文件的时间戳,其精度为毫秒。备份文件系统(例如,fat32,...)可能具有不同的时间戳精度(例如,仅秒)。在创建备份期间,系统必须决定如何处理该备份。毫秒信息必须丢失,并且值可能会四舍五入,因此12:23:34.789可能会舍入到12:23:35。 (这当然应该适用于大约50%的文件。)

比较文件时间时,根据例程的聪明程度,此结果可能会被解释为“备份比原始文件更新”。

正如我所说,这只是一个疯狂的猜测,所以你应该看看具体的时间戳来找出。

答案 1 :(得分:0)

最可能的原因如下:

  • 您的电脑的硬盘使用NTFS。
  • 您的笔式驱动器使用FAT。
  • 文件X的最后一次备份是在从夏令时切换到正常时间之前。
  • 您正常运行下一个备份。

only NTFS is DST-aware起,这意味着笔式硬盘上的文件突然比硬盘上的文件提前一小时。

所以你应该在NTFS中检查(并忽略)一小时的时间戳差异,或者(更好)格式化你的笔式驱动器。

毕竟,如果修改日期相差不到一小时,那么您的桌面上的文件可能会比您的笔式驱动器上的文件更新无法备份切换到 DST之前进行了修改,并且您正在之后运行备份 ...