我正在运行Debian 8
,并且我的可移动媒体(SD 卡、USB 记忆棒)上的所有文件都显示时间戳被解释为UTC
,而不是我的本地时间?这是怎么回事? date
给我正确的当地时间(太平洋夏令时)。此错误时间问题仅发生在可移动媒体上。在我以前的 GNU/Linux 上从未见过这样的问题!
$ uname -v
#1 SMP Debian 3.16.7-ckt25-1 (2016-03-06)
例子(删除非日期输出):
今天早上在我的工作电脑上:
$ touch /media/newfile; date; stat /media/newfile
Mon May 2 08:34:47 PDT 2016
"May 2 00:00:00 2016" "May 2 08:34:46 2016" "May 2 08:34:46 2016" "May 2 08:34:46 2016"
在我家里的 Debian 8 系统上:
/media/disk$ touch newfile2; date; stat newfile2
Mon May 2 21:53:42 PDT 2016
Access: 2016-05-02 21:53:42.000000000 -0700
Modify: 2016-05-02 21:53:42.000000000 -0700
Change: 2016-05-02 21:53:42.000000000 -0700
ls 输出显示“newfile”的时间变化(应该是 08:34)
/media/disk$ ls -al newfile*
-rw-r--r-- May 2 01:34 newfile
-rw-r--r-- May 2 21:53 newfile2
答案1
简短的回答是要么始终使用 UTC 作为所有访问媒体的设备的时区,要么不要对可移动媒体使用 FAT32 而使用 NTFS 或类似文件:
Windows和Linux存储时间戳的方式不同,并且由于文件时间戳存储的是本地时间而不存储时区,因此存在棘手的问题。
看https://msdn.microsoft.com/fr-fr/library/windows/desktop/ms724290(v=vs.85).aspx和http://www.pascal-hacker.de/info/it/sw/dst.htm了解详情。