[server] 디렉토리 간의 차이점을 비교하는 방법 (Linux)

두 개의 디렉토리가 있습니다-하나는 이전 백업과 다른 하나는 최신 백업입니다. Linux의 최신 백업에서 디렉토리의 파일 변경 내용을 어떻게 비교합니까? 또한 텍스트 및 PHP 파일과 같은 변경 사항을 표시하는 방법-화면의 한쪽에 이전 버전이 있고 다른쪽에 최신 버전이 있고 변경 사항이 강조 표시되는 Wikipedia의 개정 내역과 같은 것을 생각하고 있습니다. 그런 걸 어떻게 달성합니까?

편집 : 원격 디렉토리와 로컬 디렉토리를 어떻게 비교 합니까?



답변

diff 맨 페이지에서 :

From 파일과 To 파일이 모두 디렉토리 인 경우 diff는 두 디렉토리의 해당 파일을 알파벳순으로 비교합니다. -r 또는 –recursive 옵션을 지정하지 않으면이 비교는 재귀되지 않습니다. diff는 디렉토리의 실제 내용을 파일처럼 비교하지 않습니다. 표준 입력은 이름이없고“같은 이름의 파일 ”이라는 개념이 적용되지 않으므로 완전히 지정된 파일은 표준 입력이 아닐 수 있습니다.

따라서 디렉토리를 비교하려면 다음을 수행하십시오. diff --brief -r dir1 dir2

파일을 나란히 비교하려면 : diff --side-by-side file1 file2


답변

가정 :

  • 우리는 www1원격과 비교www2
  • 로컬 www1에서 원격으로 공개 키 인증이 있습니다www2
  • 로컬 www1및 원격 에서 동일한 사용자로 비교합니다www2
/ var / www / html / -name "*"찾기 -exec md5sum -b {} \; | grep -v "/ var / www / html / exclude_this dir"> local.md5
ssh www2 "find / var / www / html / -name '*'-exec md5sum -b {} \; | grep -v / var / www / html / exclude_this dir> remote.md5"
scp www2 : remote.md5.
diff local.md5 remote.md5


답변

실제로 rsync대역폭 소비를 줄이기위한 기능과 diff유연성있는 음의 차이를 제공 하는 기능을 결합하고 싶습니다 .

그래서 이런 식으로 :

cp -R $local $bak
rsync $server:$remdir/* $local/
rsync $local/ $server:$remdir/*
diff -wur $local $bak

첫 번째 줄 rsync대신에 자주 사용하는 경우이 비트를 조정할 수 있다고 생각합니다 cp. 마지막 줄에서는 원하는 diff대로 형식을 지정할 수 있습니다. 아마도 OP의 경우 y로

이 방법의 단점은 로컬 공간의 두 배를 사용하지만 누가 $ 1 / 미만으로 걱정 하는가?


답변

수행 diff old_dir new_dir > diff.txt동일한 서버 측 차이로 팀의.

원격 파일의 경우 :

예를 들어 : ABC는 기존 서버이고 XYZ는 원격 서버이며 디렉토리 이름은 123입니다.

1 단계 : ABC 서버에서 기존 디렉토리 123의 이름을 123_ABC로 바꿉니다.

ABC:/Home > mv 123 123_ABC

2 단계 : 서버 ABC에서 새 디렉토리를 작성하십시오.

ABC: > mkdir 123_XYZ

3 단계 : XYZ 서버의 디렉토리 123에서 ABC 서버의 123_XYZ 디렉토리로 모든 파일을 복사하십시오.

XYZ/123 > scp * userid@ABC: /123_XYZ

그러면 XYZ 서버의 디렉토리에서 ABC 서버 / 123_XYZ 디렉토리로 모든 파일이 복사됩니다.

Step : 4 : 두 디렉토리 사이에 차이점을 수행하십시오.

이제 ABC 서버로 가서 123_ABC와 123_XYZ 사이에서 diff를 수행하십시오.

ABC > diff 123_ABC 123_XYZ > diff.txt

위의 명령은 diff 결과를 같은 경로의 diff.txt에 저장합니다.

그러면 차이점을 비교할 수 있습니다.

고맙습니다,

메훌


답변

AIDE AIDE ( Advanced Intrusion Detection Environment)는 UNIX 운영 체제의 파일 무결성 검사기입니다. 지원되는 파일 시스템에서 데이터의 무결성에 대한보고를 제공하는 것이 목적입니다. 대상 호스트에서 AIDE를 여러 번 실행하여 변경중인 파일을 확인할 수 있습니다. 다른 호스트에서 AIDE를 여러 번 실행하면 어떤 파일과 권한이 다른지 결정할 수 있습니다. 그런 다음보고 된 “다른”파일에서 gui diff 도구를 사용하십시오.

또는 meld, guiffy, kdiff3, diff, vimdiff, gvimdiff, Emacs, Kompare, Diffuse, Easydiff, TkDiff 또는 xxdiff와 같은 gui diff 도구를 사용하십시오. 대부분 파일 diff 외에도 디렉토리 diff를 수행합니다. 다른 사람들이 언급했듯이 NFS, SMBFS 또는 SSHFS를 사용하여 원격 드라이브를 마운트해야합니다.


답변

또는 파일 목록에서 두 개의 파일을 사용할 수 있습니다. 그런 다음 두 파일을 비교하십시오. 예를 들면 다음과 같습니다.

/path/to/compare/remote$: ls > remote-files

/path/to/compare/local$: ls > local-files

파일 중 하나를 다운로드하십시오.

-rw-r--r-- 1 1015 1015 26624 2005-06-14 13:10 FILE.TXT

FILE.TXT로

diff ( diff -y remote-files local-files > diff-files)를 사용하여 나란히 비교 하십시오 . diff 파일을 열고 확인하십시오. >가있는 각 줄은 다른 파일을 의미합니다.


답변