Estou tentando buscar a propriedade e as permissões de todos os arquivos em 2 diretórios e compará-los. Arquivo de relatório com o mesmo nome, mas com propriedade ou permissão de arquivo diferente. Busquei a propriedade e a permissão de todos os arquivos no primeiro diretório para arquivo1.txt e no segundo diretório para arquivo2.txt
Progresso do meu script:
[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)
Estou enfrentando desafios ao lidar com estas 2 situações:
- Se o arquivo estiver faltando em dir1 ou dir2 deve ser tratado. Considere que os arquivos no dir1 são arquivos corretos e os arquivos no dir2 estão com permissões/propriedades confusas. Eu só quero comparar arquivos que tenham o mesmo nome em dir1 e dir2, mas com propriedade/permissão diferentes.
Responder1
Teste para identificar diferenças
Esta linha de comando rsync
funciona para mim com árvores de diretórios semelhantes,
rsync -Havvn --existing source/ target | grep -v uptodate$'
Ação
Remova a opção n
de entrar em ação.
Você deve ajustar a linha de comando para corresponder aos diretórios principais do seu caso (possivelmente com caminho remoto via ssh). Existem dois v's para aumentar o detalhamento e obter resultados onde apenas os sinalizadores executáveis diferem; quando a ação for corrigida sem sinalizadores de verbosidade.