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