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를 사용하면 자세한 내용을 늘릴 수 있으며 실행 가능한 플래그만 다른 출력을 얻을 수 있습니다. 작업이 수행되면 자세한 플래그 없이 문제가 해결됩니다.