압축된 zfs와 ext4의 두 폴더가 모두 동일한지 확인하세요.

압축된 zfs와 ext4의 두 폴더가 모두 동일한지 확인하세요.

일반화하다

rsync --archive파일 시스템에서 폴더를 복사() 했습니다 . 이제 소스 폴더를 안전하게 삭제할 ext4수 있도록 두 폴더가 동일한지 확인하려고 합니다.zfscompression on

다시 실행하면 rsync추가 바이트가 전송되지 않습니다. 따라서 rsync는 두 폴더가 동일한지 확인합니다.

그러나 , 또는를 사용하면 dudu -b폴더 md5sum에 대해 다른 결과가 생성됩니다.

원본 폴더를 삭제하기 전에 두 폴더가 동일하다는 것을 어떻게 확신할 수 있습니까?

하나 올렸어요테스트 폴더8834개의 파일이 포함되어 있습니다.

fiedl@ext4 ▶ du 883
20  883
fiedl@zfs ▶ du 883
57  883

fiedl@ext4 ▶ du -s 883
20  883
fiedl@zfs ▶ du -s 883
57  883

fiedl@ext4 ▶ du -sb 883
4660    883
fiedl@zfs ▶ du -sb 883
570 883

fiedl@ext4 ▶ du 883/*
4   883/big_image001.gif
4   883/image001.gif
4   883/medium_image001.gif
4   883/thumb.png
fiedl@zfs ▶ du 883/*
10  883/big_image001.gif
10  883/image001.gif
10  883/medium_image001.gif
10  883/thumb.png

fiedl@ext4 ▶ tar -cf - 883 | md5sum
7c8a4ff31fdf594b04173789b23c7bb8  -
fiedl@zfs ▶ tar -cf - 883 | md5sum
f207dbadd75126665af300705774c97f  -

답변1

md5sum그리고diff

관찰된 차이점이 서로 다른 메타데이터와 zfs 압축의 결과라고 가정하면, md5sum각 파일에 대한 개별적인 차이는여전히 똑같아야 해.

cd /path/to/ext4 && find . | xargs md5sum | sort > ~/md5sum-index-ext4
cd /path/to/zfs  && find . | xargs md5sum | sort > ~/md5sum-index-zfs
diff ~/md5sum-index-ext4 ~/md5sum-index-zfs

이 해결 방법은 재귀를 사용하여 디렉터리의 모든 파일을 나열 find하고 md5sum각 파일에 대한 sort결과를 추가합니다. find내용이 다른 순서로 반환될 수 있기 때문입니다. 그런 다음 두 폴더의 결과를 비교할 수 있습니다. 동일하면 비어 있습니다 diff. 그렇지 않으면 다른 바이너리 내용을 가진 파일이 diff.

diff -r

난 그냥 더 작은 폴더를 사용할 수 있습니다 diff -r. 그러나 대용량 폴더의 경우 메모리 부족으로 인해 충돌이 발생했습니다.

diff -r /path/to/ext4 /path/to/zfs

두 폴더가 모두 동일하면 diff비어 있습니다 .

관련 정보