有时候进行程序开发的时候,某些公司会限定 git 单个提交的文件大小,如果我要提交的某个 xxx.jar 太大导致超过限制的话,可能就没办法将 xxx.jar 文件作为一个整体提交上去。
不过,我么可以曲线救国绕过这种限制,使用 split 命令方法将这类大文件拆分成多个,然后分多次提交到仓库;然后在其他地方,拉取仓库,最后将拆分的文件再使用 cat 再合并起来即可。
文件拆分
split -b 10m -d -a 2 xxx.jar xxx.jar.part-b 10m:按大小拆分,每块10MB(注意:Linux 下小写m代表 1048576 字节,即 MiB;若想严格按 1000*1000 字节,可用40M)。-d:使用数字后缀(而非默认字母),即从00开始。-a 2:后缀长度为2 位,生成00~99,最多支持 100 个分片。xxx.jar:源文件。xxx.jar.part:输出文件前缀。
文件合并
cat xxx.jar.part* > xxx.jar文件校验
这种拆分再合并的文件和原先的文件真的是一样的吗?我们可能不禁会疑问!
当然,有这种担忧完全是可以理解的,毕竟最后的文件是拆分后的文件碎片再组合起来的新文件,而且经过了各种传输,如果合并后的文件不能和原文件保持一致的话,那这么做就完全没有意义了。
不过,我们可以在文件拆分前生成一下文件的 md5 值。文件合并以后,再生成一下合并文件的 md5 值。如果前后的 md5 值没有发生变化。那说明文件在拆分合并过程中是没有损坏,文件的完整性得到了校验。
md5sum xxx.jar 5eb63bbbe01eeed093cb22bb8f5acdc3 xxx.jar如果文件前后的 md5 值不一致,则说明传输或者其他地方出错了,需要排查原因后重试。