卸载SD卡使文件校验和改变

卸载SD卡使文件校验和改变

我有一张由 Lubuntu 安装的 SD 卡,位于/media/$USERNAME/COREELEC/

我需要将文件从一个目录复制到另一个目录并重命名。但是,如果我在它之后检查md5sum(或sha512sumunmount并再次安装它,那就不同了。

  • 为什么重新安装SD卡后校验和不同?
  • 我能做些什么让它再次变得一样吗?

重现它的步骤(假设操作系统已经安装了 SD 卡)

复制文件并检查md5sum原始文件和复制的文件:

$ # 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

卸载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

手动拔出SD卡,然后再次手动插入,等待操作系统自动安装。

然后检查md5sum(参见现在校验和不同了):

$ # 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

答案1

仅当两个文件的内容不同时,其 md5 校验和才不同。您可以通过将它们与cmpdiff命令进行比较来确认这一点。

复制操作无法正常工作的原因可能有以下几个:

  1. 在刷新磁盘缓存之前拔出 SD 卡。您可以尝试使用乌迪斯克特尔

  2. 文件系统损坏。您可以尝试重新格式化该卡。

  3. 硬件故障。

答案2

在卸载介质之前,系统不会写入所有数据。这是可移动(通常是慢速闪存)介质的常见行为,因为系统尝试限制写入。

视觉上,你可以注意到文件管理器(PCManFM,如果我还记得的话……)警告你等待卸载过程(如果你有一个用于 SD 卡读卡器的 LED,它会像地狱一样闪烁)


编辑1:您可以使用sync刷新文件系统缓存的命令来检查/证明我的理论

相关内容