J'ai un problème avec les horodatages des fichiers copiés depuis mon PC ou ordinateur portable vers des clés USB: la dernière heure de modification du fichier d'origine et celle du fichier copié sont différentes. Par conséquent, la synchronisation des fichiers entre mon PC et ma clé USB est assez compliquée.
Une description étape par étape
Je copie un fichier arbitraire de mon PC / ordinateur portable sur une clé USB en utilisant l'interface graphique ou avec la commande
cp -a file.txt /media/gabor/CORSAIR/
Je vérifie la dernière heure de modification du fichier d'origine:
$ 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
Je vérifie la dernière heure de modification du fichier copié:
$ 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
Comme vous pouvez le voir, les secondes de la dernière heure de modification du fichier copié sont tronquées à zéro chiffre décimal. Cependant, si j'entre la commande
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
Je reçois la sortie The last modification times are equal.
La situation change si je démonte et remonte la clé USB et que j'exécute à nouveau les deux dernières commandes:
$ 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.
Ainsi, après le remontage, la dernière heure de modification du fichier copié est encore réduite d'une seconde. Cependant, le démontage et le remontage supplémentaires n'affectent plus la dernière modification. En outre, le test sur les fichiers montre maintenant que le fichier sur le PC est plus récent (bien qu'il ne le soit pas).
La situation est encore compliquée par le fait que la dernière heure de modification des fichiers est affichée différemment sur mon PC et sur mon ordinateur portable , la différence étant exactement de 2 heures, bien que le réglage de la date et de l'heure soit le même sur mon PC et sur mon ordinateur portable!
Plus d'informations
Mon PC et mon ordinateur portable affichent le comportement décrit ci-dessus. J'ai Ubuntu 14.04.5 (fidèle) sur mon PC et Ubuntu 16.04.2 (xenial) sur mon ordinateur portable.
Mes clés USB ont un système de fichiers vfat. La sortie de mount | grep CORSAIR
sur mon PC est
/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)
La sortie de mount | grep CORSAIR
sur mon ordinateur portable est
/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)
Mes autres clés USB affichent le même comportement.
Question
La différence dans les derniers temps de modification peut-elle être éliminée d'une manière ou d'une autre? Par exemple, utiliser d'autres paramètres lors du montage / démontage? Ou est-ce un bug dans Ubuntu?
Je voudrais que les horodatages des fichiers originaux et copiés soient exactement les mêmes, afin que la synchronisation puisse être effectuée plus efficacement. De plus, je voudrais conserver le système de fichiers vfat sur mes clés USB, afin de pouvoir également les utiliser sous Windows.
la source
ext4
système de fichiers Linux ? (La prise en charge sous Linux des systèmes de fichiers propriétaires Microsoft, FAT32, exFAT, NTFS, a certaines limites.) Voir ce lien qui suggère non seulementext4
mais égalementudf
comme alternatives aux systèmes de fichiers propriétaires Microsoft.Réponses:
Le problème avec le changement d'horodatage en secondes vient du fait qu'un système de fichiers VFAT (oui, même FAT32) stocke l'heure de modification avec une résolution de seulement 2 secondes.
Apparemment, tant que le système de fichiers est monté, le pilote du système de fichiers met en cache des horodatages précis à une résolution d'une seconde (probablement pour satisfaire aux exigences POSIX), mais une fois que le système de fichiers est démonté, les caches sont effacés et vous verrez ce qui est réellement enregistré sur le répertoire du système de fichiers.
La différence de deux heures entre le PC et l'ordinateur portable est probablement due à différents paramètres de fuseau horaire et / ou à différentes options de montage par défaut pour le système de fichiers VFAT. (Je suppose que vous vous trouvez dans un fuseau horaire dont le décalage UTC est actuellement de 2 heures, positif ou négatif.)
En interne, Linux utilise des horodatages UTC sur les systèmes de fichiers de style Unix; mais sur les systèmes de fichiers VFAT, la valeur par défaut (actuelle) consiste à utiliser l'heure locale sur les horodatages du système de fichiers VFAT, car c'est ce que MS-DOS a fait et Windows continue de faire. Mais deux options de montage peuvent affecter cela: vous pouvez spécifier l'option de montage
tz=UTC
pour utiliser des horodatages basés sur UTC sur les systèmes de fichiers VFAT, ou vous pouvez utilisertime_offset=<minutes>
pour spécifier explicitement le décalage de fuseau horaire à utiliser avec ce système de fichiers particulier.Il se peut que les options de montage par défaut pour VFAT aient changé entre Ubuntu 14.04 et 16.04, soit dans le noyau, soit dans le
udisks
service d'assistance sur support amovible, entraînant la différence de deux heures que vous voyez.la source
mount | grep CORSAIR
sur mon ordinateur portable, qui est en effet différente de la sortie sur mon PC. Aussi, vous avez raison, je suis situé en Europe centrale dans le fuseau horaire CEST (= UTC + 2).udisks
devrait respecter les options de montage spécifiées dans/etc/fstab
, si vous écrivez une entrée pour votre clé USB.Bien que j'aie écrit dans ma question que "je voudrais garder le
vfat
système de fichiers sur mes clés USB", je les ai finalement reformatés enntfs
système de fichiers. Linux et Windows peuvent le gérerntfs
et il ne semble pas montrer le phénomène étrange avec les horodatages, décrits ci-dessus.la source