Estou com um problema com os carimbos de data e hora dos arquivos copiados do meu PC ou laptop para unidades USB: a hora da última modificação do arquivo original e a do arquivo copiado são diferentes. Portanto, a sincronização de arquivos entre meu PC e minha unidade USB é bastante complicada.
Uma descrição passo a passo
Copio um arquivo arbitrário do meu PC / laptop para uma unidade USB usando a GUI ou com o comando
cp -a file.txt /media/gabor/CORSAIR/
Verifico a hora da última modificação do arquivo 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
Verifico a hora da última modificação do arquivo 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 você pode ver, os segundos no horário da última modificação do arquivo copiado são truncados para zero dígitos decimais. No entanto, se eu inserir o 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
Eu recebo a saída The last modification times are equal.
A situação muda se eu desmontar e remontar a unidade USB e executar os dois últimos comandos novamente:
$ 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.
Portanto, após a remontagem, a hora da última modificação do arquivo copiado é reduzida em mais um segundo. Desmontagens e remontagens adicionais, no entanto, não afetam mais a hora da última modificação. Além disso, o teste dos arquivos agora mostra que o arquivo no PC é mais recente (embora não seja).
A situação é ainda mais complicada pelo fato de a hora da última modificação dos arquivos ser mostrada de maneira diferente no meu PC e no meu laptop , a diferença sendo exatamente 2 horas, embora a configuração de data e hora seja a mesma no meu PC e no meu laptop!
Outras informações
Tanto o meu PC quanto o laptop mostram o comportamento descrito acima. Eu tenho o Ubuntu 14.04.5 (confiável) no meu PC e o Ubuntu 16.04.2 (xenial) no meu laptop.
Minhas unidades USB possuem sistema de arquivos vfat. A saída do mount | grep CORSAIR
meu 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)
A saída do mount | grep CORSAIR
meu laptop é
/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)
Minhas outras unidades USB mostram o mesmo comportamento.
Questão
A diferença nos últimos tempos de modificação pode ser eliminada de alguma forma? Por exemplo, usando outros parâmetros na montagem / desmontagem? Ou é um bug no Ubuntu?
Gostaria de conseguir que os carimbos de data e hora dos arquivos originais e copiados sejam exatamente os mesmos, para que a sincronização possa ser feita com mais eficiência. Além disso, gostaria de manter o sistema de arquivos vfat em minhas unidades USB, para que eu possa usá-los também no Windows.
ext4
sistema de arquivos Linux ? (O suporte no linux para sistemas de arquivos proprietários da Microsoft, FAT32, exFAT, NTFS, tem alguns limites.) Veja este link que sugere não apenasext4
mas tambémudf
como alternativas aos sistemas de arquivos proprietários da Microsoft.