Ver código fonte

Merge branch 'develop' of https://repogit.open6hosting.com/git/smartos-bin into develop

pull/1/head
pinkfeet 7 anos atrás
pai
commit
35fb3d51fc
2 arquivos alterados com 107 adições e 8 exclusões
  1. +17
    -8
      zonebackuptofile.sh
  2. +90
    -0
      zonemigrate.sh

+ 17
- 8
zonebackuptofile.sh Ver arquivo

@@ -2,16 +2,25 @@

usage()
{
echo "Usage: $0 -z UUID" >&2
echo "Usage: $0 -z UUID -d days -r folder -s server" >&2
exit 1
}

while getopts "z:" opt;
while getopts "z:d:r:s:" opt;
do
case "$opt" in
z)
UUID=$OPTARG
;;
d)
DAYS=$OPTARG
;;
r)
FOLDER=$OPTARG
;;
s)
SERVER=$OPTARG
;;
*)
usage
;;
@@ -20,15 +29,15 @@ done

shift $((OPTIND-1))

if [ -z "${UUID}" ]; then
if [ -z "${UUID}" ] || [ -z "${DAYS}" ] || [ -z "${FOLDER}" ] || [ -z "${SERVER}" ]; then
usage
fi

BRAND=`/usr/sbin/vmadm get $UUID | json brand | tr -d '\n'`

RUTADESTINO="/zones/tools/mounts"
RUTAORIGEN="/export/ftpbackup/ns3043697.ip-164-132-169.eu"
SERVIDOR="ftpback-rbx3-470.ovh.net"
RUTAORIGEN="/export/ftpbackup/${FOLDER}"
SERVIDOR="${SERVER}"

mkdir -p $RUTADESTINO
mount $SERVIDOR:$RUTAORIGEN $RUTADESTINO
@@ -47,8 +56,8 @@ if [ $? != 0 ]; then
exit
fi

# mantenemos los backups de los ultimos dos dias
find $RUTADESTINO/$UUID -type f -mtime +3 -delete
# mantain backups of the last N days
find $RUTADESTINO/$UUID -type f -mtime +$DAYS -delete

snapshot()
{
@@ -58,7 +67,7 @@ snapshot()

snapshot $UUID

if [ $BRAND = "kvm" ]; then
if [ $BRAND = "kvm" ] || [ $BRAND = "bhyve" ] ; then
snapshot $UUID-disk0
elif [ $BRAND = "bhyve" ]; then
snapshot $UUID-disk0


+ 90
- 0
zonemigrate.sh Ver arquivo

@@ -0,0 +1,90 @@
#!/usr/bin/bash

if [ "$#" -ne 2 ]; then
echo "Illegal number of parameters"
echo "Usage: $0 {UUID} {DESTINYNODE}"
exit 1
fi

UUID=$1
NODODESTINO=$2

KEYFILE="/usbkey/ssh/id_rsa"
DESTINYPORT="2221"
SSH="ssh -i $KEYFILE -p $DESTINYPORT"
SCP="scp -P $DESTINYPORT -i $KEYFILE"
CFG="/zones/tools/cfg"
BRAND=`/usr/sbin/vmadm get ${UUID} | json brand | tr -d '\n'`
ZONEPATH=`vmadm get ${UUID} | json zonepath | tr -d '\n' | sed 's/\///'`

# chequeamos la existencia del archivo llave
if [ ! -f $KEYFILE ]; then
echo "ssh $KEYFILE inexistent!"
echo "Create it please"
exit 1
fi

snapshot()
{
zfs snapshot $1@`date +%Y%m%d`
zfs send $1@`date +%Y%m%d` | $SSH $NODODESTINO zfs receive $1
zfs snapshot $1@`date +%Y%m%d`.incremental
zfs send -i $1@`date +%Y%m%d` $1@`date +%Y%m%d`.incremental | $SSH $NODODESTINO zfs receive $1
}

# capturamos el alias que vmadm usa en base64 y que da problemas con el mitico zonecfg

ALIAS=`vmadm get ${UUID} | json alias | tr -d '\n'`
zonecfg -z ${UUID} "select attr name=alias; set value=temporal; end"

# creamos snapshot, lo enviamos, creamos incremental y la enviamos

snapshot ${ZONEPATH}

# verificamos si estamos tratando con una kvm y si es asi la respaldamos
echo "verificamos filesystems (kvm) adicionales..."

if [ $BRAND = "kvm" ]; then
FILESYSTEM=`vmadm get ${UUID} | json disks.0.zfs_filesystem | tr -d '\n'`
snapshot ${FILESYSTEM}
fi

# verificamos si tenemos datasets adicionales y los enviamos
echo "verificamos datasets adicionales..."

DATASET=`vmadm get ${UUID} | json datasets.0 | tr -d '\n'`

if [ -n "${DATASET}" ]; then
snapshot ${DATASET}
fi

# exportamos configuracion
echo "exportamos configuracion..."

zonecfg -z ${UUID} export > $CFG/${UUID}.cfg
$SCP $CFG/${UUID}.cfg $NODODESTINO:$CFG/${UUID}.cfg

# destino
echo "enviamos config a destino..."

$SSH $NODODESTINO zonecfg -z ${UUID} < $CFG/${UUID}.cfg
$SSH $NODODESTINO zoneadm -z ${UUID} attach
$SSH $NODODESTINO zoneadm -z ${UUID} halt

# reestablecemos el alias que usa vmadm

$SSH $NODODESTINO vmadm update ${UUID} alias=${ALIAS}
vmadm update ${UUID} alias=${ALIAS}

# detenemos la zona en local

zoneadm -z ${UUID} halt

# iniciamos la zona en remoto

$SSH $NODODESTINO zoneadm -z ${UUID} boot


# TODO:
# - puede haber mas de un FILESYSTEM en la zona, necesitamos iterar por el array y lanzar la funcion snapshot sobre cada uno de ellos
# - puede haber mas de un DATASET en la zona, necesitamos iterar por el array y lanzar la funcion snapshot sobre cada uno

Carregando…
Cancelar
Salvar