复制到USB驱动器的文件的时间戳

盖博(K. Gabor)

我从PC或笔记本电脑复制到USB驱动器的文件时间戳存在问题:原始文件的最后修改时间与复制文件的最后修改时间不同。因此,在PC和USB驱动器之间同步文件非常麻烦。

逐步说明

  1. 我可以使用GUI或以下命令将任意文件从PC /笔记本电脑复制到USB驱动器

    cp -a file.txt /media/gabor/CORSAIR/
    
  2. 我检查了原始文件的最后修改时间:

    $ ls -l --time-style=full-iso file.txt
    -rw-rw-r-- 1 gabor gabor 0 2018-09-22 15:09:23.317098281 +0200 file.txt
    
  3. 我检查复制文件的最后修改时间:

    $ ls -l --time-style=full-iso /media/gabor/CORSAIR/file.txt
    -rw-r--r-- 1 gabor gabor 0 2018-09-22 15:09:23.000000000 +0200 /media/gabor/CORSAIR/file.txt
    
  4. 如您所见,复制文件的最后修改时间中的秒数被截断为零个十进制数字。但是,如果我输入命令

    if ! [ file.txt -nt /media/gabor/CORSAIR/file.txt ] && ! [ file.txt -ot /media/gabor/CORSAIR/file.txt ]; then echo "The last modification times are equal."; fi
    

我得到了输出 The last modification times are equal.

  1. 如果卸载并重新安装USB驱动器,然后再次执行最后两个命令,情况将发生变化:

    $ ls -l --time-style=full-iso /media/gabor/CORSAIR/file.txt
    -rw-r--r-- 1 gabor gabor 0 2018-09-22 15:09:22.000000000 +0200 /media/gabor/CORSAIR/file.txt
    $ if [ file.txt -nt /media/gabor/CORSAIR/file.txt ]; then echo "The file is newer on the PC."; fi
    The file is newer on the PC.
    
  2. 因此,重新挂载后,复制文件的最后修改时间将进一步减少一秒钟。但是,进一步的卸载和重新安装不再影响最后的修改时间。此外,对文件的测试现在表明PC上的文件是较新的(尽管不是)。

由于文件的最后修改时间在我的PC和笔记本电脑上显示的方式不同,因此情况变得更加复杂,尽管日期和时间设置在我的PC和笔记本电脑上相同,但差异恰好是2小时!

更多信息

我的PC和笔记本电脑都显示了上述行为。我的PC上有Ubuntu 14.04.5(可信任),笔记本电脑上有Ubuntu 16.04.2(xenial)。

我的USB驱动器具有vfat文件系统。mount | grep CORSAIR 我PC上的输出

/dev/sdb1 on /media/gabor/CORSAIR type vfat (rw,nosuid,nodev,uid=1000,gid=1000,shortname=mixed,dmask=0077,utf8=1,showexec,flush,uhelper=udisks2)

mount | grep CORSAIR 我的笔记本电脑上的输出

/dev/sdb1 on /media/gabor/CORSAIR type vfat (rw,nosuid,nodev,relatime,uid=1000,gid=1000,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,showexec,utf8,flush,errors=remount-ro,uhelper=udisks2)

我的其他USB驱动器表现出相同的行为。

问题

能否以某种方式消除上次修改时间的差异?例如,在安装/卸载时使用其他参数?还是Ubuntu中的错误?

我想实现原始文件和复制文件的时间戳完全相同,以便可以更高效地完成同步。另外,我想将vfat文件系统保留在USB驱动器上,以便也可以在Windows下使用它们。

电信

时间戳更改秒数的问题是由于VFAT(是,甚至FAT32)文件系统仅以2秒的分辨率存储了修改时间。

显然,只要挂载了文件系统,文件系统驱动程序就会将时间戳准确地缓存到1秒分辨率(可能满足POSIX要求),但是一旦卸载了文件系统,便会清除缓存并看到实际记录的内容。文件系统目录。

PC和笔记本电脑之间两个小时的差异可能是由于不同的时区设置和/或VFAT文件系统的默认安装选项不同引起的。(我猜您位于的UTC偏移当前为2小时(正数或负数)的时区。)

在内部,Linux在Unix风格的文件系统上使用UTC时间戳。但是在VFAT文件系统上,(当前)默认设置是在VFAT文件系统时间戳上使用本地时间,因为这是MS-DOS所做的,而Windows仍在执行。但是有两个挂载选项可能会影响此设置:您可以指定挂载选项tz=UTC以在VFAT文件系统上使用基于UTC的时间戳,或者可以用于time_offset=<minutes>显式指定要与此特定文件系统一起使用的时区偏移量。

在内核或udisks可移动媒体帮助器服务中,Ubuntu 14.04和16.04之间的VFAT默认挂载选项可能已更改,从而导致您看到两个小时的差异。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将文件夹从USB驱动器复制到Mac将权限更改为777

iOS Swift 3以编程方式将文件复制到iCloud驱动器

Google Drive API将文件复制到团队驱动器中

将已安装的Truecrypt系统分区复制到USB驱动器

将Linux NFS文件复制到标准用户外部硬盘驱动器

复制到xubuntu中的USB驱动器卡住

通过USB启动盘将文件从一个NTFS驱动器复制到另一个驱动器

为什么不能将大量文件复制到USB闪存驱动器?

无法查看使用Ubuntu复制到Windows上的驱动器的文件

将文件从USB驱动器复制到通过LiveCD加载的桌面

为什么不能将文件复制到由GParted分区的USB驱动器?

将文件从USB闪存驱动器复制到OpenBSD的根目录

将大量文件复制到USB驱动器时,为什么我的桌面会锁定?

将文件从闪存驱动器复制到Ubuntu

复制到USB驱动器会修改文件名

使用ANT将文件从本地目录复制到映射的驱动器

硬盘驱动器已满时,将文件从一个连接的USB驱动器复制到另一个连接的USB驱动器

如何将大于4GB的文件复制到USB闪存驱动器?

如何在tty4终端中将文件从硬盘驱动器正确复制到USB闪存驱动器?

在kickstart的%post脚本中将文件从可启动USB复制到本地驱动器

仅在卸载时将文件复制到闪存驱动器

如何使用PHP将文件从托管服务器复制到本地驱动器

如何在恢复模式下将文件复制到闪存驱动器?

使用 Powershell 将文件从网络驱动器复制到本地驱动器

libaums - 如果驱动器未卸载,复制到 USB 驱动器或从 USB 驱动器复制的文件是否会损坏?

如何将 Ubuntu 安装从内部驱动器复制到可启动 USB

Gradle 复制文件任务无法通过 Jenkins 复制到映射的网络驱动器

如何使用批处理文件将文件从 USB 驱动器复制到 Windows 10 中的 C 驱动器?

根据设备名称而不是驱动器号复制到设备的 Bat 文件