답변:
두 파일이 동일한 지 (크기가 일치한다고 가정) 판별하는 가장 일반적인 방법 중 하나는 프로그램을 사용하여 파일의 " 해시 "(본질적으로 지문)를 작성하는 것입니다. 가장 일반적인 것은 md5sum
및 sha1sum
입니다.
예를 들면 다음과 같습니다.
$ md5sum file1 file2
e0e7485b678a538c2815132de7f9e878 file1
4a14aace18d472709ccae3910af55955 file2
한 시스템에서 다른 시스템으로 파일이 가득 찬 디렉토리를 전송하는 경우와 같이 확인해야 할 파일이 많은 경우 원래 시스템의 출력을 파일로 재 지정할 수 있습니다. 그러면 해당 파일을 자동으로 사용하여 md5sum
/ sha1sum
어떤 파일이 다른지
$ md5sum file1 file2 > MD5SUMS
... copy file1, file2, MD5SUMS across
$ md5sum --check MD5SUMS
file1: OK
file2: OK
동일한 지 알고 싶다면 sha1sum 을 사용할 수 있거나 md5 를 대신 사용하는 것을 선호 합니다.
그것들이 얼마나 다른지 또는 어디가 다른지 알고 싶다면, 작동하는 한 가지는 od 파일 (보통 16 진 옵션이있는 'octal dump')을 통해 임시 파일을 만든 다음 파일을 비교하는 것입니다.
방금 100MB 이상의 파일에서 일부 벤치 마크를 실행했습니다. diff가 가장 빠르며 cmp가 2 위를 차지했으며 md5sum을 사용하는 것이 마지막에 왔습니다.
# time diff file1 file2; echo $?
real 0m0.122s
user 0m0.009s
sys 0m0.113s
0
# time cmp file1 file2; echo $?
real 0m0.213s
user 0m0.097s
sys 0m0.117s
0
# time md5sum file1 > /tmp/test; time md5sum file2 > /tmp/test2; diff /tmp/test /tmp/test2; echo $?
real 0m0.279s
user 0m0.211s
sys 0m0.066s
real 0m0.316s
user 0m0.225s
sys 0m0.073s
0
4.3GB 파일로 연습을 다시 실행했으며 RAM 캐싱이 결과에 크게 영향을 미쳤으므로 dd를 사용하여 파일을 삭제하고 다시 만들어야했습니다.
$time diff file1 file2; echo $?
real 0m19.325s
user 0m0.995s
sys 0m5.280s
0
$time cmp file1 file2; echo $?
real 0m36.106s
user 0m4.399s
sys 0m6.147s
0
$time md5sum file1 > /tmp/test; time md5sum file2 > /tmp/test2; diff /tmp/test /tmp/test2; echo $?
real 0m10.441s
user 0m8.054s
sys 0m2.357s
real 0m24.682s
user 0m8.027s
sys 0m3.442s
0
이 결과를 바탕으로 파일을 RAMFS 마운트로 옮기고 diff를 사용하는 것이 좋습니다.