diff 명령은 비교하여 두 파일 간의 차이점을 확인합니다. 동일한 방법을 사용하여 두 개의 zip 파일을 비교할 수 있습니까? 즉, zip 파일에 있는 개별 파일의 데이터(개수 등)에 차이가 있습니까?
답변1
둘을 비교하려면 (메모리에서만) 압축을 풀어야 합니다. 내가 본 멋진 접근 방식 diff
은 다음과 같습니다.
diff -y <(unzip -l file1.zip) <(unzip -l file2.zip)
한 파일에 파일이 포함되어 있고 다른 파일에는 포함되어 있지 않은 경우 표시됩니다.
답변2
설명을 좀 더 길게 올렸어요"압축을 풀지 않고 zip" 내부의 Diff 파일하지만 비교하고 싶다면콘텐츠zip 파일을 다운로드하고 모든 메타데이터(특히 타임스탬프)를 무시한 후 다음을 실행해야 합니다.
diff \
<(unzip -vqq file1.zip | awk '{$2=""; $3=""; $4=""; $5=""; $6=""; print}' | sort -k3) \
<(unzip -vqq file2.zip | awk '{$2=""; $3=""; $4=""; $5=""; $6=""; print}' | sort -k3)
답변3
ZIP 파일과 디렉터리를 비교하는 한 가지 옵션은 다음을 사용하는 것입니다.zipcmp다른 기사에서 언급했듯이.
zipcmp이는 ZIP 아카이브가 동일한 디렉터리 구조를 사용하는 한 작동합니다.
2개의 ZIP 아카이브를 동일한 파일과 비교해야 하지만 한 아카이브의 파일이 다른 하위 디렉터리에 포함되어 있는 경우,zipcmp모든 파일을 수정된 것으로 표시하면 문제가 될 수 있습니다. 그래서zipcmp내용이 정확히 동일한지 확인하는 데에만 사용할 수 있습니다.
내가 만든다폴더 차이점일부 사용 사례에서는 웹 애플리케이션의 백업을 신뢰할 수 있는 소스와 비교하려고 하기 때문입니다.
예를 들어, 수정된 파일(예: 가능한 백도어)을 찾으려면 다음을 사용할 수 있습니다.폴더 차이점이 작업에 사용되며 ZIP 아카이브 및 폴더와 함께 사용할 수 있습니다.
예:
Wordpress는 ZIP 아카이브를 사용하며 아카이브의 파일은 wordpress
. 이 예에서는 파일이 하위 폴더 /var/www/
없이 추출됩니다 wordpress
.
폴더 차이점wordpress/
매개변수를 사용하여 설치 아카이브의 폴더를 무시하고 고유 한 파일 --prefix
만 나열할 수 있습니다 .webshell.php
index.php
$ folderdiff wordpress-6.0.3-de_AT.zip backup.zip --prefix wordpress/
===================== Added ======================
+ webshell.php
==================== Modified ====================
* index.php
zipcmp아카이브에 사용된 경로가 다르기 때문에 파일을 비교할 수 없습니다.
답변4
체크섬이 올바른 방법입니다.
diff <(md5sum file1.zip | cut -f1 -d ' ') <(md5sum file2.zip | cut -f1 -d ' ')