두 개의 tar 아카이브(압축 또는 비압축)가 있고 이 두 아카이브의 모든 차이점을 찾고 싶습니다. 두 아카이브 모두 완전한 파일 시스템을 포함합니다(예: 압축을 풀면 , /bin
, /home
, /root
, /usr
, /var
, /etc
...와 같은 디렉터리가 생성됩니다. 이 점을 이해하시기 바랍니다). 나는 다음을 포함하는 목록을 원합니다:
- 새로운 파일
- 삭제된 파일
- 변경된 파일(크기뿐만 아니라 파일 내용)
- 변경된 기호 링크(상대 및 절대)
- 신규/제거된 심볼릭 링크
diff
diff가 절대 심볼릭 링크를 올바르게 인식하지 못하기 때문에(아카이브의 파일 시스템 구조를 가리키기 때문에) 이러한 아카이브의 압축을 풀고 사용할 수는 없습니다 .
두 tar 아카이브의 내용을 비교하는 또 다른 방법이 있습니까?
답변1
diff
비교할 심볼릭 링크가 있다면 그것으로부터 유용한 것을 얻을 수 없을 것이라고 생각합니다. 한 번에 모든 작업을 수행하는 대신 두 가지 개별 작업을 수행하십시오. 하나는 메타데이터를 비교하고 다른 하나는 파일 내용을 비교합니다.
외부 파일 이름이 없으면 메타데이터 부분 tar -tv
에 대해 또는 출력을 간단히 비교하면 pax -v
충분합니다. Bash/ksh/zsh에서:
pax -v <(archive1.tar) <(archive2.tar)
아카이브된 콘텐츠의 경우 다음 명령을 사용하여 마운트합니다.AVFS그리고 두 개의 디렉토리 트리를 비교하십시오.
mountavfs
diff -urN ~/.avfs$PWD/archive1.tar\#/ ~/.avfs$PWD/archive2.tar\#/