Tenho um problema com os carimbos de data/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, sincronizar arquivos entre meu PC e minha unidade USB é bastante complicado.
Uma descrição passo a passo
Eu 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/
Eu 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
Eu 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 na hora da última modificação do arquivo copiado são truncados para zero dígitos decimais. No entanto, se eu digitar 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ídaThe 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, o horário da última modificação do arquivo copiado é reduzido ainda mais em um segundo. No entanto, a desmontagem e a remontagem adicionais não afetam mais a hora da última modificação. Além disso, o teste nos arquivos agora mostra que o arquivo no PC é mais recente (embora não seja).
A situação é ainda mais complicada pelo fato de que a hora da última modificação dos arquivos é mostrada de forma diferente no meu PC e no meu laptop , sendo a diferença 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 meu PC quanto meu laptop mostram o comportamento descrito acima. Eu tenho o Ubuntu 14.04.5 (trusty) no meu PC e o Ubuntu 16.04.2 (xenial) no meu laptop.
Minhas unidades USB têm sistema de arquivos vfat. A saída de mount | grep CORSAIR
no 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 de mount | grep CORSAIR
no 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.
Pergunta
A diferença nos tempos da última modificação pode ser eliminada de alguma forma? Por exemplo, usando outros parâmetros na montagem/desmontagem? Ou é um bug no Ubuntu?
Eu 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 também possa usá-las no Windows.