summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorramon <ramongomez@us.es>2010-06-24 10:41:41 +0000
committerramon <ramongomez@us.es>2010-06-24 10:41:41 +0000
commit9eefff4476b35ce59f6ffb6ebe73d4ac90368dd6 (patch)
treeb2bee31dba210c85c4ab9c2515742b036df474cf
parent36a4dfd93f1215bdc999d488e7154a79d3575118 (diff)
Nueva función {{{ogIsNewerFile}}}
git-svn-id: https://opengnsys.es/svn/trunk@1058 a21b9725-9963-47de-94b9-378ad31fedc9
-rwxr-xr-xclient/engine/File.lib60
-rw-r--r--client/nfsexport/etc/lang.es_ES.conf1
-rwxr-xr-xclient/nfsexport/scripts/restoreImage27
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."