수천 개의 파일을 exFAT MicroSD 카드에 복사했습니다.
파일 수와 바이트 수는 동일하지만 데이터가 손상되었는지 어떻게 알 수 있나요?
JackPal Android 단말기도 이 명령을 지원하면 좋을 것 같습니다.
답변1
MD5를 사용하는 것은 좋은 접근 방식이지만 이를 사용하는 표준적인 방법은 다음과 같습니다.
cd
소스 파일의 디렉터리로 이동하여 다음을 실행하세요.md5sum * >/path/to/the/checksumfile.md5
디렉토리 레벨이 여러 개인 경우 로 shopt -s globstar
대체하여 사용할 수 있습니다 .*
**/*
MD5 파일의 파일 사양은 명령줄에 제공된 사양과 정확히 동일합니다(패턴이 로 시작하지 않는 한 상대 경로 /
).
cd
파일이 복사된 디렉토리로 이동하여 다음을 실행하십시오.md5sum -c /path/to/the/checksumfile.md5
를 사용하고 -c
, md5sum
제공된 MD5 파일의 파일 사양을 읽고, 이러한 파일의 MD5를 계산하고, 이를 MD5 파일의 값과 비교합니다(이것이 파일 사양이 일반적으로 상대적으로 가장 잘 유지되는 이유이므로 MD5 파일을 재사용할 수 있습니다) 다른 디렉토리의 파일에 있음).
이런 방식으로 MD5 합계를 사용하면 MD5 차이점과 누락된 파일을 즉시 알 수 있습니다.
답변2
장치를 제거하고 꺼내고 다시 설치합니다. 그런 다음 사용
diff -r source destination
rsync
이전에 복사를 많이 해본 적이 있다면 rsync -n -c
매우 편리할 수 있으며 다음과 거의 같습니다 diff
. 그러나 비트별 비교는 수행하지 않으며 MD5 체크섬을 사용합니다.
추가 세부 정보가 포함된 유사한 답변이 있습니다.한 하드 드라이브에서 다른 하드 드라이브로 복사한 후 큰 디렉터리 확인
답변3
rsync -rc original-dir/ copied-dir/
-c
rsync는 MD5 체크섬으로 파일을 비교합니다(이 기능이 없으면 일반적으로 더 빠른 비교를 위해 타임스탬프와 크기만 사용합니다).
이로 인해 rsync는 대상과 다르거나 누락된 것으로 보이는 모든 항목을 복사하게 됩니다. 이를 방지하려면 -n
및 를 사용할 수도 있습니다 -i
. 전자는 rsync가 변경을 하지 않고 비교만 하도록 하고, 후자는 차이점을 표시하도록 합니다.
예를 들어 다음과 같은 디렉터리가 있습니다.
$ find dir1/ dir2/
dir1/ dir2/
dir1/
dir1/d
dir1/d/a
dir1/d/b
dir1/c
dir2/
dir2/d
dir2/d/a
dir2/d/b
이:
$ rsync -rcni dir1/ dir2/
>f+++++++++ c
>fc.T...... d/b
이 모든 s를 살펴보면 +
파일이 c
에 존재하지 않지만 dir2
파일은 d/b
있지만 다르다는 것을 알 수 있습니다( c
첫 번째 열에 로 표시됨). 업데이트할 시간이라고 말합니다 T
(아직 사용하지 않는 경우 -n
).
-i
출력 형식은 rsync 맨페이지에 설명되어 있습니다. 를 입력하고 Enter를 눌러 man rsync
이 출력을 해석하는 섹션을 입력 할 수 있습니다./--itemize-changes$
답변4
개별 파일에 대한 해시 값을 생성하여 텍스트 파일로 출력한 후 텍스트 파일의 MD5 해시를 생성할 수 있습니다. 이 텍스트 파일의 경우 원하는 해시 함수를 사용할 수 있습니다. 이 해시 목록은 더 어려운 해시 함수를 사용할 때 유용할 만큼 크지 sha512sum
않기 때문 입니다 . ) 그리고 최고 속도는 그런 암호화, 보안 알고리즘이 아니지만 .cksum
sum
crc32
sha512sum
임의의 해시 함수오프라인 환경에서 데이터 무결성을 검증하기에 충분합니다. 그러나 모든 파일 해시의 길이를 동일하게 하려면(예: 32) md5sum
보편적으로 지원되는 가장 빠른 해시를 사용하세요.안전한해시 알고리즘(오래되었지만 어떤 알고리즘보다 훨씬 빠릅니다)사악한알고리즘을 실행하고 해당 작업을 수행합니다).
소스 및 대상에서 다음 명령을 실행합니다.
cksum /path/to/folder/* | tee -a hash.files.txt |cut -f 1 -d " " >>hash.list.txt #extracts pure hashsum string only for the output, to hide the different file path.
md5sum hash.list.txt
...또는 단일 명령을 사용하십시오.
cksum /path/to/folder/* | tee -a hash.files.txt | cut -f 1 -d " " | tee -a hash.list.txt | sort | md5sum
해시 및 목록 파일의 이름(해시테이블.txt그리고해시파일.txt내 예에서는) 무엇이든 지정할 수 있습니다. 손상된 파일을 식별할 수 있도록 두 개의 파일이 생성됩니다(첫 번째 파일에는 파일 이름도 포함되고 두 번째 파일은 비교에 사용됩니다).
sort
알파벳순 정렬을 구현하는 sh
것과 약간 다르기 때문입니다 . 그것을 보상하십시오.bash
sort