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>.
    
       
   | 
  
    
       
   | 
  
    
       
   |