ver principales para letras entrar directorio crucigrama crear contenido comparar como comandos comando basicos archivos archivo unix diff ksh rsync vimdiff

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