Bash의 2개 디렉터리에 있는 모든 파일의 소유권과 권한을 비교하세요.

Bash의 2개 디렉터리에 있는 모든 파일의 소유권과 권한을 비교하세요.

2 디렉터리에 있는 모든 파일의 파일 소유권과 권한을 가져와 비교하려고 합니다. 이름은 같지만 파일 소유권이나 권한이 다른 파일을 신고합니다. 첫 번째 디렉터리에 있는 모든 파일의 파일 소유권과 권한을 file1.txt로, 두 번째 디렉터리를 file2.txt로 가져왔습니다.

내 스크립트 진행 상황:

[root@test]# cat file1.txt
644 root root /home/user2/sample-test/abc
644 root root /home/user2/sample-test/bcd
644 root root /home/user2/sample-test/efg
644 root root /home/user2/sample-test/mama
644 root root /home/user2/sample-test/ngins2
644 root root /home/user2/sample-test/nils45
644 root root /home/user2/sample-test/sample2
644 root root /home/user2/sample-test/t1
644 root root /home/user2/sample-test/t2
644 root root /home/user2/sample-test/test1
755 root root /home/user2/sample-test
644 root root /home/user2/sample-test1/abc
644 root root /home/user2/sample-test1/ppp
644 root root /home/user2/sample-test1/werwre
755 root root /home/user2/sample-test1
644 root root /home/user2/testing123

[root@test]# cat file2.txt
644 root root /home/user2/sample-test/ip
644 root root /home/user2/sample-test/new-file
644 root root /home/user2/sample-test/ngins2
644 root root /home/user2/sample-test/nils45
644 root root /home/user2/sample-test/sample2
755 root root /home/user2/sample-test
755 root root /home/user2/sample-test/test1.sh
644 apache apache /home/user2/sample-test1/ppp
644 apache fes /home/user2/sample-test1/abc
644 root root /home/user2/sample-test1/perms.saved
644 root root /home/user2/sample-test1/test
644 root root /home/user2/sample-test1/test1
644 root root /home/user2/sample-test1/werwre
755 root root /home/user2/sample-test1
755 root root /home/user2/sample-test1/1.sh
644 root root /home/user2/testing123


find /path/to/dir1 -depth -exec stat --format '%a %U %G %n' {} + | sort -n" >> file1.txt
find /path/to/dir2 -depth -exec stat --format '%a %U %G %n' {} + | sort -n" >> file2.txt

t1=`cat file1.txt`
t5=`cat file2.txt`

#find lines only in file1
only1=$(comm -23 "$t1"_sorted "$t5"_sorted)

#find lines only in file2
only2=$(comm -13 "$t1"_sorted "$t5"_sorted)

저는 다음 두 가지 상황을 처리하는 동안 어려움을 겪고 있습니다.

  1. dir1 또는 dir2에 파일이 없으면 처리해야 합니다. dir1의 파일은 올바른 파일이고 dir2의 파일은 권한/소유권이 엉망이라고 생각하세요. dir1과 dir2에 이름은 같지만 소유권/권한이 다른 파일을 비교하고 싶습니다.

답변1

차이점을 확인하기 위한 시험 실행

이 명령줄은 rsync비슷한 디렉터리 트리에서 작동합니다.

rsync -Havvn --existing source/ target | grep -v uptodate$'

행동

n조치를 취하려면 옵션을 제거하세요 .


귀하의 경우 기본 디렉터리와 일치하도록 명령줄을 조정해야 합니다(Ssh를 통한 원격 경로 사용 가능). 자세한 내용을 늘리고 실행 가능한 플래그만 다른 출력을 얻기 위한 두 개의 v가 있습니다. 조치를 취하면 자세한 플래그 없이 문제가 해결됩니다.

관련 정보