24 votos

Cómo comparar las diferencias entre los directorios (linux)

Tengo dos directorios, uno de copia de seguridad anterior y la segunda a partir de copia de seguridad más reciente. ¿Cómo puedo comparar lo que se realizaron cambios a los archivos en el directorio de la más reciente copia de seguridad en Linux? También, ¿cómo puedo mostrar los cambios en, por ejemplo, texto y archivos php - estoy pensando en algo así como la revisión de la historia en la wikipedia donde se ve la versión antigua en uno de los lados de la pantalla y la versión más reciente sobre otros y los cambios se resaltarán. ¿Cómo puedo lograr algo como eso?

editar: ¿Cómo puedo comparar remoto de directorios locales?

35voto

Toon Krijthe Puntos 36327

El diff hombre de la página:

Si tanto archivo y de archivo son directorios, diff compara los archivos correspondientes en ambos directorios, en orden alfabético; esta comparación no es recursiva a menos que el r-o --recursive opción. diff nunca se compara el contenido de un directorio como si fuera un archivo. El archivo que está totalmente especificado no puede ser la entrada estándar, puesto que la entrada estándar es el nombre y la noción de "archivo con el mismo nombre" no se aplica.

Así que para comparar directorios: diff --brief -r dir1 dir2

Para comparar los archivos lado a lado: diff --side-by-side file1 file2

3voto

ErichBSchulz Puntos 121

Usted realmente desea combinar el poder de la rsync para reducir el consumo de ancho de banda con el poder de la diff para darle flexible, bueno, um".

Así que algo como esto:

cp -R $local $bak
rsync $server:$remdir/* $local/
rsync $local/ $server:$remdir/* 
diff -wur $local $bak

Yo creo que se podría ajustar un poco si usted estuviera haciendo utilizan a menudo rsync en lugar de cp en la primera línea, obviamente, en la última línea usted tiene todo el poder de diff a formato como más te guste. Probablemente con y en el caso OPs

La desventaja de este enfoque es que terminan usando dos veces como mucho espacio local, pero en menos de $1/concierto a quién le importa?

3voto

user69366 Puntos 11

Suponiendo que:

  • estamos en www1, en comparación con los remotos www2
  • hay autenticación de Clave pública de locales www1 remotos www2
  • se compara con el mismo usuario en local www1 y remotos www2
find /var/www/html/ -name "*" -exec-md5-b {} \; | grep-v "/var/www/html/exclude_this dir" > local.md5
ssh www2 "find /var/www/html/ -name '*' -exec-md5-b {} \; | grep-v /var/www/html/exclude_this dir > mando a distancia.md5"
scp www2:mando a distancia.md5 .
diff local.md5 remoto.md5 

1voto

mehul Puntos 11

Hacer diff old_dir new_dir > diff.txt de lado a lado las diferencias en el mismo servidor.

Para el control remoto de archivos:

Por ejemplo : ABC es servidor existente y XYZ es el servidor remoto y el nombre del directorio es de 123.

Paso 1: cambiar el nombre de directorio existente 123 en ABC Servidor como 123_ABC.

ABC:/Home > mv 123 123_ABC

Paso 2: Crear un nuevo directorio en el servidor de ABC:

ABC: > mkdir 123_XYZ

Paso 3: Copie todos los archivos desde el directorio 123 en XYZ servidor 123_XYZ directorio en el ABC del servidor:

XYZ/123 > scp * userid@ABC: /123_XYZ

Esto copiará todos los archivos desde el directorio en su XYZ servidor a su ABC servidor/ 123_XYZ directorio.

Paso:4 : Hacer la diferencia entre ambos directorios:

Ahora ir a ABC de servidor y realizar diff entre 123_ABC y 123_XYZ

ABC > diff 123_ABC 123_XYZ > diff.txt

El comando de arriba va a guardar el diff de los resultados en diff.txt en el mismo camino.

Usted puede comparar las diferencias a continuación.

Gracias,

Mehul

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: