diff options
author | ramon <ramongomez@us.es> | 2010-06-24 10:41:41 +0000 |
---|---|---|
committer | ramon <ramongomez@us.es> | 2010-06-24 10:41:41 +0000 |
commit | 9eefff4476b35ce59f6ffb6ebe73d4ac90368dd6 (patch) | |
tree | b2bee31dba210c85c4ab9c2515742b036df474cf | |
parent | 36a4dfd93f1215bdc999d488e7154a79d3575118 (diff) |
Nueva función {{{ogIsNewerFile}}}
git-svn-id: https://opengnsys.es/svn/trunk@1058 a21b9725-9963-47de-94b9-378ad31fedc9
-rwxr-xr-x | client/engine/File.lib | 60 | ||||
-rw-r--r-- | client/nfsexport/etc/lang.es_ES.conf | 1 | ||||
-rwxr-xr-x | client/nfsexport/scripts/restoreImage | 27 |
3 files changed, 65 insertions, 23 deletions
diff --git a/client/engine/File.lib b/client/engine/File.lib index 6156e6ed..5f1f142a 100755 --- a/client/engine/File.lib +++ b/client/engine/File.lib @@ -4,17 +4,17 @@ #@brief Librería o clase File #@class File #@brief Funciones para gestión de archivos y directorios. -#@version 0.9 +#@version 0.9.2 #@warning License: GNU GPLv3+ #*/ #/** # ogCopyFile [ str_repo | int_ndisk int_npart ] path_source [ str_repo | int_ndisk int_npart ] path_target -#@brief Metafunción para copiar un fichero de sistema OpenGNSys a un directorio OpenGNSys. +#@brief Metafunción para copiar un fichero de sistema OpenGnSys a un directorio. #@see ogGetPath #@warning Deben existir tanto el fichero origen como el directorio destino. -#@version 0.9 - Pruebas con OpenGNSys. +#@version 0.9 - Pruebas con OpenGnSys. #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009-10-20 #*/ ## @@ -48,7 +48,7 @@ cp -p "$SOURCE" "$TARGET" # (definir posible error) # ogDeleteFile [ str_repo | int_ndisk int_npartition ] path_filepath #@brief Metafunción que borra un fichero de un dispositivo. #@see ogGetPath -#@version 0.9 - Pruebas con OpenGNSys. +#@version 0.9 - Pruebas con OpenGnSys. #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009-09-29 #*/ ## @@ -67,7 +67,7 @@ rm -f "$FILE" || ogRaiseError $OG_ERR_NOTFOUND "$*" || return $? # ogDeleteTree [ str_repo | int_ndisk int_npartition ] path_dirpath #@brief Metafunción que borra todo un subárbol de directorios de un dispositivo. #@see ogGetPath -#@version 0.9 - Pruebas con OpenGNSys. +#@version 0.9 - Pruebas con OpenGnSys. #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009-09-29 #*/ ## @@ -97,7 +97,7 @@ rm -fr "$DIR" || ogRaiseError $OG_ERR_NOTFOUND "$*" || return $? #@exception OG_ERR_PARTITION Tipo de partición desconocido o no se puede montar. #@warning En caso de error, sólo devuelve el código y no da mensajes. #@todo Terminar de definir parámetros para acceso a repositorios. -#@version 0.9 - Pruebas con OpenGNSys. +#@version 0.9 - Pruebas con OpenGnSys. #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009-09-15 #*/ ## @@ -157,7 +157,7 @@ cd $CURRENTDIR # ogGetParentPath [ str_repo | int_ndisk int_npartition ] path_filepath #@brief Metafunción que devuelve el camino del directorio padre. #@see ogGetPath -#@version 0.9 - Pruebas con OpenGNSys. +#@version 0.9 - Pruebas con OpenGnSys. #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009-09-29 #*/ ## @@ -184,10 +184,52 @@ ogGetPath $PARENT #/** +# ogIsNewerFile [ str_repo | int_ndisk int_npart ] path_source [ str_repo | int_ndisk int_npart ] path_target +#@brief Metafunción que indica se un fichero es más nuevo que otro. +#@see ogGetPath +#@return int_code Código de salida +#@warning Deben existir tanto el fichero origen como el destino. +#@version 0.9.2 - Primera versión para OpenGnSys. +#@author Ramon Gomez, ETSII Universidad de Sevilla +#@date 2010-07-24 +#*/ ## +function ogIsNewerFile () +{ +# Variables locales. +local ARGS SOURCE TARGET +# Si se solicita, mostrar ayuda. +if [ "$*" == "help" ]; then + ogHelp "$FUNCNAME" "$FUNCNAME [ str_repo | int_ndisk int_npartition ] path_source [ str_repo | int_ndisk int_npartition ] path_target" \ + "if $FUNCNAME REPO ubuntu.img CACHE ubuntu.img; then ... fi" + return +fi + +ARGS="$@" +case "$1" in + /*) # Camino completo. */ (Comentrio Doxygen) + SOURCE=$(ogGetPath "$1") + shift ;; + [1-9]*) # ndisco npartición. + SOURCE=$(ogGetPath "$1" "$2" "$3") + shift 3 ;; + *) # Otros: repo, cache, cdrom (no se permiten caminos relativos). + SOURCE=$(ogGetPath "$1" "$2") + shift 2 ;; +esac +# Comprobar que existen los ficheros origen y destino. +[ -n "$SOURCE" ] || ogRaiseError $OG_ERR_NOTFOUND "${ARGS% $*}" || return $? +TARGET=$(ogGetPath "$@") +[ -n "$TARGET" ] || ogRaiseError $OG_ERR_NOTFOUND "$@" || return $? +# Devolver si el primer fichero se ha modificado después que el segundo. +test "$SOURCE" -nt "$TARGET" +} + + +#/** # ogMakeDir [ str_repo | int_ndisk int_npartition ] path_dirpath #@brief Metafunción que crea un subdirectorio vacío en un dispositivo. #@see ogGetParentPath -#@version 0.9 - Pruebas con OpenGNSys. +#@version 0.9 - Pruebas con OpenGnSys. #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009-09-29 #*/ ## @@ -215,7 +257,7 @@ mkdir -p "$PARENT/$DIR" || ogRaiseError $OG_ERR_NOTFOUND "$*" || return $? #@exception OG_ERR_PARTITION Tipo de partición desconocido o no se puede montar. #@warning Primeras pruebas. #@todo Terminar de definir parámetros para acceso a repositorios. -#@version 0.1 - Primera adaptación para OpenGNSys. +#@version 0.1 - Primera adaptaci³n para OpenGNSys. #@author obtenido de ogGetPath de Ramon Gomez, ETSII Universidad de Sevilla #@date 2009-09-15 #*/ diff --git a/client/nfsexport/etc/lang.es_ES.conf b/client/nfsexport/etc/lang.es_ES.conf index ecd12981..0d1e90fe 100644 --- a/client/nfsexport/etc/lang.es_ES.conf +++ b/client/nfsexport/etc/lang.es_ES.conf @@ -85,6 +85,7 @@ MSG_HELP_ogHidePartition="Oculta una partición de Windows." MSG_HELP_ogIdToType="Devuelve el mnemónico asociado al identificador de tipo de partición." MSG_HELP_ogIsLocked="Comprueba si una partición está bloqueada para una operación de uso exclusivo." MSG_HELP_ogIsMounted="Comprueba si un sistema operativo está montado." +MSG_HELP_ogIsNewerFile="Comprueba si un fichero es más nuevo (se modificado después) que otro." MSG_HELP_ogIsValidType="Comprueba si el tipo de sistema de archivos es válido para un identificador de partición." MSG_HELP_ogLinuxBootParameters="Devuelve los parámetros de arranque de un sistema operativo Linux instalado." MSG_HELP_ogListHardwareInfo="Lista el inventario de dispositivos del cliente." diff --git a/client/nfsexport/scripts/restoreImage b/client/nfsexport/scripts/restoreImage index c26acae9..afc62395 100755 --- a/client/nfsexport/scripts/restoreImage +++ b/client/nfsexport/scripts/restoreImage @@ -23,8 +23,8 @@ if [ "$1" == "CACHE" -o "$1" == "cache" ]; then # Procesar protocolos de transferencia. case "$PROTO" in UNICAST|unicast) - # Copiar fichero del repositorio al caché local. - if [ -z "$IMGFILE" ]; then + # Copiar fichero del repositorio al caché, si no existe en caché o es anterior. + if [ -z "$IMGFILE" -o $(ogIsNewerFile "repo" "$2.img" "$IMGFILE") ]; then echo "[10] Copiando imagen \"$2\" del repositorio a caché local" ogCopyFile "repo" "$2.img" "$IMGDIR" || exit $? IMGFILE=$(ogGetPath "cache" "$2.img") @@ -32,19 +32,19 @@ if [ "$1" == "CACHE" -o "$1" == "cache" ]; then ;; MULTICAST|multicast) if [ -z "$IMGFILE" ]; then - echo "[10] Copiando imagen multicast \"$2\" del repositorio a caché local" - PORTBASE=`echo $6 | cut -f1 -d:` - echo "ogMcastReceiverFile SOURCE:$PORTBASE TARGET:"CACHE" "$2.img" " - ogMcastReceiverFile "$PORTBASE" "CACHE" "$2.img" || exit $? - IMGFILE=$(ogGetPath "cache" "$2.img") + echo "[10] Copiando imagen multicast \"$2\" del repositorio a caché local" + PORTBASE=`echo $6 | cut -f1 -d:` + echo "ogMcastReceiverFile SOURCE:$PORTBASE TARGET:"CACHE" "$2.img" " + ogMcastReceiverFile "$PORTBASE" "CACHE" "$2.img" || exit $? + IMGFILE=$(ogGetPath "cache" "$2.img") fi ;; TORRENT|torrent) - echo "[9] copiando el fichero torrent Unicast \"$2\" del repositorio a caché local" - ogCopyFile "repo" "$2.img.torrent" "$IMGDIR" || exit $? - echo "[10] descargando imagen torrent($6) \"$2\" del repositorio a caché local" - ogTorrentStart "CACHE" "$2.img.torrent" "peer:60" || exit $? - IMGFILE=$(ogGetPath "cache" "$2.img") + echo "[9] copiando el fichero torrent Unicast \"$2\" del repositorio a caché local" + ogCopyFile "repo" "$2.img.torrent" "$IMGDIR" || exit $? + echo "[10] descargando imagen torrent($6) \"$2\" del repositorio a caché local" + ogTorrentStart "CACHE" "$2.img.torrent" "peer:60" || exit $? + IMGFILE=$(ogGetPath "cache" "$2.img") ;; *) # Protocolo desconocido. ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $PROG REPO|CACHE imagen ndisco nparticion [ UNICAST|MULTICAST|TORRENT opciones ]" @@ -56,11 +56,10 @@ if [ -z "$IMGFILE" ]; then exit $? fi PART=$(ogDiskToDev "$3" "$4") || exit $? -echo "[20] $PROG: Origen=$IMGFILE, Destino=$PART" # Restaurar la imagen. -echo "[25] Restaurar imagen" +echo "[40] Restaurar imagen $IMGFILE en $PART" ogRestoreImage "$@" || exit $? # Restaurar tamaño. echo "[80] Extender sistema de archivos." |