diff options
author | ramon <ramongomez@us.es> | 2010-11-10 12:52:02 +0000 |
---|---|---|
committer | ramon <ramongomez@us.es> | 2010-11-10 12:52:02 +0000 |
commit | 0fbc05e7e6dbf609ab41c04c3061982fba4bdaa0 (patch) | |
tree | 2b86adc0409386b3ffaf6c4e66196f29afd659e9 /client | |
parent | f20ea704eee9ae83e6a2c26932f4a86edb5e2213 (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-x | client/engine/Image.lib | 130 | ||||
-rwxr-xr-x[-rw-r--r--] | client/engine/Protocol.lib | 41 | ||||
-rwxr-xr-x | client/nfsexport/scripts/createImage | 6 | ||||
-rwxr-xr-x | client/nfsexport/scripts/restoreImage | 43 |
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 |