Universidad de Costa Rica
Escuela de Ciencias de la
Computación e Informática
Profesor Adolfo Di Mare
CI-1201
II Semestre 2001
[<=] [home] [<>] [\/] [=>]
CI-1201 Programación II

Tarea #2 [solución]

Sincronizador de archivos

Directorio de C:\CI-1201\2001-1

10/Ago/2001  11:17a   <DIR> .
10/Ago/2001  11:17a   <DIR> ..
27/Jun/2001  11:50a  23.744 toc.htm
16/Abr/2001  01:36p  16.396 p2-ta-1.htm
16/Abr/2001  01:56p  10.278 p2-ta-2.htm
16/Abr/2001  08:34p   8.947 p2-ta-3.htm
21/May/2001  10:48a  16.656 p2-ta-4.htm
27/Jun/2001  11:52a   5.526 p2-ta-5.htm
27/Jun/2001  11:52a   4.234 p2-ta-6.htm
        7 archivos    85.781 bytes
Directorio de D:\CD\Respaldo\2001-1

10/Ago/2001  11:18a   <DIR> .
10/Ago/2001  11:18a   <DIR> ..
27/Jun/2001  11:50a  23.744 TOC.HTM
28/May/2001  05:52p   8.039 p2-ea-1.htm
15/Jun/2001  09:00a   9.844 p2-ea-2.htm
30/Jun/2001  10:55a   9.220 p2-ea-f.htm
10/Ago/2001  11:18a   4.234 P2-TA-6.HTM
        5 archivos    55.081 bytes
Figura 1

      En esta trabajo usted escribirá un programa 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\2001-1
D:\CD\Respaldo\2001-1> deltree /y .
D:\CD\Respaldo\2001-1> xcopy /e /s C:\CI-1201\2001-1 D:\CD\Respaldo\2001-1\

      Usar su programa SYNC.exe es una mejor solución. Para ejecutar su progama hay que usar el siguiente comando:

C:\> CD \CI-1201\2001-1
C:\CI-1201\2001-1> SYNC.exe . "D:\CD\Respaldo\2001-1"
usted obtendrá creará un archivo llamado SYNC.bat que contendrá las siguientes instrucciones:

:: SYNC.bat: Sincroniza C:\CI-1201\2001-1 ==> D:\CD\Respaldo\2001-1
@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\2001-1\nul"  md "D:\CD\Respaldo\2001-1"

:: Se posiciona en el directorio destino
D:
CD "D:\CD\Respaldo\2001-1"

:: 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\2001-1\p2-ta-1.htm"   "D:\CD\Respaldo\2001-1"
xcopy "C:\CI-1201\2001-1\p2-ta-2.htm"   "D:\CD\Respaldo\2001-1"
xcopy "C:\CI-1201\2001-1\p2-ta-3.htm"   "D:\CD\Respaldo\2001-1"
xcopy "C:\CI-1201\2001-1\p2-ta-4.htm"   "D:\CD\Respaldo\2001-1"
xcopy "C:\CI-1201\2001-1\p2-ta-5.htm"   "D:\CD\Respaldo\2001-1"
xcopy "C:\CI-1201\2001-1\p2-ta-6.htm"   "D:\CD\Respaldo\2001-1"

:: "D:\CD\Respaldo\2001-1" es copia exacta de "C:\CI-1201\2001-1"
goto _out

:_out
:: SYNC.bat: Fin de archivo
del SYNC.bat /p
Figura 2

      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 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. Al ejecutar SYNC.bat permite se logra que actualizar los pocos archivos que han sido actualizados en el directorio fuente, y tal vez renombrar algunos si hace falta. Al examinar la implementación de SYNC.bat se puede notar lo siguiente:

      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:

      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:

[mailto:] Kenneth Mora y Pablo Gainza

 

Tiempo de entrega: 15 Días
Modalidad: En parejas

Soluciones

[mailto:] Adolfo Di Mare <adolfo@di-mare.com>.
Copyright © 2001
Derechos de autor reservados © 2001
[home] <> [/\]