Tengo un problema con las marcas de tiempo de los archivos copiados de mi PC o computadora portátil a las unidades USB: la última hora de modificación del archivo original y la del archivo copiado son diferentes. Por lo tanto, sincronizar archivos entre mi PC y mi unidad USB es bastante engorroso.
Una descripción paso a paso.
Copio un archivo arbitrario de mi PC / laptop a una unidad USB usando la GUI o con el comando
cp -a file.txt /media/gabor/CORSAIR/
Compruebo la hora de la última modificación del archivo original:
$ 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
Compruebo la última hora de modificación del archivo copiado:
$ 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
Como puede ver, los segundos en el último tiempo de modificación del archivo copiado se truncan a cero dígitos decimales. Sin embargo, si ingreso el comando
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
Me sale la salida The last modification times are equal.
La situación cambia si desmonto y vuelvo a montar la unidad USB y ejecuto los dos últimos comandos nuevamente:
$ 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.
Entonces, después del remontaje, el tiempo de última modificación del archivo copiado se reduce aún más en un segundo. Sin embargo, desmontar y volver a montar más, ya no afecta el tiempo de la última modificación. Además, la prueba en los archivos ahora muestra que el archivo en la PC es más nuevo (aunque no lo es).
La situación se complica aún más por el hecho de que la última hora de modificación de los archivos se muestra de manera diferente en mi PC y en mi computadora portátil , la diferencia es exactamente 2 horas, ¡aunque la configuración de fecha y hora es la misma en mi PC y en mi computadora portátil!
Más información
Tanto mi PC como mi computadora portátil muestran el comportamiento descrito anteriormente. Tengo Ubuntu 14.04.5 (confiable) en mi PC y Ubuntu 16.04.2 (xenial) en mi computadora portátil.
Mis unidades USB tienen sistema de archivos vfat. La salida de mount | grep CORSAIR
en mi PC es
/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 salida de mount | grep CORSAIR
en mi computadora portátil es
/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)
Mis otras unidades USB muestran el mismo comportamiento.
Pregunta
¿Se puede eliminar la diferencia en los últimos tiempos de modificación de alguna manera? Por ejemplo, ¿usando otros parámetros en el montaje / desmontaje? ¿O es un error en Ubuntu?
Me gustaría lograr que las marcas de tiempo de los archivos originales y copiados sean exactamente las mismas, de modo que la sincronización se pueda hacer de manera más eficiente. Además, me gustaría mantener el sistema de archivos vfat en mis unidades USB, para poder usarlas también en Windows.
fuente
ext4
sistema de archivos de Linux ? (El soporte en Linux para los sistemas de archivos propietarios de Microsoft, FAT32, exFAT, NTFS, tiene algunos límites). Vea este enlace que sugiere no soloext4
sino tambiénudf
como alternativas a los sistemas de archivos propietarios de Microsoft.Respuestas:
El problema con el cambio de segundos de la marca de tiempo proviene del hecho de que un sistema de archivos VFAT (sí, incluso FAT32) almacena el tiempo de modificación con una resolución de solo 2 segundos.
Aparentemente, siempre y cuando el sistema de archivos esté montado, el controlador del sistema de archivos almacena en caché las marcas de tiempo con una resolución de 1 segundo (probablemente para satisfacer los requisitos de POSIX), pero una vez que el sistema de archivos se desmonta, las memorias caché se borran y verá lo que realmente está grabado en El directorio del sistema de archivos.
La diferencia de dos horas entre la PC y la computadora portátil probablemente se deba a diferentes configuraciones de zona horaria y / o diferentes opciones de montaje predeterminadas para el sistema de archivos VFAT. (Supongo que se encuentra en una zona horaria cuyo desplazamiento UTC es actualmente de 2 horas, ya sea positivo o negativo).
Internamente, Linux usa marcas de tiempo UTC en sistemas de archivos de estilo Unix; pero en los sistemas de archivos VFAT, el valor predeterminado (actual) es usar la hora local en las marcas de tiempo del sistema de archivos VFAT, porque eso es lo que hizo MS-DOS y Windows todavía lo hace. Pero hay dos opciones de montaje que pueden afectar esto: puede especificar la opción de montaje
tz=UTC
para usar marcas de tiempo basadas en UTC en sistemas de archivos VFAT, o puede usartime_offset=<minutes>
para especificar explícitamente el desplazamiento de zona horaria que se utilizará con este sistema de archivos en particular.Es posible que las opciones de montaje predeterminadas para VFAT hayan cambiado entre Ubuntu 14.04 y 16.04, ya sea dentro del núcleo o del
udisks
servicio auxiliar de medios extraíbles, lo que resulta en la diferencia de dos horas que ve.fuente
mount | grep CORSAIR
mi computadora portátil, que de hecho es diferente de la salida de mi PC. Además, tiene razón, estoy ubicado en Europa central en la zona horaria CEST (= UTC + 2).udisks
debe respetar las opciones de montaje especificadas en/etc/fstab
, si escribe una entrada para su unidad USB.Aunque escribí en mi pregunta que "me gustaría mantener el
vfat
sistema de archivos en mis unidades USB", finalmente los volví a formatear alntfs
sistema de archivos. Tanto Linux como Windows pueden manejarntfs
y parece no mostrar el extraño fenómeno con las marcas de tiempo, que se muestran arriba.fuente