summaryrefslogtreecommitdiffstats
path: root/client
diff options
context:
space:
mode:
authorramon <ramongomez@us.es>2010-11-10 12:52:02 +0000
committerramon <ramongomez@us.es>2010-11-10 12:52:02 +0000
commit0fbc05e7e6dbf609ab41c04c3061982fba4bdaa0 (patch)
tree2b86adc0409386b3ffaf6c4e66196f29afd659e9 /client
parentf20ea704eee9ae83e6a2c26932f4a86edb5e2213 (diff)
Sustitución de Partimage por Partclone como herramienta básica de clonación. Close #237.
Eliminar rama de desarrollo "AdaptacionUs". git-svn-id: https://opengnsys.es/svn/trunk@1337 a21b9725-9963-47de-94b9-378ad31fedc9
Diffstat (limited to 'client')
-rwxr-xr-xclient/engine/Image.lib130
-rwxr-xr-x[-rw-r--r--]client/engine/Protocol.lib41
-rwxr-xr-xclient/nfsexport/scripts/createImage6
-rwxr-xr-xclient/nfsexport/scripts/restoreImage43
4 files changed, 135 insertions, 85 deletions
diff --git a/client/engine/Image.lib b/client/engine/Image.lib
index fe97d714..3fd4d3e8 100755
--- a/client/engine/Image.lib
+++ b/client/engine/Image.lib
@@ -30,7 +30,7 @@
#@Date 2008/05/13
#@author Antonio J. Doblas Viso. Universidad de Malaga
#@date 2008/10/27
-#@version 0.9 - Version en pruebas para OpenGNSys
+#@version 0.9 - Versión en pruebas para OpenGnSys
#@author Ramon Gomez, ETSII Universidad de Sevilla
#@date 2009/10/07
#*/ ##
@@ -46,7 +46,7 @@ if [ "$*" == "help" ]; then
return
fi
# Error si no se reciben 4 parámetros.
-[ $# -lt 4 ] && ogRaiseError $OG_ERR_FORMAT && return $?
+[ $# -ne 4 ] && ogRaiseError $OG_ERR_FORMAT && return $?
PART="$(ogDiskToDev $1 $2)" || return $?
if ogIsLocked $1 $2; then
@@ -55,7 +55,7 @@ if ogIsLocked $1 $2; then
fi
IMGDIR=$(ogGetParentPath "$3" "$4")
[ -n "$IMGDIR" ] || ogRaiseError $OG_ERR_NOTFOUND "$3 $(dirname $4)" || return $?
-IMGFILE="$IMGDIR/$(basename "$4").img"
+IMGFILE="$IMGDIR/$(basename "$4").pgz"
ogUnmount $1 $2 2>/dev/null
ogLock $1 $2 || return $?
@@ -63,14 +63,21 @@ trap "ogUnlock $1 $2; rm -f $IMGFILE" 1 2 3 6 9
TYPE="$(ogGetFsType $1 $2)"
case "$TYPE" in
- EXT[234]|REISERFS|XFS|JFS)
- partimage -M -f3 -o -d -V0 -B gui=no -c -z1 save $PART "$IMGFILE"
+ EXT[234])
+ #partclone.extfs -c -C -F -s $PART | gzip -c > "$IMGFILE" # Muestra progreso
+ partclone.extfs -c -C -s $PART | gzip -c > "$IMGFILE"
+ ;;
+ REISERFS|XFS|JFS)
+ partclone.dd -c -C -s $PART | gzip -c > "$IMGFILE"
;;
NTFS|HNTFS)
- partimage -M -f3 -o -d -V0 -B gui=no -c -z1 save $PART "$IMGFILE"
+ partclone.ntfs -c -C -s $PART | gzip -c > "$IMGFILE"
;;
FAT16|FAT32|HFAT16|HFAT32)
- partimage -M -f3 -o -d -V0 -B gui=no -c -z1 save $PART "$IMGFILE"
+ partclone.fat -c -C -s $PART | gzip -c > "$IMGFILE"
+ ;;
+ HFS|HFS+)
+ partclone.hfsp -c -C -s $PART | gzip -c > "$IMGFILE"
;;
*) ogRaiseError $OG_ERR_PARTITION "$1 $2 $TYPE"
return $? ;;
@@ -88,11 +95,43 @@ return $ERRCODE
#/**
+# ogGetImageFs str_repo path_image
+#@brief Devuelve el tipo de sistema de archivos almacenado en un fichero de imagen.
+#@param str_repo repositorio de imágenes o caché local
+#@param path_image camino de la imagen
+#@return str_imgtype - mnemónico del tipo de sistema de archivos
+#@exception OG_ERR_FORMAT formato incorrecto.
+#@exception OG_ERR_NOTFOUND fichero de imagen no encontrado.
+#@todo Comprobar salidas para todos los tipos de sistemas de archivos.
+#/**
+function ogGetImageFs ()
+{
+local IMGFILE IMGTYPE
+IMGTYPE=$(ogGetImageType "$1" "$2")
+IMGFILE=$(ogGetPath "$1" "$2.$IMGTYPE") || return $?
+[ -r "$IMGFILE" ] || ogRaiseError OG_ERR_NOTFOUND "$IMGFILE" || return $?
+case "$IMGTYPE" in
+ img) # Partimage.
+ partimage -B gui=no imginfo "$IMGFILE" 2>&1 | \
+ awk '/^Filesystem/ {sub(/\.\.+/," "); if ($2=="ntfs") print NTFS;
+ else { sub(/fs$/,""); print toupper($2);} }'
+ ;;
+ pgz) # Partclone / GZip
+ gzip -dc "$IMGFILE" | partclone.chkimg -C -s - 2>&1 | \
+ awk '/^File system/ {if ($2=="EXTFS") print "EXT3"; else print $3;}'
+ ;;
+ *) # Error si el fichero de imagen no es accesible.
+ ogRaiseError OG_ERR_NOTFOUND "$IMGFILE"
+ return $? ;;
+esac
+}
+
+
# ogGetImageSize str_repo path_image
#@brief Devuelve el tamaño del sistema de archivos almacenado en un fichero de imagen.
#@param str_repo repositorio de imágenes o caché local
#@param path_image camino de la imagen
-#@return tamaño (en KB)
+#@return int_size - tamaño (en KB)
#@exception OG_ERR_FORMAT formato incorrecto.
#@exception OG_ERR_NOTFOUND fichero de imagen no encontrado.
#*/
@@ -105,7 +144,7 @@ return $ERRCODE
function ogGetImageSize ()
{
# Variables locales
-local IMGFILE
+local IMGFILE IMGTYPE
# Si se solicita, mostrar ayuda.
if [ "$*" == "help" ]; then
@@ -114,14 +153,23 @@ if [ "$*" == "help" ]; then
return
fi
# Error si no se reciben menos de 2 parámetros.
-[ $# -lt 2 ] && ogRaiseError $OG_ERR_FORMAT && return $?
-# Error si el fichero de imagen no es accesible.
-IMGFILE=$(ogGetPath "$1" "$2.img") || return $?
-[ -r "$IMGFILE" ] || ogRaiseError OG_ERR_NOTFOUND "$IMGFILE" || return $?
-
+[ $# -ne 2 ] && ogRaiseError $OG_ERR_FORMAT && return $?
# Devuelve el tamaño de la imagen en KB.
-partimage -B gui=no imginfo "$IMGFILE" 2>&1 | \
- awk '/Partition size/ {sub(/\.\.+/," "); printf "%d\n",$3*1024*1024;}'
+IMGTYPE=$(ogGetImageType "$1" "$2")
+IMGFILE=$(ogGetPath "$1" "$2.$IMGTYPE")
+case "$IMGTYPE" in
+ img) # Partimage.
+ partimage -B gui=no imginfo "$IMGFILE" 2>&1 | \
+ awk '/Partition size/ {sub(/\.\.+/," "); ps=$3} END {print ps*1024*1024;}'
+ ;;
+ pgz) # Partclone / GZip
+ gzip -dc "$IMGFILE" | partclone.chkimg -C -s - 2>&1 | \
+ awk -F: '/Block size/ {bs=$2} /Used block/ {ub=$2} END {print bs*ub/1024}'
+ ;;
+ *) # Error si el fichero de imagen no es accesible.
+ ogRaiseError OG_ERR_NOTFOUND "$IMGFILE"
+ return $? ;;
+esac
}
@@ -129,14 +177,14 @@ partimage -B gui=no imginfo "$IMGFILE" 2>&1 | \
# Obtener tipo de imagen
function ogGetImageType ()
{
-local IMGFILE
-IMGFILE=$(ogGetPath "$1" "$2.img") || return $?
-[ -r "$IMGFILE" ] || ogRaiseError OG_ERR_NOTFOUND "$IMGFILE" || return $?
-partimage -B gui=no imginfo "$IMGFILE" 2>&1 | \
- awk '/^Filesystem/ {sub(/\.\.+/," "); sub(/fs$/,""); print toupper($2);}'
+local IMGFILE IMGTYPE EXT
+for EXT in img pgz; do
+ IMGFILE=$(ogGetPath "$1" "$2.$EXT")
+ [ -r "$IMGFILE" ] && IMGTYPE="$EXT"
+done
+echo $IMGTYPE
}
-
#/**
# ogRestoreImage str_repo path_image int_ndisk int_npartition
#@brief Restaura una imagen de sistema de archivos en una partición.
@@ -149,21 +197,20 @@ partimage -B gui=no imginfo "$IMGFILE" 2>&1 | \
#@exception OG_ERR_NOTFOUND fichero de imagen o partición no detectados.
#@exception OG_ERR_LOCKED partición bloqueada por otra operación.
#@exception OG_ERR_IMAGE error al restaurar la imagen del sistema.
-#@warning En pruebas iniciales
#@todo Comprobar incongruencias partición-imagen, control de errores, definir parámetros, caché/repositorio, etc.
-#@version 0.1 - Integracion para Opengnsys - HIDRA:RestaurarImagen{EXT3, NTFS}.sh; EAC: RestorePartitionFromImage() en Deploy.lib
+#@version 0.1 - Integracion para Opengnsys - HIDRA:RestaurarImagen{EXT3, NTFS}.sh; EAC: RestorePartitionFromImage() en Deploy.lib
#@author Ramon Gomez, ETSII Universidad de Sevilla
#@Date 2008/05/13
#@author Antonio J. Doblas Viso. Universidad de Malaga
#@date 2008/10/27
-#@version 0.9 - Primera version muy en pruebas para OpenGNSys
+#@version 0.9 - Primera version muy en pruebas para OpenGnSys
#@author Ramon Gomez, ETSII Universidad de Sevilla
#@date 2009/09/10
#*/ ##
function ogRestoreImage ()
{
# Variables locales
-local PART PARTSIZE IMGFILE IMGSIZE
+local PART PARTSIZE IMGFILE IMGTYPE IMGSIZE FSTYPE
# Si se solicita, mostrar ayuda.
if [ "$*" == "help" ]; then
@@ -175,7 +222,8 @@ fi
[ $# -lt 4 ] && ogRaiseError $OG_ERR_FORMAT && return $?
# Procesar parámetros.
PART="$(ogDiskToDev "$3" "$4")" || return $?
-IMGFILE=$(ogGetPath "$1" "$2.img") || return $?
+IMGTYPE=$(ogGetImageType "$1" "$2")
+IMGFILE=$(ogGetPath "$1" "$2.$IMGTYPE")
[ -r "$IMGFILE" ] || ogRaiseError OG_ERR_NOTFOUND "$IMGFILE" || return $?
# Error si la imagen no cabe en la particion.
IMGSIZE=$(ogGetImageSize "$1" "$2")
@@ -194,21 +242,21 @@ ogUnmount $3 $4 2>/dev/null || return $?
ogLock $3 $4 || return $?
trap "ogUnlock $3 $4" 1 2 3 6 9
-# Restaurar según el tipo de sistema de archivos.
+# Restaurar según el tipo de imagen.
+# Atención: no se comprueba el tipo de sistema de archivos.
# Atención: no se comprueba incongruencia entre partición e imagen.
-TYPE="$(ogGetFsType $3 $4)"
-case "$TYPE" in
- EXT[234]|REISERFS|XFS|JFS)
- partimage -M -f3 -o -d -V0 -B gui=no -c -z1 --volume=0 restore $PART "$IMGFILE"
- ;;
- NTFS|HNTFS)
- partimage -M -f3 -o -d -V0 -B gui=no -c -z1 --volume=0 restore $PART "$IMGFILE"
- ;;
- FAT16|FAT32|HFAT16|HFAT32)
- partimage -M -f3 -o -d -V0 -B gui=no -c -z1 --volume=0 restore $PART "$IMGFILE"
- ;;
- *) ogRaiseError $OG_ERR_FORMAT
- return $? ;;
+#FSTYPE="$(ogGetFsType $3 $4)"
+case "$IMGTYPE" in
+ img) # Partimage
+ partimage -M -f3 -o -d -V0 -B gui=no -c -z1 --volume=0 restore $PART "$IMGFILE"
+ ;;
+ pgz) # Partclone / GZip
+ #gzip -dc "$IMGFILE" | partclone.restore -C -F -o "$PART" # Muestra progreso
+ gzip -dc "$IMGFILE" | partclone.restore -C -o "$PART"
+ ;;
+ *) # Error si imagen no accesible o de tipo desconocido.
+ ogRaiseError $OG_ERR_FORMAT
+ return $? ;;
esac
ERRCODE=$?
if [ $ERRCODE != 0 ]; then
diff --git a/client/engine/Protocol.lib b/client/engine/Protocol.lib
index f4028125..925945ba 100644..100755
--- a/client/engine/Protocol.lib
+++ b/client/engine/Protocol.lib
@@ -18,7 +18,7 @@
#@return 1 si NO pertenece al grupo
#@exception OG_ERR_FORMAT formato incorrecto.
#@note
-#@TODO:
+#@todo
#@version 0.91 - Definición de
#@author Antonio Doblas Viso, Universidad de Málaga
#@date 2010/05/09
@@ -48,9 +48,6 @@ done
return 1
}
-
-
-
#/**
# ogCheckStringInReg
#@brief Función para determinar si el elemento contiene una "expresión regular"
@@ -60,7 +57,7 @@ return 1
#@return 1 si NO coincide con la expresión
#@exception OG_ERR_FORMAT formato incorrecto.
#@note
-#@TODO:
+#@todo
#@version 0.91 - Definición de
#@author Antonio Doblas Viso, Universidad de Málaga
#@date 2010/05/09
@@ -97,7 +94,7 @@ REG=$2
#@return 1 si NO es una dirección válida
#@exception OG_ERR_FORMAT formato incorrecto.
#@note
-#@TODO:
+#@todo
#@version 0.91 - Definición de
#@author Antonio Doblas Viso, Universidad de Málaga
#@date 2010/05/09
@@ -147,7 +144,7 @@ return 1
#@return instrucción para ser ejecutada.
#@exception OG_ERR_FORMAT formato incorrecto.
#@note Requisitos: upd-cast 2009
-#@TODO: localvar check versionudp
+#@todo localvar check versionudp
#@version 0.91 - Definición de FileTransfer
#@author Antonio Doblas Viso, Universidad de Málaga
#@date 2010/05/09
@@ -169,10 +166,10 @@ if [ "$*" == "help" -o "$2" == "help" ]; then
"$FUNCNAME RECEIVERPARTITION str_sessionCLIENT str_device str_tools str_level "\
"$FUNCNAME SENDFILE str_sessionSERVER str_file "\
"$FUNCNAME RECEIVERFILE str_sessionCLIENT str_file " \
- "sessionServer syntax: portbase:mcastaddres:method:speed:nclients:ntimeWaitingUntilNclients " \
- "sessionServer example: 9000:239.194.17.36:80M:50:60 " \
- "sessionClient syntax: portbase " \
- "sessionClient example: 9000 "
+ "sessionServer syntax: portbase:mcastaddres:method:speed:nclients:ntimeWaitingUntilNclients " \
+ "sessionServer example: 9000:239.194.17.36:80M:50:60 " \
+ "sessionClient syntax: portbase " \
+ "sessionClient example: 9000 "
return
fi
PERROR=0
@@ -618,7 +615,7 @@ then
case "$MODE" in
peer|PEER)
echo "Donwloading Torrent as peer" ### echo "ctorrent -X 'sleep $TIME; kill -9 \$(pidof ctorrent)' -C 100 $SOURCE -s $TARGET -b ${SOURCE}.bf"
- ctorrent -f -X "sleep $TIME; kill -2 \$(pidof ctorrent)" -C 100 ${SOURCE} -s ${TARGET} -b ${SOURCE}.bf
+ ctorrent -v -f -X "sleep 15; kill -2 \$(pidof ctorrent)" -C 100 ${SOURCE} -s ${TARGET} -b ${SOURCE}.bf >> $OGLOGFILE
;;
leecher|LEECHER)
echo "Donwloading Torrent as leecher" # echo "ctorrent ${SOURCE} -X 'sleep $TIME; kill -9 \$(pidof ctorrent)' -C 100 -U 0"
@@ -670,7 +667,7 @@ cd /tmp
ogCreateTorrent ()
{
# Variables locales.
-local ARGS ARG SOURCE IPTORRENT
+local ARGS ARG SOURCE EXT IPTORRENT
# Si se solicita, mostrar ayuda.
@@ -694,7 +691,8 @@ case "$1" in
ARG=4
;;
*) # Otros: repo, cache, cdrom (no se permiten caminos relativos).
- SOURCE=$(ogGetPath "$1" "$2.img")
+ EXT=$(ogGetImageType "$1" "$2")
+ SOURCE=$(ogGetPath "$1" "$2.$EXT")
ARG=3
;;
esac
@@ -827,7 +825,7 @@ fi
ogShareTorrent ()
{
# Variables locales.
-local ARGS SOURCE TARGET
+local ARGS SOURCE EXT TARGET
# Si se solicita, mostrar ayuda.
@@ -852,7 +850,8 @@ case "$1" in
ARG=3
;;
*) # Otros: repo, cache, cdrom (no se permiten caminos relativos).
- SOURCE=$(ogGetPath "$1" "$2.img" 2>/dev/null)
+ EXT=$(ogGetImageType "$1" "$2")
+ SOURCE=$(ogGetPath "$1" "$2.$EXT" 2>/dev/null)
ARG=2
;;
esac
@@ -932,11 +931,13 @@ case "$1" in
ARG=3
;;
*) # Otros: repo, cache, cdrom (no se permiten caminos relativos).
+ EXT=$(ogGetImageType "$1" "$2")
TARGETDIR=$(ogGetParentPath "$1" "$2")
ARG=2
;;
esac
#echo $TARGETDIR
+EXT=${EXT:-"img"}
# Error si no se reciben los argumentos ARG necesarios según la opcion.
[ "$#" -ne "$ARG" ] && ogRaiseError $OG_ERR_FORMAT && return $?
@@ -946,18 +947,18 @@ TARGETFILE=`basename ${!ARG}`
CACHE=`ogMountCache`
# Error si no existe el fichero torrent
-[ -r $TARGETDIR/$TARGETFILE.img.torrent ] || ogRaiseError $OG_ERR_NOTFOUND || return $?
+[ -r $TARGETDIR/$TARGETFILE.$EXT.torrent ] || ogRaiseError $OG_ERR_NOTFOUND || return $?
[ -d ${CACHE}/$OGIMG ] || ogRaiseError $OG_ERR_NOTFOUND || return $?
TimeToWaitForCloseAfterDownload=20 # tiempo que deseamos que el cliente este como semilla, despues de la descarga.
# Si el fichero ya se ha bajado antes de iniciar el ctorrent no se ejecuta el comando kill, siguen encendido siempre
# Comprobamos si se ha descargado antes, si es asi nos salimos
-Total=`ctorrent -s ${CACHE}/$OGIMG/${TARGETFILE}.img -c $TARGETDIR/$TARGETFILE.img.torrent|tail -n1|cut -f2 -d\(`
+Total=`ctorrent -s ${CACHE}/$OGIMG/${TARGETFILE}.$EXT -c $TARGETDIR/$TARGETFILE.$EXT.torrent|tail -n1|cut -f2 -d\(`
[ $Total == "100%)" ] && return 0
-echo "ctorrent -X 'sleep $TimeToWaitForCloseAfterDownload; kill -9 \$(pidof ctorrent)' $TARGETDIR/$TARGETFILE.img.torrent -s ${CACHE}/$OGIMG/${TARGETFILE}.img -b ${CACHE}/$OGIMG/$TARGETFILE.bf -C 100"
-ctorrent -X "sleep $TimeToWaitForCloseAfterDownload; kill -9 \$(pidof ctorrent)" $TARGETDIR/$TARGETFILE.img.torrent -s ${CACHE}/$OGIMG/${TARGETFILE}.img -b ${CACHE}/$OGIMG/$TARGETFILE.bf -C 100
+#echo "ctorrent -X 'sleep $TimeToWaitForCloseAfterDownload; kill -9 \$(pidof ctorrent)' $TARGETDIR/$TARGETFILE.img.torrent -s ${CACHE}/$OGIMG/${TARGETFILE}.img -b ${CACHE}/$OGIMG/$TARGETFILE.bf -C 100"
+ctorrent -X "sleep $TimeToWaitForCloseAfterDownload; kill -9 \$(pidof ctorrent)" $TARGETDIR/$TARGETFILE.$EXT.torrent -s ${CACHE}/$OGIMG/${TARGETFILE}.$EXT -b ${CACHE}/$OGIMG/$TARGETFILE.bf -C 100
[ -r ${CACHE}/$OGIMG/$TARGETFILE.bf ] && rm ${CACHE}/$OGIMG/$TARGETFILE.bf
}
diff --git a/client/nfsexport/scripts/createImage b/client/nfsexport/scripts/createImage
index 5fb414d2..74f8d2b2 100755
--- a/client/nfsexport/scripts/createImage
+++ b/client/nfsexport/scripts/createImage
@@ -9,7 +9,6 @@ if [ $# -ne 4 ]; then
exit $?
fi
-echo "[0] Inicio del proceso de creacion de imagen."
# Si el repositorio es CACHE comprobamos que exista
[ $3 == "REPO" -o $3 == "repo" ] || `ogFindCache >/dev/null` || ogRaiseError $OG_ERR_NOTFOUND "CACHE"|| exit $?
@@ -23,11 +22,12 @@ if [ $? != 0 ]; then
ogMakeDir "$3" $(dirname "/$4")
IMGDIR=$(ogGetParentPath "$3" "/$4") || exit $?
fi
-IMGFILE=$IMGDIR/$(basename "/$4").img
+IMGFILE=$IMGDIR/$(basename "/$4").pgz
# Renombrar el fichero de imagen si ya existe.
if [ -f "$IMGFILE" ]; then
echo "[10] Renombrar \"$IMGFILE\" por \"$IMGFILE.ant\"."
mv "$IMGFILE" "$IMGFILE.ant"
+ mv "$IMGFILE.torrent" "$IMGFILE.torrent.ant" 2>/dev/null
fi
# Mostrar información.
echo "[15] $PROG: Origen=$PART, Destino=$IMGFILE"
@@ -43,8 +43,6 @@ if [ $REDSIZE -lt $SIZE ]; then
fi
# Crear la imagen.
echo "[40] Crear imagen."
-#ejemplo test herramienta de clonacion
-#ogCreateImage "$@" partclone lzop
ogCreateImage "$@"
EXITCODE=$?
# Restaurar tamaño.
diff --git a/client/nfsexport/scripts/restoreImage b/client/nfsexport/scripts/restoreImage
index 9d653a08..dd559b5e 100755
--- a/client/nfsexport/scripts/restoreImage
+++ b/client/nfsexport/scripts/restoreImage
@@ -10,8 +10,8 @@ if [ $# -lt 4 ]; then
fi
# Procesar parámetros de entrada
-echo "[0] Inicio del proceso de restauracion de imagen."
-IMGFILE=$(ogGetPath "$1" "$2.img")
+IMGTYPE=$(ogGetImageType "$1" "$2")
+IMGFILE=$(ogGetPath "$1" "$2.$IMGTYPE")
PROTO=${5:-"UNICAST"}
if [ "$1" == "CACHE" -o "$1" == "cache" ]; then
IMGDIR=$(ogGetParentPath "$1" "$2")
@@ -24,28 +24,32 @@ if [ "$1" == "CACHE" -o "$1" == "cache" ]; then
# Procesar protocolos de transferencia.
case "$PROTO" in
UNICAST|unicast)
- # Copiar fichero del repositorio al caché, si no existe en caché o es anterior.
- if [ -z "$IMGFILE" ] || [ $(ogIsNewerFile "repo" "$2.img" "$IMGFILE") ]; then
- echo "[10] Copiando imagen \"$2\" del repositorio a cache local"
- ogCopyFile "repo" "$2.img" "$IMGDIR" || exit $?
- IMGFILE=$(ogGetPath "cache" "$2.img")
+ # Copiar fichero del repositorio al caché local.
+ IMGTYPE=$(ogGetImageType "repo" "$2")
+ IMGFILE=$(ogGetPath "$1" "$2.$IMGTYPE")
+ if [ -z "$IMGFILE" ] || [ $(ogIsNewerFile "repo" "$2.$IMGTYPE" "$IMGFILE") ]; then
+ echo "[10] Copiando imagen \"$2\" del repositorio a caché local"
+ ogCopyFile "repo" "$2.$IMGTYPE" "$IMGDIR" || exit $?
+ IMGFILE=$(ogGetPath "cache" "$2.$IMGTYPE")
fi
;;
MULTICAST|multicast)
if [ -z "$IMGFILE" ]; then
- echo "[10] Copiando imagen multicast \"$2\" del repositorio a cache 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"
+ IMGTYPE=$(ogGetImageType "repo" "$2")
+ PORTBASE=`echo $6 | cut -f1 -d:`
+ echo "ogMcastReceiverFile SOURCE:$PORTBASE TARGET:CACHE $2.$IMGTYPE"
+ ogMcastReceiverFile "$PORTBASE" "CACHE" "$2.$IMGTYPE" || exit $?
+ IMGFILE=$(ogGetPath "cache" "$2.$IMGTYPE")
fi
;;
TORRENT|torrent)
- echo "[9] copiando el fichero torrent Unicast \"$2\" del repositorio a cache local"
- ogCopyFile "repo" "$2.img.torrent" "$IMGDIR" || exit $?
- echo "[10] descargando imagen torrent($6) \"$2\" del repositorio a cache 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"
+ IMGTYPE=$(ogGetImageType "repo" "$2")
+ ogCopyFile "repo" "$2.$IMGTYPE.torrent" "$IMGDIR" || exit $?
+ echo "[10] descargando imagen torrent($6) \"$2\" del repositorio a caché local"
+ ogTorrentStart "CACHE" "$2.$IMGTYPE.torrent" "peer:60" || exit $?
+ IMGFILE=$(ogGetPath "cache" "$2.$IMGTYPE")
;;
*) # Protocolo desconocido.
ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $PROG REPO|CACHE imagen ndisco nparticion [ UNICAST|MULTICAST|TORRENT opciones ]"
@@ -58,18 +62,17 @@ if [ -z "$IMGFILE" ]; then
fi
PART=$(ogDiskToDev "$3" "$4") || exit $?
-
# Restaurar la imagen.
-echo "[40] Restaurar imagen $IMGFILE en $PART"
+echo "[40] Restaurar imagen en $PART"
ogRestoreImage "$@" || exit $?
# Restaurar tamaño.
echo "[80] Extender sistema de archivos."
ogExtendFs $3 $4
# Cambiar nombre en sistemas Windows y quitar usuario de acceso por defecto.
if [ "$(ogGetOsType $3 $4)" = "Windows" ]; then
- echo "[90] Cambiar nombre Windows a \"$HOST\" y usuario de acceso."
HOST=$(ogGetHostname)
HOST=${HOST:-"pc"}
+ echo "[90] Cambiar nombre Windows a \"$HOST\" y usuario de acceso."
ogSetWindowsName $3 $4 "$HOST"
ogSetWinlogonUser $3 $4 " "
fi