Ich habe ein Problem mit den Zeitstempeln von Dateien, die von meinem PC oder Laptop auf USB-Laufwerke kopiert wurden: Der letzte Änderungszeitpunkt der Originaldatei und der der kopierten Datei sind unterschiedlich. Daher ist das Synchronisieren von Dateien zwischen meinem PC und meinem USB-Laufwerk ziemlich umständlich.
Eine schrittweise Beschreibung
Ich kopiere eine beliebige Datei von meinem PC / Laptop über die GUI oder mit dem Befehl auf ein USB-Laufwerk
cp -a file.txt /media/gabor/CORSAIR/
Ich überprüfe den letzten Änderungszeitpunkt der Originaldatei:
$ 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
Ich überprüfe den letzten Änderungszeitpunkt der kopierten Datei:
$ 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
Wie Sie sehen, werden die Sekunden in der letzten Änderungszeit der kopierten Datei auf null Dezimalstellen gekürzt. Allerdings wenn ich den befehl eingebe
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
Ich bekomme die Ausgabe The last modification times are equal.
Die Situation ändert sich, wenn ich das USB-Laufwerk aushänge und wieder einbinde und die letzten beiden Befehle erneut ausführe:
$ 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.
Nach dem erneuten Mounten verringert sich die letzte Änderungszeit der kopierten Datei um eine Sekunde. Ein weiteres Abhängen und erneutes Abhängen wirkt sich jedoch nicht mehr auf den Zeitpunkt der letzten Änderung aus. Außerdem zeigt der Test der Dateien jetzt, dass die Datei auf dem PC neuer ist (obwohl dies nicht der Fall ist).
Erschwerend kommt hinzu, dass die letzte Änderungszeit von Dateien auf meinem PC und auf meinem Laptop unterschiedlich angezeigt wird , wobei der Unterschied genau 2 Stunden beträgt, obwohl Datum und Uhrzeit auf meinem PC und auf meinem Laptop gleich eingestellt sind!
Weitere Informationen
Sowohl mein PC als auch mein Laptop zeigen das oben beschriebene Verhalten. Ich habe Ubuntu 14.04.5 (vertrauenswürdig) auf meinem PC und Ubuntu 16.04.2 (xenial) auf meinem Laptop.
Meine USB-Sticks haben ein VFAT-Dateisystem. Die Ausgabe von mount | grep CORSAIR
auf meinem PC ist
/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)
Die Ausgabe von mount | grep CORSAIR
auf meinem Laptop ist
/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)
Meine anderen USB-Laufwerke zeigen dasselbe Verhalten.
Frage
Kann der Unterschied in den letzten Änderungszeiten irgendwie beseitigt werden? Verwenden Sie zum Beispiel andere Parameter beim Ein- und Aushängen? Oder ist es ein Fehler in Ubuntu?
Ich möchte erreichen, dass die Zeitstempel der ursprünglichen und der kopierten Dateien genau gleich sind, damit die Synchronisierung effizienter durchgeführt werden kann. Außerdem möchte ich das vfat-Dateisystem auf meinen USB-Laufwerken behalten, damit ich sie auch unter Windows verwenden kann.
quelle
ext4
Dateisystem? (Die Linux-Unterstützung für Microsoft-proprietäre Dateisysteme, FAT32, exFAT, NTFS, hat einige Grenzen.) Siehe diesen Link, der nicht nur,ext4
sondern auchudf
Alternativen zu Microsoft-proprietären Dateisystemen vorschlägt .Antworten:
Das Problem mit der Änderung der Zeitstempelsekunden beruht auf der Tatsache, dass ein VFAT-Dateisystem (ja, sogar FAT32) die Änderungszeit nur mit einer Auflösung von 2 Sekunden speichert.
Anscheinend speichert der Dateisystemtreiber, solange das Dateisystem gemountet ist, Zeitstempel mit einer Auflösung von 1 Sekunde (wahrscheinlich um die POSIX-Anforderungen zu erfüllen). Sobald das Dateisystem jedoch nicht mehr gemountet ist, werden die Caches gelöscht und Sie sehen, worauf tatsächlich aufgezeichnet wurde das Dateisystemverzeichnis.
Der Zwei-Stunden-Unterschied zwischen dem PC und dem Laptop wird wahrscheinlich durch unterschiedliche Zeitzoneneinstellungen und / oder unterschiedliche Standardeinhängeoptionen für das VFAT-Dateisystem verursacht. (Ich vermute, dass Sie sich in einer Zeitzone befinden, deren UTC-Versatz derzeit 2 Stunden beträgt, entweder positiv oder negativ.)
Intern verwendet Linux UTC-Zeitstempel auf Dateisystemen im Unix-Stil. Auf VFAT-Dateisystemen wird jedoch standardmäßig die Ortszeit für Zeitstempel des VFAT-Dateisystems verwendet, da dies unter MS-DOS und nach wie vor unter Windows der Fall ist. Es gibt jedoch zwei Mount-Optionen, die sich darauf auswirken können: Sie können die Mount-Option
tz=UTC
für die Verwendung von UTC-basierten Zeitstempeln in VFAT-Dateisystementime_offset=<minutes>
angeben oder den Zeitzonenversatz für dieses bestimmte Dateisystem explizit angeben.Möglicherweise haben sich die Standard-Mount-Optionen für VFAT zwischen Ubuntu 14.04 und 16.04 geändert, entweder im Kernel oder im
udisks
Hilfsdienst für Wechselmedien, was zu einem Unterschied von zwei Stunden führt.quelle
mount | grep CORSAIR
auf meinem Laptop abgeschlossen, die sich in der Tat von der Ausgabe auf meinem PC unterscheidet. Sie haben auch Recht, ich befinde mich in Mitteleuropa in der Zeitzone MESZ (= UTC + 2).udisks
sollten moderne Mount-Optionen die in angegebenen einhalten/etc/fstab
, wenn Sie einen Eintrag für Ihr USB-Laufwerk darauf schreiben.Obwohl ich in meiner Frage geschrieben habe, dass "ich das
vfat
Dateisystem auf meinen USB-Laufwerken behalten möchte ", habe ich sie schließlich neu in dasntfs
Dateisystem formatiert . Sowohl Linux als auch Windows können damit umgehenntfs
und es scheint nicht das seltsame Phänomen mit den oben abgebildeten Zeitstempeln zu zeigen.quelle