두 개의 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.