Bashの2つのディレクトリにあるすべてのファイルの所有権と権限を比較します。

Bashの2つのディレクトリにあるすべてのファイルの所有権と権限を比較します。

2つのディレクトリにあるすべてのファイルのファイル所有権と権限を取得して比較しようとしています。名前は同じですが、ファイルの所有権や権限が異なるファイルを報告します。最初のディレクトリのすべてのファイルのファイル所有権と権限をfile1.txtに抽出し、2番目のディレクトリのすべてのファイルを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)

私は次の2つの状況に対処するのに苦労しています。

  1. dir1またはdir2のファイルが見つからない場合は、それを処理する必要があります。 dir1のファイルは正しいファイルですが、dir2のファイルには混乱する権限/所有権があります。 dir1とdir2のファイルを名前は同じですが、所有権/権限が異なるファイルだけを比較したいと思います。

ベストアンサー1

違いを確認するためのテストの実行

このコマンドラインは、rsync次のディレクトリツリーで機能します。

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

行動

nインポート操作のオプションを削除します。


あなたの場合は、ホームディレクトリと一致するようにコマンドラインを調整する必要があります(おそらくsshを介したリモートパスを使用する)。 2つのvを使用すると、詳細を増やすことができ、実行可能フラグのみが異なる出力を取得できます。操作が実行されると、詳細なフラグなしで問題が解決されます。

おすすめ記事