diff 작업을 수행할 때 파일의 타임스탬프를 무시하는 방법

diff 작업을 수행할 때 파일의 타임스탬프를 무시하는 방법

me.txt텍스트라는 이름의 파일을 만들었습니다.

This is dummy text

그런 다음 TAR을 만들고 이름을 me.txt.tar.

잠시 후, 정확히 동일한 이름과 텍스트(기본적으로 제가 한 작업 touch me.txt)로 파일을 다시 생성하여 .tar라는 TAR 파일로 만들었습니다 me2.txt.tar.

기술적으로 두 tar 모두 동일한 파일과 동일한 파일 내용을 가지고 있지만 파일은 me.txt서로 다른 시간에 생성되었습니다. 그러나 diff 도구는 다음과 같이 말합니다.

Binary files me.txt.tar and me2.txt.tar differ

이는 파일 생성 타임스탬프의 차이로 인해 발생합니다. 하지만 파일 내용만 비교하고 타임스탬프는 무시하면 되므로 차이점에 대한 출력은 없을 것으로 예상됩니다.

파일 내용에 관심이 있으므로 TAR 또는 JAR과 같은 파일 내 파일의 타임스탬프를 무시하도록 도와주세요.

  • 내가 사용하는 명령은 다음과 같습니다
    $ echo "This is dummy text" > me.txt
    $ tar -cvf me.txt.tar me.txt
    (After 1 minute or so..)
    $ touch me.txt 
    $ tar -cvf me2.txt.tar me.txt
    $ diff me.txt.tar me2.txt.tar
    
  • 산출:
    Binary files me.txt.tar and me2.txt.tar differ
    

심지어 diffoscope비슷한 출력을 제공합니다.

답변1

아카이브 자체의 메타데이터가 아닌 아카이브에 있는 파일의 내용을 비교하려는 것이므로 내용을 비교해야 합니다. 모든 아카이브의 파일이 동일한 순서로 저장된다고 가정하면,

diff -u <(tar xOf me.txt.tar) <(tar xOf me2.txt.tar)

JAR의 경우 다음을 사용할 수 있습니다 unzip.

diff -u <(unzip -c file1.jar) <(unzip -c file2.jar)

관련 정보