Universidad de Costa Rica
|
|
El objetivo de esta tarea programada es forzarle a usar especificación en lugar de implementación de la clase lista.
Directorio de C:\CI-1201\2008-2 10/Ago/2008 11:17a <DIR> . 10/Ago/2008 11:17a <DIR> .. 27/Jun/2008 11:50a 23.744 toc.htm 16/Abr/2008 01:36p 16.396 p2-ta-1.htm 16/Abr/2008 01:56p 10.278 p2-ta-2.htm 16/Abr/2008 08:34p 8.947 p2-ta-3.htm 21/May/2008 10:48a 16.656 p2-ta-4.htm 27/Jun/2008 11:52a 5.526 p2-ta-5.htm 27/Jun/2008 11:52a 4.234 p2-ta-6.htm 7 archivos 85.781 bytes |
Directorio de D:\CD\Respaldo\2008-2 10/Ago/2008 11:18a <DIR> . 10/Ago/2008 11:18a <DIR> .. 27/Jun/2008 11:50a 23.744 TOC.HTM 28/May/2008 05:52p 8.039 p2-ea-1.htm 15/Jun/2008 09:00a 9.844 p2-ea-2.htm 30/Jun/2008 10:55a 9.220 p2-ea-f.htm 10/Ago/2008 11:18a 4.234 P2-TA-6.HTM 5 archivos 55.081 bytes |
En esta trabajo usted escribirá un programa genera un archivo de comandos que permite sincronizar dos subdirectorios, de manera que el segundo quede como copia exacta del primero, pero tratando de minimizar la cantidad de copias de archivos.
En la Figura 1 se muestra dos directorios, a la iquierda y a la derecha, que corresponden a los datos almacenados en el disco duro y en una unidad de respaldo. Para sincronizarlos, hay que lograr que el directorio de la derecha, de respaldo, contenga exactamente los mismos archivos que el directorio fuente, que está a la izquierda. Una forma de sincronizar los dos directorios usando fuerza bruta es borrar completamente el directorio de la derecha, y luego copiarle encima todo el contenido del directorio de la izquierda, como sigue:
C:\> D: D:\> CD D:\CD\Respaldo\2008-2 D:\CD\Respaldo\2008-2> deltree /y . D:\CD\Respaldo\2008-2> xcopy /e /s C:\CI-1201\2008-2 D:\CD\Respaldo\2008-2\
Usar su programa
SYNC.exe
es una mejor solución. Para ejecutar
su progama hay que usar el siguiente comando:
usted obtendrá creará un archivo llamadoC:\> CD \CI-1201\2008-2 C:\DIR\SubDir> SYNC.exe "C:\CI-1201\2008-2" "D:\CD\Respaldo\2008-2"
SYNC.bat
que contendrá las siguientes
instrucciones:
:: SYNC.bat: Sincroniza C:\CI-1201\2008-2 ==> D:\CD\Respaldo\2008-2 @echo off :: Crea el directorio destino si no existe if not exist "D:\CD\nul" md "D:\CD" if not exist "D:\CD\Respaldo\nul" md "D:\CD\Respaldo" if not exist "D:\CD\Respaldo\2008-2\nul" md "D:\CD\Respaldo\2008-2" :: Se posiciona en el directorio destino D: CD "D:\CD\Respaldo\2008-2" :: Borrados del "p2-ea-1.htm" del "p2-ea-2.htm" del "p2-ea-f.htm" del "P2-TA-6.HTM" :: Cambios de nombre ren "TOC.HTM" "toc.htm" :: Copias xcopy "C:\CI-1201\2008-2\p2-ta-1.htm" "D:\CD\Respaldo\2008-2" xcopy "C:\CI-1201\2008-2\p2-ta-2.htm" "D:\CD\Respaldo\2008-2" xcopy "C:\CI-1201\2008-2\p2-ta-3.htm" "D:\CD\Respaldo\2008-2" xcopy "C:\CI-1201\2008-2\p2-ta-4.htm" "D:\CD\Respaldo\2008-2" xcopy "C:\CI-1201\2008-2\p2-ta-5.htm" "D:\CD\Respaldo\2008-2" xcopy "C:\CI-1201\2008-2\p2-ta-6.htm" "D:\CD\Respaldo\2008-2" :: "D:\CD\Respaldo\2008-2" es copia exacta de "C:\CI-1201\2008-2" goto _out :_out :: SYNC.bat: Fin de archivo del SYNC.bat /p |
El archivo de comandos SYNC.bat
de la
Figura 2 es una mejor alternativa que
borrar y copiar todo de nuevo, porque se evita copiar aquellos
archivos que son comunes a los dos directorios. La idea del
programa
SYNC.exe
es tratar de minimizar la cantidad de copias,
pues se supone que cada día quien hace el respaldo cambia
pocos archivos, por lo que casi todos los archivos en el
directorio fuente y de respaldo coincidirán. Si se ejecuta
SYNC.bat
se logra actualizar los pocos archivos que
han sido modificados en el directorio fuente, y tal vez renombrar
algunos otros hace falta. Al examinar la implementación de
SYNC.bat
se puede notar lo siguiente:
TOC.HTM
a letras minúsculas.
SYNC.bat
se borra primero
P2-TA-6.HTM
y luego se copia archivo
p2-ta-6.htm
(recuerde que el sistema de archivos
Windows no hace diferencia entre mayúsculas y
minúsculas en los nombres de archivos y directorios).SYNC.bat
se borran los
archivos p2-ea-1.htm
, p2-ea-2.htm
y
p2-ea-f.htm
. p2-ta-6.htm
pese a que tiene una fecha más
vieja en el directorio fuente.
Note que su programa genera el archivo "SYNC.bat
",
pero no lo ejecuta. Por eso, su programa nunca
"interactúa" o "ejecuta" el comando
XCOPY.exe
de Windows. Más bien, su programa lee los nombres de los
archivos de 2 directorios, el "directorio fuente" y el
"directorio de respaldo", y que luego compara los
nombres+atributos de ambos directorios con el fin de desplegar,
posiblemente en pantalla, un reporte como el que aparece en la
Figura 2.
Por eso, su programa debe grabar el archivo
"SYNC.bat
" cuyo contenido se calcula al
cotejar los nombres y atributos de los archivos de 2 directorios.
Si el archivo "SYNC.bat
" que su programa
generó se ejecutara en la línea de comandos, el
resultado sería que en el "directorio de
respaldo" quedaría una copia exacta del contenido del
"directorio fuente".
Para ayudarle a aplicar los conceptos de abstracción, ocultamiento de datos y modularización usted deberá acatar los siguientes requerimientos en su implementación:
friend
en ninguna de sus
clases, salvo que la lista es una clase amiga de su clase
nodo.public
en sus
clases.
La idea de implementar el programa SYNC.exe
no es
nueva, aunque tal vez sí lo sea hacerlo generando un
archivo de comandos SYNC.bat
. Algunos utilitarios
para hacer este tipo de trabajo están disponibles en
Internet:
http://www.grigsoft.com/wndsync.htm
ftp://ftp.simtel.net/pub/simtelnet/win95/fileutl/fsync211.zip
ftp://ftp.simtel.net/pub/simtelnet/msdos/dirutl/sync10.zip
http://www.kalab.com/freeware/foldersync/foldersync.htm
Entregue su tarea por correo electrónico, como lo hizo anteriormente.
Tiempo de entrega: | 7 días |
|
|
Primera etapa: | 3 días | ||
Modalidad: | En parejas |
Adolfo Di Mare <adolfo@di-mare.com>.
|