CentOS 5.x
Mq 질문은 이것 과 비슷해 보였지만 확실하지 않습니다 …
동일한 내용을 가져야하는 디렉토리와 하위 디렉토리가있는 두 개의 서버 (서로 완전히 분리되어 있음)가 있습니다.
예를 들어 디렉토리 레이아웃은 다음과 같습니다.
서버 A-
/opt/foo/foob/1092380298309128301283/123.txt
/opt/foo/foob/5094380298309128301283/456.txt
/opt/foo/foob/5092380298309128301283/789.txt
/opt/foo/foob/1592380298309128301283/abc.txt
서버 B-
/opt/foo/foob/1092380298309128301283/123.txt
/opt/foo/foob/5094380298309128301283/456.txt
/opt/foo/foob/5092380298309128301283/789.txt
/opt/foo/foob/1592380298309128301283/abc.txt
이상적으로는 재귀 검사를 수행하고 모든 것이 일치하는지 확인하는 방법을 원합니다.
또한 타사 도구 사용을 피하고 싶습니다.
어떤 아이디어?
답변
한 가지 좋은 방법은 트리의 모든 파일에서 md5sum을 사용하는 것입니다.
server1에서 이것을 실행하십시오.
find /opt/foo/foob/ -type f -print0 | xargs -0 md5sum > report_from_server1.tx
server2에서 이것을 실행하십시오.
find /opt/foo/foob/ -type f -print0 | xargs -0 md5sum > report_from_server2.tx
그런 다음 두 파일 (diff 사용) 또는 원하는 것을 비교하십시오.
당신이 찾고있는 라인을 따라 있습니까?
물론 SSH를 사용하여 원하는 경우 명령을 원격으로 실행할 수 있습니다.
답변
당신이 반드시 신경 쓰지 않으면 어떤 일이 변경되었습니다 그냥, 변경, rsync를 아직도 정말 좋다. 이 명령이 ‘servera’에서 실행된다고 가정하면이 명령을 실행하고 출력을 확인하십시오.
rsync -avcn /opt/foo/ serverb:/opt/foo
결과 목록은 실제로 동기화 프로세스를 실행 한 경우 수정 된 파일입니다. 타임 스탬프 만 변경된 경우에도 파일은 목록에 표시되지만 내용은 동일하게 유지됩니다. -n
플래그 를 추가 했으므로 실제로는 아무런 작업도 수행되지 않으며보고 만됩니다.
답변
디렉토리에있는 개별 파일에 대한 개별 MD5 해시를 계산하는 빠른 스크립트를 함께 해킹 할 수 있지만 디렉토리에있는 md5deep
모든 파일의 해시를 재귀 적으로 계산 한 다음 출력 하는 도구를 사용하는 것이 더 좋습니다. 파일로. 그런 다음 다른 디렉토리에서 첫 번째 해시 파일을 입력으로 사용하고 두 디렉토리간에 다른 파일 목록을 제공 할 수 있습니다.
따라서 예를 들어, 다음 프로세스를 따르십시오.
-
서버 A에서 필요한 디렉토리의 해시를 계산하십시오.
md5deep -r /opt/foo/ > file_hashes.txt
-
file_hashes.txt
비교를 위해 파일 파일을 서버 B에 복사하십시오 . -
서버 B에서 필요한 디렉토리의 해시를 계산하지만
-x
플래그를 사용하여 다른 파일 만 표시 하여 서버 A의 파일 해시를 입력 파일로 가져옵니다 .md5deep -x file_hashes.txt -r /opt/foo/
md5deep 툴 세트는 대부분의 배포판의 패키지 관리 시스템의 일부를 구성하며 MD5뿐만 아니라 다양한 해싱 알고리즘을 지원한다는 점이 가장 좋습니다. 따라서 충돌에 대한 편집증이라면 여러 가지 대안을 사용할 수 있습니다. 다음 도구는 md5deep의 일부를 구성하며 각 도구는 대체 해싱 알고리즘을 제공합니다.
md5deep - Compute and compare MD5 message digests
sha1deep - Compute and compare SHA-1 message digests
sha256deep - Compute and compare SHA-256 message digests
tigerdeep - Compute and compare Tiger message digests
whirlpooldeep - Compute and compare Whirlpool message digests
답변
나는 @ scott-pack과 비슷한 기술을 사용했다. 이것은 양방향 diffing을 줄 것이다. “삭제”로 시작하는 모든 것은 원격 서버에 있지만 로컬 서버에는없는 파일입니다. 파일 내용없이 나열된 모든 디렉토리는 변경되지 않은 디렉토리입니다. 나열된 모든 파일은 원격 서버에 없거나 로컬 버전이 “최신”인 파일입니다.
rsync -rvnac --delete /local/directory/ user@remote:/remote/directory/