复制到Dropbox文件夹时正在修改LastWriteTime

本文关键字:修改 LastWriteTime Dropbox 文件夹 复制 | 更新日期: 2024-04-03 08:16:23

我有一个小C#脚本,用于将我的开发文件夹备份到Dropbox文件夹,比较每个文件的源和目标FileInfo.LastWriteTime,然后在需要时执行File.Copy

我注意到,新创建的文件不仅在接下来的脚本运行中被复制,而且在之后的运行中也被复制,尽管在此期间没有进行修改。

似乎在第一次复制每个文件时,LastModifiedDate被四舍五入到最接近的秒,使其下次看起来比原始文件旧。在下一次运行时,文件会被再次复制,但现在LastModifiedDate不会向下取整,即使文件实际上被修改了,所以从那时起一切都按预期进行。

有人能告诉我们这里发生了什么吗?

更新:

似乎只影响某些文件类型,.png就是其中之一。这个问题可以用以下代码来证明:

var source = @"c:'temp'test.png";
var target = @"C:'Users'Me'Dropbox'test.png";
Console.WriteLine(File.GetLastWriteTime(source).ToString("HH:mm:ss.fff"));
Console.WriteLine(File.GetLastWriteTime(target).ToString("HH:mm:ss.fff")); 
File.Copy(source, target, true);
Console.WriteLine(File.GetLastWriteTime(source).ToString("HH:mm:ss.fff"));
Console.WriteLine(File.GetLastWriteTime(target).ToString("HH:mm:ss.fff"));

第一次运行时,我们得到:

17:29:01.618 (source)
00:00:00.000 (target doesn't exist yet)
17:29:01.618 (source unchanged)
17:29:01.618 (target as source)

第二次运行:

17:29:01.618 (source unchanged)
17:29:01.000 (target has been rounded down)
17:29:01.618 (source unchanged)
17:29:01.618 (target as source again)

第三次和随后的运行:

17:29:01.618 (source unchanged)
17:29:01.000 (target still as source - no rounding down)
17:29:01.618 (source unchanged)
17:29:01.618 (target as source)

更新:

Procmon显示Dropbox.exe在初始复制后大约三秒执行SetBasicInformation file操作,这似乎是发生更改的时候,尽管Procmon没有显示毫秒以下的文件时间。

由于它似乎只会影响图形文件,我认为这与Dropbox缩略图生成有关,但我真的看不出他们有什么好的理由这样做,尤其是在下次复制时,他们会保持时间戳不变。

复制到Dropbox文件夹时正在修改LastWriteTime

当您将文件复制到Dropbox watch文件夹中时,Dropbox后台同步应用程序可能会将文件上传到Dropbox。完成此操作后,它会再次进行同步,以获得与上传文件相同的本地文件时间。下次运行一个fiddler会话,看看上传后是否能从Dropbox下载。

好的,基于此位

我有一个小C#脚本,用于将我的开发文件夹备份到我的Dropbox文件夹

你有没有想过使用归档位?当文件更改时,它将获得SET,而您在复制文件时将取消设置。(你就是你的代码,一旦你完成备份,就取消设置位)

请参阅http://en.wikipedia.org/wiki/Archive_bit

另外,抢劫怎么办?

http://en.wikipedia.org/wiki/Robocopy

它可能只适用于您,不需要任何代码。。井无c#代码

ROBOCOPY C:'SOURCE C:'DEST /M /S

/M:类似/A,但从源文件中删除Archive属性。

还有一个:)你可以对文件进行CRC校验吗?不过这将更加耗时。

如果你想知道文件日期时间改变的原因,那么使用PROCMON看看DROPBOX是否在改变这一点,可能是时区的事情,也可能只是它所做的事情。https://technet.microsoft.com/en-us/library/bb896645.aspx