AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 470856
Accepted
K. Gabor
K. Gabor
Asked: 2018-09-24 03:35:38 +0800 CST2018-09-24 03:35:38 +0800 CST 2018-09-24 03:35:38 +0800 CST

Timestamps de arquivos copiados para a unidade USB

  • 772

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

  1. 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/
    
  2. 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
    
  3. 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
    
  4. 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.

  1. 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.
    
  2. 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.

file-copy usb-drive
  • 2 2 respostas
  • 2508 Views

2 respostas

  • Voted
  1. Best Answer
    telcoM
    2018-09-24T05:00:50+08:002018-09-24T05:00:50+08:00

    O problema com a alteração dos segundos do carimbo de data/hora vem do fato de que um sistema de arquivos VFAT (sim, até mesmo FAT32) armazena o tempo de modificação com apenas 2 segundos de resolução.

    Aparentemente, desde que o sistema de arquivos esteja montado, o driver do sistema de arquivos armazena em cache os carimbos de data e hora com resolução de 1 segundo (provavelmente para satisfazer os requisitos POSIX), mas uma vez que o sistema de arquivos é desmontado, os caches são limpos e você verá o que está realmente gravado no o diretório do sistema de arquivos.

    A diferença de duas horas entre o PC e o laptop provavelmente é causada por diferentes configurações de fuso horário e/ou diferentes opções de montagem padrão para o sistema de arquivos VFAT. (Acho que você está localizado em um fuso horário cujo deslocamento UTC é atualmente de 2 horas, positivo ou negativo.)

    Internamente, o Linux usa timestamps UTC em sistemas de arquivos no estilo Unix; mas em sistemas de arquivos VFAT, o padrão (atual) é usar a hora local nos registros de data e hora do sistema de arquivos VFAT, porque foi isso que o MS-DOS fez e o Windows ainda faz. Mas há duas opções de montagem que podem afetar isso: você pode especificar a opção de montagem tz=UTCpara usar carimbos de data e hora baseados em UTC em sistemas de arquivos VFAT ou pode usar time_offset=<minutes>para especificar explicitamente o deslocamento de fuso horário a ser usado com esse sistema de arquivos específico.

    Pode ser que as opções de montagem padrão para o VFAT tenham mudado entre o Ubuntu 14.04 e 16.04, seja no kernel ou no udisksserviço auxiliar de mídia removível, resultando na diferença de duas horas que você vê.

    • 17
  2. K. Gabor
    2018-10-04T11:00:25+08:002018-10-04T11:00:25+08:00

    Embora eu tenha escrito na minha pergunta que "gostaria de manter o vfatsistema de arquivos em minhas unidades USB", finalmente os formatei novamente para ntfso sistema de arquivos. Tanto o Linux quanto o Windows podem lidar ntfse parece não mostrar o estranho fenômeno com os timestamps, descritos acima.

    • 0

relate perguntas

  • como criar barra de progresso durante a cópia de arquivos

  • Como os programas que podem retomar transferências de arquivos com falha sabem por onde começar a anexar dados?

  • Mover milhões de arquivos pequenos resulta em erro "falta de espaço"

  • Aproximando o movimento atômico entre sistemas de arquivos?

  • umount de sdcard deixa fat-fs impuro

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    ssh Não é possível negociar: "nenhuma cifra correspondente encontrada", está rejeitando o cbc

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    Como descarregar o módulo do kernel 'nvidia-drm'?

    • 13 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add retorna com: "Erro ao conectar ao agente: nenhum arquivo ou diretório" 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya Por que o Linux usa LF como caractere de nova linha? 2017-12-20 05:48:21 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve