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)
저는 다음 두 가지 상황을 처리하는 동안 어려움을 겪고 있습니다.
- dir1 또는 dir2에 파일이 없으면 처리해야 합니다. dir1의 파일은 올바른 파일이고 dir2의 파일은 권한/소유권이 엉망이라고 생각하세요. dir1과 dir2에 이름은 같지만 소유권/권한이 다른 파일을 비교하고 싶습니다.
답변1
차이점을 확인하기 위한 시험 실행
이 명령줄은 rsync
비슷한 디렉터리 트리에서 작동합니다.
rsync -Havvn --existing source/ target | grep -v uptodate$'
행동
n
조치를 취하려면 옵션을 제거하세요 .
귀하의 경우 기본 디렉터리와 일치하도록 명령줄을 조정해야 합니다(Ssh를 통한 원격 경로 사용 가능). 자세한 내용을 늘리고 실행 가능한 플래그만 다른 출력을 얻기 위한 두 개의 v가 있습니다. 조치를 취하면 자세한 플래그 없이 문제가 해결됩니다.