체크섬을 기반으로 두 디렉터리를 재귀적으로 비교하시겠습니까?

체크섬을 기반으로 두 디렉터리를 재귀적으로 비교하시겠습니까?

콘텐츠의 체크섬을 통해 어떤 파일이 존재하지 않는지 찾으려고 합니다. 두 개의 디렉토리가 있는데 /foo, /bar이 디렉토리는 모두 시스템의 임의 상태를 나타냅니다. 모든 디렉토리를 찾고 싶습니다.파일루트 /bar에 존재하지 않는 루트에 /foo(재귀적으로). ~와 /bar/**함께하는 사전

CheckSum -> filepath

/foo/**with 의 사전을 적다

CheckSum -> filepath  

md5sum 등을 사용하여 이를 작성할 수 있지만 이를 수행하는 유틸리티가 이미 있어야 합니다.

명확하게 말하면 두 파일이 동일한 경우제외하고위치(이름 및 경로)로 동일하게 식별되기를 원합니다.

테스트 케이스

몇 가지 테스트 데이터를 사용하여 트리를 만들어 보겠습니다.

/tmp/foo
└── myFile (duplicate of /tmp/bar/quz/asdf/otherFileName)
/tmp/bar
├── qaz
│   └── findMe
└── quz
    └── asdf
        └── otherFileName (duplicate of /tmp/foo/myFile)

생성을 위한 스크립트,

mkdir -p /tmp/foo /tmp/bar/quz/asdf /tmp/bar/qaz

# One file that exists in both locations
dd if=/dev/urandom of=/tmp/foo/myFile bs=1k count=10
cp /tmp/foo/myFile /tmp/bar/quz/asdf/otherFileName

# One file (findMe) that exists in only /mpt/bar/
dd if=/dev/urandom of=/tmp/bar/qaz/findMe bs=1k count=10

그래서 프로그램은 비교 /tmp/foo하고 /tmp/bar찾아야합니다/tmp/bar/qaz/findMe

답변1

두 트리 모두에 대해 md5sum 목록(합계 열과 파일 이름 열)을 생성하고 결과를 파일 이름에 대한 해시로 합계를 사용할 수 있는 스크립트(예: awk 또는 perl)로 파이프하고 동일한 해시 값을 갖는 스크립트 보고서 파일 이름입니다.

이는 한 줄의 설명이 아니라 자주 묻는 문제이고 자주 해결되는 문제입니다. 웹에서 콘텐츠별로 중복 파일을 검색하면 조회 수가 백만 건이 넘습니다.

다음 내용이 도움이 될 수 있습니다.

관련 정보