md5 해시를 사용하여 폴더 구조 다시 만들기

md5 해시를 사용하여 폴더 구조 다시 만들기

md5 체크섬의 긴 목록과 이러한 파일의 복사본(이름이 바뀌고 다른 폴더 구조에 있음)이 주어지면 원래 파일 시스템 구조를 다시 생성하거나 복원하는 방법은 무엇입니까? 해시 충돌이 없다고 가정합니다.

be70e389a9e000a85826a1a80488e1e1  path/A/2/2.bin
96a48d4706ec8eafff7e56f6784bb6b4  path/B/b1.bin
ffd2e58da118ba6c85de29c4c5b4c1f8  path/C/c1.bin
dbde0b664f88d8027e5cb7efb2cd1060  path/C/2/c2.bin
...```

답변1

만나요 bash:

  1. 파일을 반복하고 read각 해시를연관 배열
  2. 모든 로컬 파일 이름을 임시 파일에 저장합니다( find사용해도 괜찮습니다).
  3. 각 파일에서 실행 중인 로컬 파일 목록을 반복하여 md5sum해시 값이 배열에 키로 있는지 확인하고, 그렇다면 이름을 대상 이름으로 바꿉니다.

답변2

join폴더를 복원하는 데 사용된 파일 이름에 공백 문자가 없다고 가정하고 빠르고 더러운 솔루션을 사용했습니다 .

md5sum * | sort -u -k 1,1 | join - ../restore.s | \
  while read h r t; do \
    mkdir -p $(dirname "tmp/$t"); cp "$r" "tmp/$t"; \
  done

연결 입력을 정렬해야 하는데 동일한 파일을 삭제했습니다. 연결의 출력은 hash source target파일을 복원하는 데 사용되는 행입니다.

관련 정보