Eu tenho um cartão SD montado pelo Lubuntu em/media/$USERNAME/COREELEC/
Eu preciso copiar um arquivo de um diretório para outro e renomeá-lo. No entanto, se eu verificar o md5sum
(ou sha512sum
) depois unmount
de montá-lo e montá-lo novamente, é diferente.
- Por que a soma de verificação é diferente depois de montar novamente o cartão SD?
- Existe alguma coisa que eu possa fazer para que seja o mesmo novamente?
Etapas para reproduzi-lo (supondo que já exista um cartão SD montado pelo sistema operacional)
Copie o arquivo e verifique os md5sum
arquivos originais e copiados:
$ # copy the file from the original directory to the desired directory
$ cp /media/$USERNAME/COREELEC/device_trees/gxm_q201_3g.dtb /media/$USERNAME/COREELEC/dtb.img
$ # checksum of the original file
$ md5sum /media/$USERNAME/COREELEC/device_trees/gxm_q201_3g.dtb
fd97f3d36cbb53cbdd59b53603f45913 /media/$USERNAME/COREELEC/device_trees/gxm_q201_3g.dtb
$ # checksum of the file I copied
$ md5sum /media/$USERNAME/COREELEC/dtb.img
fd97f3d36cbb53cbdd59b53603f45913 /media/$USERNAME/COREELEC/dtb.img
Desmonte o cartão SD
$ # check which drive to unmount
$ df -aTh | grep COREELEC
/dev/mmcblk0p1 vfat 512M 170M 343M 34% /media/$USERNAME/COREELEC
$ # unmount the SD card
$ umount /dev/mmcblk0p1
Desconecte o cartão SD manualmente e conecte-o novamente à mão esperando que o sistema operacional o monte automaticamente.
Em seguida, verifique o md5sum
(veja agora a soma de verificação é diferente ):
$ # checksum of the copied file (NOW DIFFERENT!)
$ md5sum /media/$USERNAME/COREELEC/dtb.img
c8e06c372926719c0a0dac2d5b0f6ab5 /media/$USERNAME/COREELEC/dtb.img
$ # checksum of the original file (STILL THE SAME!)
$ md5sum /media/$USERNAME/COREELEC/device_trees/gxm_q201_3g.dtb
fd97f3d36cbb53cbdd59b53603f45913 /media/$USERNAME/COREELEC/device_trees/gxm_q201_3g.dtb
As somas de verificação md5 de dois arquivos são diferentes apenas se seu conteúdo for diferente. Você pode confirmar isso comparando-os com
cmp
oudiff
command.Pode haver vários motivos para a operação de cópia não funcionar corretamente:
Desconectando o sdcard antes que o cache do disco seja liberado. Você pode tentar usar udiskctl .
Corrupção do sistema de arquivos. Você pode tentar reformatar o cartão.
Falha de hardware.
O sistema não grava todos os dados até que a mídia seja desmontada. Esse é um comportamento comum com mídia removível (geralmente memória lenta e flash) porque o sistema tenta limitar as gravações.
Visualmente , você pode notar que o gerenciador de arquivos (PCManFM se bem me lembro...) avisa sobre esperar o processo de desmontagem (se você tiver um LED para o leitor de cartão SD, ele piscará como um inferno)
EDIT1: você pode verificar/provar minha teoria usando o
sync
comando que libera o cache do sistema de arquivos