Hola chicos, estoy ejecutando un diff en dos directorios, recursivamente, con algunas opciones. los directorios son algo grandes, sin embargo, estoy tratando de ver las diferencias en el contenido de las carpetas, no entre los archivos, usando la opción -q (¿estoy usando esto bien?)diff recursivo es extremadamente lento - verificando los contenidos de los directorios
También he intentado rsync dry correr, eso parece tomar igual durante tanto tiempo. la salida pasa a través de sed, lo he intentado sin, no parece afectar nada. también ignoro los archivos ocultos. Creo que puedo estar mal usando diff -q para simplemente comparar el contenido de 2 directorios.
utilicé un bloque de código de otro consejo para saber cuánto tiempo solo comparando UNO de estos directorios era (1 directorio, 14 subdirectorios) y tardó 88 minutos. sin embargo, cada archivo era un programa de televisión de 30 minutos, así que si diff está comparando estos archivos, tiene sentido, pero pensé que -q haría que eso no sucediera.
Además, un directorio está montado sobre AFP, uno es un disco externo conectado por firewire. esto no importa, porque copié ambos directorios localmente y el diff tomó la misma cantidad de tiempo. Tengo una solución para esto: ejecuté ls -1 en ambos directorios y diferencié la salida, pero ¿por qué se tarda tanto en ejecutarse?
aquí está el código; ¿alguna sugerencia?
#!/bin/bash
before="$(date +%s)"
diff -r -x '.*' /Volumes/directory1/ /Volumes/directory2/ | sed 's/^.\{24\}//g' > /Volumes/stuff.txt
diff -r -x '.*' /Volumes/directory3/ /Volumes/directory4/ | sed 's/^.\{24\}//g' > /Volumes/stuff.txt
diff -r -x '.*' /Volumes/directory5/ /Volumes/directory6/ | sed 's/^.\{24\}//g' > /Volumes/stuff.txt
diff -r -x '.*' /Volumes/directory7/ /Volumes/directory8/ | sed 's/^.\{24\}//g' > /Volumes/stuff.txt
diff -r -x '.*' /Volumes/directory9/ /Volumes/directory10/ | sed 's/^.\{24\}//g' > /Volumes/stuff.txt
diff -r -x '.*' /Volumes/directory11/ /Volumes/directory12/ | sed 's/^.\{24\}//g' > /Volumes/stuff.txt
after="$(date +%s)"
elapsed_seconds="$(expr $after - $before)"
echo Elapsed time for code block: $elapsed_seconds
Si usted no tiene GNU encontrar, esto debería funcionar: 'diff <(. Cd/Volumes/directorio1; encontrar) <(cd/Volumes/directory2; find.) ' –
@gordon gracias, definitivamente está en el camino correcto (ya que estoy en mac os x y no tengo GNU find). ¿Puedes explicar qué está pasando? parece que está encontrando la diferencia de la salida de un hallazgo. en ambos directorios? – rick
gracias, eso tiene sentido ya que siempre encuentra la diferencia desde el principio y luego toma el resto de los 80 minutos para no decir nada. – rick