md5sum
일부 복사된 파일의 유효성을 검사하는 데 약간의 어려움이 있습니다 .
두 개의 디렉토리 가 있습니다: dir1
및 dir2
. 그 안에는 , 및 dir1
5개의 파일이 있습니다 .file1
file2
file3
file4
file5
dir2
만약 내가한다면: cp dir1/* dir2
,
그 다음에: md5sum dir1/* > checksums
,
그 다음에: md5sum -c checksums
,
결과 :
dir1/file1: OK
dir1/file2: OK
dir1/file3: OK
dir1/file4: OK
dir1/file5: OK
그러나 그것은 좋지 않습니다. 텍스트 파일의 체크섬을 dir2에 복사된 파일의 체크섬과 비교하고 싶습니다.
답변1
노력하다:
$ (cd dir1 && md5sum *) > checksums
$ cd dir2
$ md5sum -c ../checksums
checksums
내용은 다음과 같습니다.
d41d8cd98f00b204e9800998ecf8427e file1
................................ file2
................................ file3
................................ file4
................................ file5
답변2
이것을 시도해 볼 수 있습니다
#Create your md5 file based on a path - recursively
pathtocheck=INSERTYOURPATHHERE
find $pathtocheck -type f -print0 | xargs -0 md5sum >> xdirfiles.md5
#Compare All Files
md5results=$(md5sum -c xdirfiles.md5)
#Find files failing Integrity Check
echo "$md5results" | grep -v OK
#Count the files good or bad.
lines=0
goodfiles=0
badfiles=0
while read -r line;
do
lines=$(($lines + 1))
if [[ $line == *"OK"* ]]; then
goodfiles=$(($goodfiles + 1))
else
badfiles=$(($badfiles + 1))
fi
done <<< "$md5results"
echo "Total Files:$lines Good:$goodfiles - Bad: $badfiles"
그것은 당신 자신의 게임입니다... dir2를 확인하는 방법에 대한 질문에 대한 직접적인 대답입니다... sed를 사용하는 모든 파일 앞에 /dir2/를 강제로 적용하면 됩니다. 검사 파일의 절대 경로를 제공합니다.
sed -I "s/ / \/dir2\//g" xdirfiles.md5
[root@server testdir]# md5sum somefile
d41d8cd98f00b204e9800998ecf8427e somefile
[root@server testdir]# md5sum somefile > somefile.md5
[root@server testdir]# sed -i "s/ / \/dir2\//g" somefile.md5
d41d8cd98f00b204e9800998ecf8427e /dir2/somefile
사용된 sed 명령 분석
sed -i <- Inline replacement.
s/ <- Means to substitute. (s/thingtoreplace/replacewiththis/1)
" " <- represented a double space search.
/ <- to begin the Replacement String values
" \/dir2\/" <- Double Spaces and \ for escape characters to use /. The
final /g means global replacement or ALL occurrences.
/g <- Means to replace globally - All findings in the file. In this case, the md5 checksum file seperates the hashes with filenames using a doublespace. If you used /# as a number you would only replace the number of occurrences specified.
답변3
가장 기본적인 작업 형태는 다음을 실행하여 체크섬 파일의 복사본을 생성하는 것입니다.
md5sum Dir1/*
복사 완료의 효율성을 테스트하려는 디렉터리로 변경합니다. (백업이나 유사한 작업을 하면서 동시에 다른 파일을 복사하는 경우에는 별도로 할 필요가 없습니다.)
cp checksum Dir2/checksum
cd Dir2
두 번째 디렉터리로 변경하면 명령이 더 간단해지며, 누락된 파일을 처리해야 하는 경우 터미널에서 작동하는 파일(및 해당 명령 기록)에 대한 올바른 경로를 확보하는 데 도움이 됩니다. 그렇지 않은 경우에는 복사하여 붙여넣으세요. 나중에 명령줄에 입력하세요.
md5sum -c checksum
사본의 완전성을 제공하십시오.