Estoy intentando obtener la propiedad de los archivos y los permisos de todos los archivos en 2 directorios y compararlos. Informe de archivo con el mismo nombre pero propiedad o permiso de archivo diferente. Obtuve la propiedad de los archivos y el permiso de todos los archivos en el primer directorio para file1.txt y el segundo directorio para file2.txt.
El progreso de mi guión:
[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)
Me enfrento a desafíos al manejar estas 2 situaciones:
- Si falta un archivo en dir1 o dir2, se debe gestionar. Considere que los archivos en dir1 son archivos correctos y que los archivos en dir2 tienen permisos/propiedades en mal estado. Solo quiero comparar archivos que tienen el mismo nombre en dir1 y dir2 pero con diferente propiedad/permiso.
Respuesta1
Ejecución en seco para identificar diferencias
Esta línea de comando rsync
me funciona con árboles de directorios similares,
rsync -Havvn --existing source/ target | grep -v uptodate$'
Acción
Elimine la opción n
para obtener acción.
Debe modificar la línea de comando para que coincida con los directorios principales en su caso (posiblemente con una ruta remota a través de ssh). Hay dos v para aumentar la verbosidad y obtener resultados donde solo difieren los indicadores ejecutables; cuando actúe, lo solucionará sin indicadores de detalle.