2

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

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

如果目标文件较新,我只报错,不做任何拷贝。

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

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

可能是什么问题呢?

谢谢你,维希

4

2 回答 2

0

您可能会遇到不同文件系统类型上的不同时间戳的问题。由于您在这些方面发布的信息如此之少,我不得不大胆猜测。

我正在考虑的机制是这样的:

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

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

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

于 2014-01-10T08:13:17.800 回答
0

最可能的原因如下:

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

由于只有 NTFS 是 DST 感知的,这意味着突然间您在笔式驱动器上的文件正好比硬盘驱动器上的文件提前一小时。

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

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

于 2014-01-10T08:25:17.680 回答