배포 중에 OSGi 번들 JAR을 업로드해야하는지 확인하기 위해 ZIP 파일의 MD5를 비교할 계획이었습니다. 나는 번들 JAR 내부의 파일이 동일하다면 번들 JAR 자체가 동일하다고 가정했다. 빌드 간, 필자가 설명했던 타임 스탬프는 빌드 간의 파일 내 유일한 차이점이라는 것을 알게되었습니다. 쉘 스크립트를 사용하여 모든 파일을 동일하게 만든 타임 스탬프를 뽑은 후에 파일 타임 스탬프로 인해 번들 JAR이 여전히 다른 것을 발견했습니다.
lhash=$(unzip -lv $HOME/staging/$bundle | sed -ne '/---/,/---/p' | sed -e '1d;$d;' | awk '{L="";for(i=1;i<NF;i++){if(i<5 || i>6){L = L " " $bundle}}print L}' | md5)
rhash=$(ssh -i $HOME/.ssh/keys/keyfile.pem [email protected]$host "unzip -lv ~ubuntu/bundles/$bundle | sed -ne '/---/,/---/p' | sed -e '1d;\$d;' | awk '{L=\"\";for(i=1;i<NF;i++){if(i<5 || i>6){L = L \" \" \$bundle}}print L}' | md5sum | awk '{print \$1}'")
if [ "$lhash" = "$rhash" ]
then
different=f
else
different=t
fi
내 로컬 컴퓨터가 맥과 원격 컴퓨터가 우분투, 따라서 md5
대 md5sum
을 실행 : 두 번들 JAR 파일이 평등을 결정하는
나는 unzip -lv
출력을 비교 끝났다. awk
넌센스는 unzip -l
출력에서 타임 스탬프를 제거하는 것입니다. 코드가 완료된 후 different
이 t
이면 파일이 다릅니다. 그렇지 않으면 파일이 동일합니다.
이미 실제로는 관계가 없지만 감사합니다. –