如何处理 .tar.md5 文件

How to handle .tar.md5 files

我想知道如何创建/提取/验证 .tar.md5 文件。这些文件在将图像闪烁到 android 设备时使用,例如参见 [​​=16=]。

据我所知,校验和是这样附加到文件中的:

cp file.tar file.tar.md5
md5sum file.tar >> file.tar.md5

首先我想知道如何提取文件。我可以简单地在 file.tar.md5 上使用 tar -xf 吗?

如何验证文件的完整性?我想从文件中删除最后一个字节(包含校验和)以取回原始文件。我想您必须使用正则表达式来匹配 checksum file.tar?类似这样的东西已经在某处实施了吗?

首先,tar -xf 应该可以工作,因为 tar 在匹配其打包算法时会继续。如果文件停止匹配,tar 也会停止匹配。 如果您删除“.md5”,大多数存档管理器(如 7-zip 或 winrar)也会打开它。 他们可能会打印与文件末尾不匹配的错误,请忽略它。

关于验证文件:

  • 打印出存储的md5sum: tail -z -n 1 [这里是文件名].tar.md5

  • 计算文件tar部分的md5sum: head -z -n -1 [这里是文件名].tar.md5 | md5sum

Ubuntu 19.10 对我有用的是:

  • 从 sammobile com 下载单个文件 4 GiB zip
  • 解压到几个*.tar.md5
  • 运行 下面的命令行

.

for F in *.tar.md5; do echo -n "$F " &&
  EXP=($(tail --lines=1 "$F")) &&
  ACT=($(head --lines=-1 "$F" | md5sum)) &&
  if [ ${EXP[0]} = ${ACT[0]} ]; then echo -n "md5ok " &&
  tar --extract --file "$F" && echo "done" 
  else echo "FAIL"; fi; done &&
unlz4 --multiple --verbose *.lz4
AP_G965U1UEU3ARL1_CL14745140_QB21029084_REV01_user_low_ship_MULTI_CERT_meta.tar.md5 md5ok done
BL_G965U1UEU3ARL1_CL14745140_QB21029084_REV01_user_low_ship_MULTI_CERT.tar.md5 md5ok done
CP_G965U1UEU3ARL1_CP11407818_CL14745140_QB21029084_REV01_user_low_ship_MULTI_CERT.tar.md5 md5ok done
CSC_OMC_OYM_G965U1OYM3ARL1_CL14745140_QB21029084_REV01_user_low_ship_MULTI_CERT.tar.md5 md5ok done
HOME_CSC_OMC_OYM_G965U1OYM3ARL1_CL14745140_QB21029084_REV01_user_low_ship_MULTI_CERT.tar.md5 md5ok done
…

但是我们都应该尽量远离bash