두 개의 Redhat Linux 서버를 어떻게 구별 할 수 있습니까?


15

알려진 차이점을 제외하고 동일한 설정을 가져야하는 두 개의 서버가 있습니다.

실행하여 :

find / \( -path /proc -o -path /sys -o -path /dev \) -prune -o -print | sort > allfiles.txt

한 서버에서 모든 파일 목록을 찾아 다른 서버의 파일 목록과 비교할 수 있습니다. 이것은 서버에있는 파일 이름의 차이점을 보여줍니다.

내가 정말로하고 싶은 것은 두 서버의 모든 파일에서 체크섬을 실행하고 내용이 다른 곳을 찾기 위해 비교하는 것입니다. 예 :

find / \( -path /proc -o -path /sys -o -path /dev \) -prune -o -print | xargs /usr/bin/sha1sum

이것이 합리적인 방법입니까? rysnc는 이미 대부분의 기능을 가지고 있지만 차이점 목록을 제공하는 데 사용할 수 있다고 생각했습니다.


2
다음 번에 당신이 사용해야하는 -print0대신에 -print하고 xargs -0대신 xargs. "홀수"파일 이름으로 인한 문제를 피할 수 있습니다.
Cristian Ciupitu

답변:


22

당신이 맞습니다, rsync는 이것에 완벽합니다. --itemize-changes(일명 -i)를 사용하십시오 . 이것을 양쪽 (또는 머신에 대한 모든 액세스 권한을 가진 다른 사용자)에서 루트로 실행할 수 있는지 확인하십시오.

rsync -ani --delete / root@remotehost:/
  • -a 아카이브 용이며 기본적으로 rsync가 정확한 복제본을 만듭니다 (링크가있는 경우는 제외)
  • -n 드라이 런용이며 실제로 아무것도 변경되지 않음을 의미합니다 (이것은 중요합니다! :))
  • -i 항목 별 변경을위한 것으로, 업데이트해야하는 모든 파일을 보여주는 이해하기 쉬운 형식을 출력합니다 (구문은 해당 트리거에 대한 자세한 도움말 아래 매뉴얼 페이지에 자세히 설명되어 있음).
  • --delete 대상에 존재하지만 소스에는 존재하지 않는 rsync 파일을 삭제합니다.

특정 경로를 제외하려면 같은 명령을 사용하십시오 --exclude /var. 제외 패턴은 소스 디렉토리를 기준으로합니다 (이 경우 /이므로 사실상 절대적 임).


당신은 / var을 제외하면 크론 탭이 저장되는 위치, 당신은 또한 아마 어떤 제외됩니다 DO 점검 할 필요가 있습니다. 그러나 / var / log 및 / var / cache와 같은 것을 제외하고 싶습니다
Sean Reifschneider

7

rsync의 -c 플래그를 조사 할 수 있습니다. 보낸 사람 man rsync:

    -c, --checksum              skip based on checksum, not mod-time & size

Alex Jurkiewicz의 답변에 의견을 남기고 싶지만 충분한 담당자가 없습니다 : '(아직 ...


1
이 플래그가 유용한 일부 시나리오가 있습니다. 내가 본 가장 일반적인 것은 데이터가 일정한 크기 인 일종의 '이상한'(보통 이진) 형식으로 저장된 경우입니다. 파일이 동기화의 양쪽에서 자동화 된 프로세스에 의해 정확하게 동시에 업데이트되면 (로그 회전 등) rsync는 크기 / m- 시간으로 동기화 할 때 파일을 놓칠 수 있습니다. 확실히 가능하지만 오히려 드물다.
Alex J

나는 파일 의 내용 을 체크섬하여 모드 시간 등에주의를 기울이지 않고 비교할 수 있지만 Alex가 옳은 것처럼 보입니다 ... 모든 메타를 무시하는 좋은 방법이 있습니까? git가하는 방식대로 내용에만주의를 기울여야합니까?
iconoclast

4

고려해야 할 유용한 도구 중 하나는 "rpm -Va"입니다. 패키지 된 파일과 다른 모든 패키지 파일 의 목록이 인쇄 됩니다. 패키지화되지 않은 파일은 무시하지만 설치 후 변경된 파일 (기본 시스템의 일부)에 대한 아이디어를 얻는 가장 좋은 방법입니다. 또한 구성 파일로 간주되는지 알려주는 플래그도 포함되어 있습니다.

예를 들면 다음과 같습니다.

S.5....T  c /root/.bashrc
S.5....T  c /etc/yum/yum-updatesd.conf
.M......    /usr/bin/rdate
..5....T  c /etc/dbbackup.conf
S.5....T  c /etc/webalizer.conf
SM5....T  c /etc/sysconfig/iptables-config

따라서 ".bashrc"및 "yum-updatesd.conf"는 크기, 시간 및 MD5 체크섬이 변경된 "구성"파일입니다. "날짜"에 모드가 변경되었습니다 ...

RPM 데이터베이스는 매우 유용한 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.