Usar un bufer compartido tiene también sus implicaciones, especialmente si los hilos de copia son asíncronos[...]

Por ello la decisión fue realizar la copia de forma síncrona, si bien de forma asíncrona se puede terminar con un disco antes que acabe el siguiente, al final el tiempo total de la copia no varía, pues el disco que tarda más igual demorará el mismo tiempo, si es necesario hacer un backup hacia varios discos, la tarea no finalizaría hasta que el último disco termine. Seria algo así:

Tct - Tiempo de copia total
Tcr - Tiempo de copia del disco rápido
Tcl - Tiempo de copia del disco lento

Usando cualquiera de las variantes (síncrona o asíncrona):

Tct = Tcl

A diferencia de una copia normal que sería:

Tct = Tcr + Tcl


De todas formas la diferencia en el tiempo de copia de un disco rápido y uno lento sería mínima, pues habría que almacenar la diferencia en memoria, en el buffer, el cual aumentaría según aumente la diferencia de copia de los discos, lo que no se puede permitir, porque ocuparía toda la ram, y cuando se limite el tamaño del buffer, pues el disco rápido solo copiaría a su velocidad normal hasta que el buffer se llene, luego continuaría a la misma velocidad del disco lento, lo cual le daría una ventaja mínima. O al menos a esa fue la conclusión que llegamos por aquí. ¿Tienes alguna idea o una conclusión diferente?


Otras cosas que conviene tomar en consideración son la tolerancia a fallos (por ejemplo que ocurriría si se va la luz en medio de una operación de copia), o si se permitirá la reanudación de una copia incompleta (idealmente ignorando los archivos identicos mediante algun tipo de checksum), etc.

Si, ahora mismo con la opción -n (--only-newer-files) hace una copia incremental, es decir, que copia teniendo en cuenta la fecha de modificación del fichero, algo así:

Se copia de A hacia B
Si A/1 existe en B/1:
    Si fecha de A/1 > fecha de B/1:
        Realiza copia A/1 a B/1
Sino:
    Realiza copia A/1 a B/1

Quizá agregar algo como:

Se copia de A hacia B
Si A/1 existe en B/1:
    Si fecha de A/1 > fecha de B/1:
        Realiza copia A/1 a B/1
    Sino si (fecha de A/1 == fecha de B/1) Y (tamaño A/1 != tamaño B/1):
        Realiza copia A/1 a B/1
Sino:
    Realiza copia A/1 a B/1

Creo que con eso se puede solucionar el tema de los ficheros corruptos, generar un checksum me parece que enlentecería la copia.

En cuando al tipo de unidad de medida, personalmente prefiero binario, pero hay quien prefiere decimal, de modo que quizas seria bueno dejarlo en binario por defecto (que es como lo tienes ahora) con la opción de usar el sistema decimal.

Vamos a hacer lo siguiente, le preguntamos al resto de la lista cual prefiere, y ponemos ese por defecto y una opción para el otro :)

Saludos.




--
Este mensaje le ha llegado mediante el servicio de correo electronico que 
ofrece Infomed para respaldar el cumplimiento de las misiones del Sistema 
Nacional de Salud. La persona que envia este correo asume el compromiso de usar 
el servicio a tales fines y cumplir con las regulaciones establecidas

Infomed: http://www.sld.cu/



______________________________________________________________________
Lista de correos del Grupo de Usuarios de Tecnologías Libres de Cuba.
Gutl-l@jovenclub.cu
https://listas.jovenclub.cu/cgi-bin/mailman/listinfo/gutl-l

Responder a