He escrito un script bash en Cygwin, que es bastante similar al rsync
, aunque lo suficientemente diferente como para creer que no puedo usar rsync
para lo que necesito. Repite más de mil pares de archivos en los directorios correspondientes, y los compara con cmp
.Agilizando las comparaciones de archivos (con `cmp`) en Cygwin?
Desafortunadamente, esto parece funcionar abysmally lentamente - tomando aproximadamente diez (Edición: en realidad 25!) Veces el tiempo que lleva generar uno de los conjuntos de archivos usando un programa de Python.
¿Estoy en lo cierto al pensar que esto es sorprendentemente lento? ¿Hay alguna alternativa simple que iría más rápido?
(Para elaborar un poco en mi caso de uso: estoy autogenerating un montón de .c
archivos en un directorio temporal, y cuando me volver a generarlas, me gustaría copiar solamente los que han cambiado en el directorio de origen real, dejando intactos los cambios (con sus viejos tiempos de creación) para que make
sabrá que no necesita recompilarlos. No todos los archivos generados son .c
, así que tengo que hacer binarios comparaciones en lugar de comparaciones de texto.)
Por lo que vale, he confirmado que 'rsync' no hace lo que quiero; siempre restablece la hora modificada en archivos sin cambios, ya sea en la marca de tiempo en el original (si se llama con '-t') o en el momento de la transferencia. –
Problema interesante ... Creo que también vale la pena preguntarse cómo evitar que la sincronización actualice la marca de tiempo de un archivo que no se ha transferido –
@MiserableVariable: Buena idea, eso es ahora http://unix.stackexchange.com/questions/29845/ how-can-i-do-a-copy-if-changed-operation. (No creo que sea un duplicado, este es "¿cómo puedo escribir mejor este programa?", Mientras que eso es "¿puedo evitarlo por completo?") –