unix - para - principales comandos de linux
Compare el contenido de dos directorios en un servidor remoto usando Unix (3)
En el caso de que no haya conectividad entre dos servidores, use el comando "árbol" para obtener la estructura de directorios en los archivos y luego difiera dos archivos.
Soy nuevo en Unix y necesito un poco de ayuda aquí. Tengo dos directorios presentes en dos servidores diferentes. Ambos directorios contienen los mismos archivos. Ahora quiero comprobar si todos los archivos están sincronizados en ambos directorios. Si los archivos no están sincronizados, quiero mostrar solo el nombre de esos archivos. Puedo hacerlo cuando los directorios están en el mismo servidor. no es capaz de descubrir cómo hacer esto cuando los directorios están presentes en dos servidores diferentes.
eg:
server1 /abc/home/sample1/
server2 /abc/home/sample2/
Aquí quiero que solo se muestre el nombre de los archivos cuando no está sincronizado.
Gracias por adelantado
En server1:
cd /abc/home/sample1/ && diff --side-by-side --suppress-common-lines <(find . -type f|xargs stat --printf "%s/t%n/n"|sort -n) <(ssh server2 "cd /abc/home/sample2/ && find . -type f|xargs stat --printf /"%s/t%n/n/"|sort -n")
Esto es bastante rápido, pero probablemente no sea tan preciso como rsync, ya que utiliza el tamaño del archivo en lugar del hash de contenido. Además, el rsync de la respuesta de kielni no mostrará nada si server2 tiene más archivos que server1. En su lugar, intente esto:
rsync -n -avr --size-only --delete /abc/home/sample1/ server2:/abc/home/sample2/
Puede usar rsync con el indicador -n
para averiguar si los archivos están sincronizados, sin hacer una sincronización.
Por ejemplo, desde server1 :
rsync -n -avrc /abc/home/sample1/* server2:/abc/home/sample2/
Esto imprimirá los nombres de todos los archivos (recursivos, con la server1:/abc/home/sample1/
-r
) que difieren entre server1:/abc/home/sample1/
y server2:/abc/home/sample2/
rsync
utiliza explicacion de parametros
-n, --dry-run
- realiza una ejecución de prueba sin cambios realizados
-a, --archive
- modo de archivo; es igual a -rlptgoD (no -H, -A, -X)
-v, --verbose
- aumenta la verbosidad
-r, --recursive
--r, --recursive
en directorios
-c, --checksum
- omitir en función de la suma de comprobación, no de mod-time y tamaño