Copy files from FAT32 to NTFS, preserving date

I have a FAT32 flash drive full of old archived emails, and their creation/modification date is important because it represents when the email was received. I'm trying to copy these over to another computer (Windows 7, with an NTFS filesystem). I copy the files over, and it changes all of the creation/modification dates to the current date/time. I've tried manually copying through folders, using robocopy, and using xcopy, and have the same issue regardless. One strange observation is that, after I do a copy and have the destination folder open, the creation/modification times seem to be correct at first, but slowly convert over to the current time (when I click on a file, it has the correct date/time, but after a second or two changes to update to the current time; very frustrating).

Does anyone know a foolproof way to do copy over these emails while preserving timestamps?

EDIT: I can confirm that when I simply (single-)click on the file, its modified date is updated. Is this happening because the old modified date is newer than the creation date?


Solution 1:

One mechanism by which the last modification date will "mysteriously" change after a file is created/copied is Windows Explorer. Raymond Chen describes one thing that Explorer does to files after they are extracted from untrusted archives that updates their last modification timestamps. In general, any post-creation/copying modifications to files by Windows Explorer that update alternate data streams will result in this effect. Exactly what modifications can occur depends from what types these files are (You don't say.) and what Explorer extensions you have (You don't say.).

Solution 2:

The changed timestamps are intended since you copied them. Read Description of NTFS date and time stamps for files and folders.

I'm surprised people think Microsoft would break something like this. Considering that they still leave crap like share permissions in Windows for FAT compatibility, they would of course had done everything in their power to help people migrate off of FAT. . .

Probably the biggest gotcha you have to be aware of is that that FAT stores the time according to the local timezone. NTFS stores time based on UTC. Usually it isn't a big deal unless. . . . .

Daylight Savings

When files copy over from FAT to NTFS, Microsoft doesn't calculate whether the FAT faile's timetamp was DST or not. The normal copy/move will assume DST for the FAT file. Thus if your FAT file was created during Standard time, your timestamps will be off by an hour. But if they were DST, you can safely assume they will be fine.

Again, if you don't read the above reference, an excerpt is:

If you copy a file from C:\fat16 to D:\NTFS, it keeps the same modified date and time but changes the created date and time to the current date and time.

If you move a file from C:\fat16 to D:\NTFS, it keeps the same modified date and time and keeps the same created date and time.