[f8f4dfa] | 1 | #!/bin/bash |
---|
[e42f34e] | 2 | # Scirpt de ejemplo para restaurar una imagen. |
---|
[f8f4dfa] | 3 | # (puede usarse como base para el programa de restauración de imágenes usado por OpenGNSys Admin). |
---|
| 4 | |
---|
[f5432db7] | 5 | TIME1=$SECONDS |
---|
[f8f4dfa] | 6 | PROG="$(basename $0)" |
---|
[87a7a799] | 7 | if [ $# -lt 4 ]; then |
---|
[bba08bf] | 8 | ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $PROG REPO|CACHE imagen ndisco nparticion [ UNICAST|MULTICAST|TORRENT ] [opciones protocolo]" |
---|
[f8f4dfa] | 9 | exit $? |
---|
| 10 | fi |
---|
| 11 | |
---|
| 12 | # Procesar parámetros de entrada |
---|
[914d834] | 13 | IMGTYPE="img" |
---|
[0fbc05e] | 14 | IMGFILE=$(ogGetPath "$1" "$2.$IMGTYPE") |
---|
[87a7a799] | 15 | PROTO=${5:-"UNICAST"} |
---|
[e42f34e] | 16 | if [ "$1" == "CACHE" -o "$1" == "cache" ]; then |
---|
[c7d9af7] | 17 | IMGDIR=$(ogGetParentPath "$1" "$2") |
---|
| 18 | # Si no existe el directorio de la imagen, crearlo. |
---|
[b9a5881] | 19 | if [ -z "$IMGDIR" ]; then |
---|
[180a07dd] | 20 | echo "[5] Creando directorio de imagen \"$1, ${2%/*}\"." |
---|
[c7d9af7] | 21 | ogMakeDir "$1" "${2%/*}" || ogRaiseError $OG_ERR_NOTFOUND "$1, ${2%/*}" || exit $? |
---|
| 22 | fi |
---|
| 23 | IMGDIR=$(ogGetParentPath "$1" "$2") || ogRaiseError $OG_ERR_NOTFOUND "$1, ${2%/*}" || exit $? |
---|
[87a7a799] | 24 | # Procesar protocolos de transferencia. |
---|
| 25 | case "$PROTO" in |
---|
| 26 | UNICAST|unicast) |
---|
[0fbc05e] | 27 | # Copiar fichero del repositorio al caché local. |
---|
[914d834] | 28 | #IMGTYPE=$(ogGetImageType "repo" "$2") |
---|
[9c81eb1e] | 29 | IMGFILE=$(ogGetPath "cache" "$2.$IMGTYPE") |
---|
[0fbc05e] | 30 | if [ -z "$IMGFILE" ] || [ $(ogIsNewerFile "repo" "$2.$IMGTYPE" "$IMGFILE") ]; then |
---|
| 31 | echo "[10] Copiando imagen \"$2\" del repositorio a caché local" |
---|
[9c81eb1e] | 32 | ogCopyFile "repo" "$2.$IMGTYPE" "$IMGDIR" |
---|
| 33 | fi |
---|
| 34 | # Comprobar si existe el fichero en caché y no en el repositorio. |
---|
| 35 | if [ -z "$IMGFILE" ]; then |
---|
[914d834] | 36 | #IMGTYPE=$(ogGetImageType "cache" "$2") |
---|
[0fbc05e] | 37 | IMGFILE=$(ogGetPath "cache" "$2.$IMGTYPE") |
---|
[9c81eb1e] | 38 | if [ -z "$IMGFILE" ]; then |
---|
| 39 | ogRaiseError $OG_ERR_NOTFOUND "cache, $2.$IMGTYPE" |
---|
| 40 | exit $? |
---|
| 41 | fi |
---|
[87a7a799] | 42 | fi |
---|
| 43 | ;; |
---|
| 44 | MULTICAST|multicast) |
---|
[bba08bf] | 45 | if [ -z "$IMGFILE" ]; then |
---|
[0fbc05e] | 46 | echo "[10] Copiando imagen multicast \"$2\" del repositorio a caché local" |
---|
[914d834] | 47 | #IMGTYPE=$(ogGetImageType "repo" "$2") |
---|
[0fbc05e] | 48 | PORTBASE=`echo $6 | cut -f1 -d:` |
---|
| 49 | echo "ogMcastReceiverFile SOURCE:$PORTBASE TARGET:CACHE $2.$IMGTYPE" |
---|
| 50 | ogMcastReceiverFile "$PORTBASE" "CACHE" "$2.$IMGTYPE" || exit $? |
---|
| 51 | IMGFILE=$(ogGetPath "cache" "$2.$IMGTYPE") |
---|
[bba08bf] | 52 | fi |
---|
[87a7a799] | 53 | ;; |
---|
| 54 | TORRENT|torrent) |
---|
[0fbc05e] | 55 | echo "[9] copiando el fichero torrent Unicast \"$2\" del repositorio a caché local" |
---|
[914d834] | 56 | #IMGTYPE=$(ogGetImageType "repo" "$2") |
---|
[0fbc05e] | 57 | ogCopyFile "repo" "$2.$IMGTYPE.torrent" "$IMGDIR" || exit $? |
---|
| 58 | echo "[10] descargando imagen torrent($6) \"$2\" del repositorio a caché local" |
---|
| 59 | ogTorrentStart "CACHE" "$2.$IMGTYPE.torrent" "peer:60" || exit $? |
---|
| 60 | IMGFILE=$(ogGetPath "cache" "$2.$IMGTYPE") |
---|
[87a7a799] | 61 | ;; |
---|
| 62 | *) # Protocolo desconocido. |
---|
| 63 | ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $PROG REPO|CACHE imagen ndisco nparticion [ UNICAST|MULTICAST|TORRENT opciones ]" |
---|
| 64 | exit $? |
---|
| 65 | esac |
---|
[c7d9af7] | 66 | fi |
---|
| 67 | if [ -z "$IMGFILE" ]; then |
---|
| 68 | ogRaiseError $OG_ERR_NOTFOUND "$1, $2" |
---|
| 69 | exit $? |
---|
[e42f34e] | 70 | fi |
---|
[f8f4dfa] | 71 | PART=$(ogDiskToDev "$3" "$4") || exit $? |
---|
[41d9755] | 72 | |
---|
[f8f4dfa] | 73 | # Restaurar la imagen. |
---|
[0fbc05e] | 74 | echo "[40] Restaurar imagen en $PART" |
---|
[1c04494] | 75 | ogRestoreImage "$@" || exit $? |
---|
[f8f4dfa] | 76 | # Restaurar tamaño. |
---|
[180a07dd] | 77 | echo "[80] Extender sistema de archivos." |
---|
[f5432db7] | 78 | ogExtendFs $3 $4 |
---|
[b0ff94d] | 79 | # Llamar al script de post-configuración del sistema operativo. |
---|
| 80 | echo "[90] Post-configuracion de aranque del sistema." |
---|
| 81 | configureOs $3 $4 |
---|
| 82 | |
---|
[f5432db7] | 83 | TIME=$[SECONDS-TIME1] |
---|
[bfeb89a] | 84 | echo "[100] Duracion de la operacion $[TIME/60]m $[TIME%60]s" |
---|
[f8f4dfa] | 85 | |
---|