比較 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 可以增加詳細程度並獲得僅可執行標誌不同的輸出;當採取行動時,它會修復它而沒有詳細標誌。

相關內容