manjaro - ¿Cómo puedo verificar que las dos carpetas sean iguales en Linux?
linux versiones (10)
Moví un sitio web de un servidor a otro y copié los archivos usando SCP
Ahora deseo verificar que todos los archivos se hayan copiado correctamente.
¿Cómo comparo los sitios?
¿Contar archivos para una carpeta?
Obtenga el tamaño total de los archivos para el árbol de carpetas?
o hay una mejor manera de comparar los sitios?
Pablo
He estado moviendo un sitio web de un servidor a otro copié los archivos usando SCP
Puedes hacer esto con rsync, es genial si solo quieres reflejar algo.
/ Johan
Actualización: Parece que @rjack me ganó con la respuesta rsync con 6 segundos :-)
Haga sumas de verificación para todos los archivos, por ejemplo, usando md5sum . Si todos son iguales para todos los archivos y no falta ningún archivo, todo está bien.
Pruebe a diferir su directorio recursivamente. Obtendrá un buen resumen si algo es diferente en uno de los directorios.
Si estuvieras usando scp, probablemente podrías haber usado rsync .
rsync no transferirá archivos que ya estén actualizados, por lo que puede usarlo para verificar que una copia sea actual simplemente ejecutando rsync nuevamente.
Si estabas haciendo algo como esto en el viejo host:
scp -r from/my/dir newhost:/to/new/dir
Entonces podrías hacer algo como
rsync -a --progress from/my/dir newhost:/to/new/dir
La ''-a'' es la abreviatura de ''archivo'' que hace una copia recursiva y conserva los permisos, las propiedades, etc. Consulte la página de manual para obtener más información, ya que puede hacer muchas cosas inteligentes.
Si usó scp, probablemente también pueda usar rsync en ssh.
rsync -avH --delete-after 1.example.com:/path/to/your/dir 2.example.com:/path/to/your/
rsync hace las sumas de comprobación por ti.
Asegúrese de usar la opción -n para ejecutar en seco. Verifique la página del manual.
Prefiero rsync sobre scp o incluso cp local, cada vez que puedo usarlo.
Si rsync no es una opción, md5sum puede generar md5 digests y md5sumc --check los verificará.
tal vez puedas usar algo similar a esto:
find <original root dir> | xargs md5sum > original
find <new root dir> | xargs md5sum > new
diff original new
cd website
find . -type f -print | sort | xargs sha1sum
producirá una lista de sumas de comprobación para los archivos. A continuación, puede diff
para ver si hay archivos faltantes / agregados / diferentes.
Agregaría esto a Douglas Leeder o Eineki, pero lamentablemente, no tengo suficiente reputación para comentar. De todos modos, sus respuestas son geniales, excepto que no funcionan para nombres de archivos con espacios. Para hacer que funcione, haz
find [dir1] -type f -print0 | xargs -0 [preferred hash function] > [file1]
find [dir2] -type f -print0 | xargs -0 [preferred hash function] > [file2]
diff -y [file1] [file2]
Solo por experimentar, también me gusta usar el argumento -W ### en diff y enviarlo a un archivo, más fácil de analizar y comprender en la terminal.
Usar diff con la opción recursiva -r
y quick -q
. Es la mejor y, por lejos, la forma más rápida de hacerlo.
diff -r -q /path/to/dir1 /path/to/dir2
No le dirá cuáles son las diferencias (elimine la opción -q para ver eso), pero le indicará muy rápidamente si todos los archivos son iguales.
Si no muestra ningún resultado, todos los archivos son los mismos, de lo contrario, mostrará una lista de los archivos que son diferentes.
Para agregar una respuesta de Sidney. No es muy necesario filtrar -type f, y producir código hash. En respuesta a zidarsk8, no necesita ordenar, ya que find, igual que ls, ordena alfabéticamente los nombres de los archivos por defecto. Funciona también para directorios vacíos.
Para resumir, las 3 mejores respuestas serían: (PD. Es bueno hacer una carrera en seco con rsync)
diff -r -q /path/to/dir1 /path/to/dir2
diff <(cd dir1 && find) <(cd dir2 && find)
rsync --dry-run -avh from/my/dir newhost:/to/new/dir