Я пытаюсь получить права собственности и разрешения для всех файлов в 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 для увеличения детализации и получения вывода, в котором отличаются только флаги исполнения; при действии он исправит это без флагов детализации.