#565 adaptacion diferenciales al cliente 1.0.4., extension diferenciles img.diff
git-svn-id: https://opengnsys.es/svn/branches/version1.0@4059 a21b9725-9963-47de-94b9-378ad31fedc9remotes/github/debian-pkg
parent
be48687d99
commit
f456755884
|
@ -21,13 +21,36 @@ MCASTLOGBASE=$BASEDIR/log/mcastlog
|
|||
MCASTLOG=$MCASTLOGBASE/ogAdmRepoMcast.`date +%Y%m%d-%H%M%S`
|
||||
REPODIR="$BASEDIR/images/"
|
||||
|
||||
# Para las sincronizadas
|
||||
BACKUP=$(grep BACKUP /opt/opengnsys/client/etc/engine.cfg| cut -d= -f2)
|
||||
# FS segun kernel. ext4 para < 3.7, para >= BTRFS
|
||||
#KERNEL=$(file $BASEDIR/tftpboot/ogclient/ogvmlinuz |awk '{print $9}')
|
||||
#[[ "$KERNEL" < "3.7" ]] && IMGFS="EXT4" || IMGFS="BTRFS"
|
||||
KERNEL=$(file $BASEDIR/tftpboot/ogclient/ogvmlinuz |awk -F . '{print $2}')
|
||||
[ $KERNEL -lt 7 ] && IMGFS="EXT4" || IMGFS="BTRFS"
|
||||
|
||||
# Añade registro de incidencias.
|
||||
function echolog () {
|
||||
date +"%Y%m%d-%H%M%S $*" >> $REPOLOG
|
||||
}
|
||||
|
||||
function mountImage () {
|
||||
#@param 1 image_file
|
||||
#@param 2 mount_dir
|
||||
#@param 3 openciones mount
|
||||
[ "$3" != "" ] && OPTMOUNT=" -o $3 "
|
||||
# Si está montado nada que hacer
|
||||
df |grep "$2$" 2>&1 >/dev/null && return 0
|
||||
if [ $IMGFS == "EXT4" ]; then
|
||||
echolog "mount $OPTMOUNT -t ext4 $1 $2"
|
||||
mount $OPTMOUNT -t ext4 $1 $2
|
||||
else
|
||||
echolog "mount $OPTMOUNT -o compress=lzo $1 $2"
|
||||
mount $OPTMOUNT -o compress=lzo "$1" "$2"
|
||||
fi
|
||||
return $?
|
||||
}
|
||||
|
||||
mkdir -p $MCASTLOGBASE
|
||||
|
||||
|
||||
|
@ -36,6 +59,9 @@ PARM2=$(echo $PARM | cut -f2 -d" ")
|
|||
PARM3=$(echo $PARM | cut -f3 -d" ")
|
||||
PARM4=$(echo $PARM | cut -f4 -d" ")
|
||||
|
||||
# Determinamos el tipo de sistema de fichero de las imagenes segun el kernel que tenga
|
||||
|
||||
|
||||
case "$PARM1" in
|
||||
START_MULTICAST)
|
||||
#1 START_MULTICAST
|
||||
|
@ -60,30 +86,37 @@ case "$PARM1" in
|
|||
#2 nombre imagen
|
||||
#3 tipo de imagen [ img | diff ]
|
||||
#4 tamaño imagen
|
||||
MOUNTDIR="$REPODIR/mount/$PARM2"
|
||||
LOOPDEVICE=$(losetup -f)
|
||||
DIRMOUNT="$REPODIR/mount/$PARM2"
|
||||
if [ "$PARM3" == "img" ] ; then
|
||||
IMGEXT="img"
|
||||
else
|
||||
IMGEXT="img.diff"
|
||||
MOUNTDIR="$MOUNTDIR.diff"
|
||||
DIRMOUNT="$DIRMOUNT.diff"
|
||||
fi
|
||||
IMGFILE="$REPODIR/$PARM2.$IMGEXT"
|
||||
IMGDIR="$(dirname $IMGFILE)"
|
||||
[ -d $IMGDIR ] || mkdir -p $IMGDIR
|
||||
|
||||
mkdir -p "$MOUNTDIR"
|
||||
mkdir -p "$DIRMOUNT"
|
||||
|
||||
SIZEREQUIRED="$PARM4"
|
||||
|
||||
# Si existe la imagen hacemos copia de seguridad y la redimesionamos
|
||||
if [ -f "$IMGFILE" ]; then
|
||||
echolog "Redimensionamos la imagen $IMGFILE al tamaño necesario: $SIZEREQUIRED"
|
||||
# Copia de seguridad de la imagen
|
||||
# Si la imagen esta montada la desmonto
|
||||
if [ -r "$MOUNTDIR/ogimg.info" ]; then
|
||||
echolog "umount $MOUNTDIR"
|
||||
umount "$MOUNTDIR"
|
||||
[ $? -ne 0 ] && echolog "Error: No podemos desmontar la imagen para hacer copia de seguridad" && exit 1
|
||||
# TODO modificar ogGetImageSize
|
||||
IMGSIZE=$(ls -l --block-size=1024 $IMGFILE| cut -f5 -d" ")
|
||||
|
||||
if [ "$BACKUP" == "true" -o $IMGSIZE -lt $SIZEREQUIRED ]; then
|
||||
# Si la imagen esta montada la desmonto
|
||||
if [ -r "$DIRMOUNT/ogimg.info" ]; then
|
||||
echolog "umount $DIRMOUNT"
|
||||
umount "$DIRMOUNT"
|
||||
[ $? -ne 0 ] && echolog "Error: No podemos desmontar la imagen para hacer copia de seguridad o redimensionar" && exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Copia de seguridad de la imagen
|
||||
if [ "$BACKUP" == "true" ]; then
|
||||
echolog "Copia de seguridad de la imagen anterior"
|
||||
echolog "cp $IMGFILE $IMGFILE.ant"
|
||||
|
@ -93,41 +126,48 @@ case "$PARM1" in
|
|||
fi
|
||||
|
||||
# Redimensionamos la imagen al tamaño necesario
|
||||
# TODO modificar ogGetImageSize
|
||||
IMGSIZE=$(ls -l --block-size=1024 $IMGFILE| cut -f5 -d" ")
|
||||
if [ $IMGSIZE -lt $SIZEREQUIRED ];then
|
||||
echolog "Redimensionamos la imagen $IMGFILE al tamaño necesario: $SIZEREQUIRED"
|
||||
echolog "truncate --size=\">$SIZEREQUIRED\"k $IMGFILE"
|
||||
truncate --size=">$SIZEREQUIRED"k $IMGFILE 2>&1 > $REPOLOG
|
||||
# Montamos la imagen, si da error nos salimos
|
||||
mount -o compress=lzo "$IMGFILE" "$MOUNTDIR"
|
||||
echolog "btrfs filesystem resize max $MOUNTDIR"
|
||||
btrfs filesystem resize max "$MOUNTDIR" 2>&1 > $REPOLOG
|
||||
|
||||
if [ $IMGFS == "EXT4" ]; then
|
||||
losetup $LOOPDEVICE "$IMGFILE"
|
||||
echolog "resize2fs -f $LOOPDEVICE"
|
||||
resize2fs -f $LOOPDEVICE &> $REPOLOG
|
||||
else
|
||||
mount -o compress=lzo "$IMGFILE" "$DIRMOUNT"
|
||||
echolog "btrfs filesystem resize max $DIRMOUNT"
|
||||
btrfs filesystem resize max "$DIRMOUNT" 2>&1 > $REPOLOG
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
|
||||
# Si no existe la imagen creamos el fichero.
|
||||
else
|
||||
echolog "Creamos la imagen $IMGFILE al tamaño necesario: $SIZEREQUIRED"
|
||||
echolog dd if=/dev/zero of=$IMGFILE bs=1024 count=$SIZEREQUIRED
|
||||
dd if=/dev/zero of=$IMGFILE bs=1024 count=$SIZEREQUIRED
|
||||
#Formateamos imagen
|
||||
LOOPDEVICE=$(losetup -f)
|
||||
echo losetup $LOOPDEVICE "$IMGFILE"
|
||||
losetup $LOOPDEVICE "$IMGFILE"
|
||||
echo mkfs.btrfs -L ${PARM2##*\/} $LOOPDEVICE
|
||||
mkfs.btrfs -L ${PARM2##*\/} $LOOPDEVICE #&> $OGLOGCOMMAND
|
||||
|
||||
if [ $IMGFS == "EXT4" ] ; then
|
||||
echolog " mkfs.ext4 -i 4096 -b 4096 -L ${PARM2##*\/} $LOOPDEVICE"
|
||||
mkfs.ext4 -i 4096 -b 4096 -L ${PARM2##*\/} $LOOPDEVICE
|
||||
else
|
||||
echolog mkfs.btrfs -L ${PARM2##*\/} $LOOPDEVICE
|
||||
mkfs.btrfs -L ${PARM2##*\/} $LOOPDEVICE #&> $OGLOGCOMMAND
|
||||
fi
|
||||
fi
|
||||
# Montamos la imagen.
|
||||
echolog "mount -o compress=lzo $IMGFILE $MOUNTDIR"
|
||||
mount -o compress=lzo "$IMGFILE" "$MOUNTDIR"
|
||||
[ "$?" == "0" -o "$?" == "32" ] || (echolog "Error al crear/redimensionar la imagen"; exit 1)
|
||||
touch "$MOUNTDIR/ogimg.info"
|
||||
mountImage "$IMGFILE" "$DIRMOUNT"
|
||||
[ "$?" == "0" ] || (echo salida=$?; echolog "Error al crear/redimensionar la imagen"; exit 1)
|
||||
|
||||
touch "$DIRMOUNT/ogimg.info"
|
||||
TIME2=$[SECONDS-TIME]
|
||||
echolog "Fin creación/redimension de la imagen: $[TIME2/60]m $[TIME2%60]s"
|
||||
# Si existe dispositivo loop lo borramos.
|
||||
[ $LOOPDEVICE ] && losetup -d $LOOPDEVICE
|
||||
[ $LOOPDEVICE ] && losetup -a| grep $LOOPDEVICE &> /dev/null && losetup -d $LOOPDEVICE
|
||||
# TODO: comprobar que no se quede el losetup bloqueado.
|
||||
|
||||
;;
|
||||
|
@ -136,31 +176,30 @@ case "$PARM1" in
|
|||
#1 MOUNT_IMAGE
|
||||
#2 nombre imagen
|
||||
#3 tipo de imagen [ img | diff ]
|
||||
MOUNTDIR="$REPODIR/mount/$PARM2"
|
||||
DIRMOUNT="$REPODIR""mount/$PARM2"
|
||||
if [ "$PARM3" == "img" ] ; then
|
||||
IMGEXT="img"
|
||||
else
|
||||
IMGEXT="img.diff"
|
||||
MOUNTDIR="$MOUNTDIR.diff"
|
||||
DIRMOUNT="$DIRMOUNT.diff"
|
||||
fi
|
||||
IMGFILE="$REPODIR/$PARM2.$IMGEXT"
|
||||
echolog "Montamos la imagen $IMGFILE "
|
||||
mkdir -p "$MOUNTDIR"
|
||||
mount -o ro,compress=lzo "$IMGFILE" "$MOUNTDIR"
|
||||
[ "$?" == "0" ] || (echolog "Error al montar la imagen"; exit 1)
|
||||
mkdir -p "$DIRMOUNT"
|
||||
mountImage "$IMGFILE" "$DIRMOUNT" ro || (echolog "Error al montar la imagen"; exit 1)
|
||||
;;
|
||||
UMOUNT_IMAGE)
|
||||
# Desmontamos el fichero imagen.
|
||||
# Si el directorio esta ocupado no se desmontará
|
||||
# Si el directorio esta ocupado no se desmontará
|
||||
#1 UMOUNT_IMAGE
|
||||
#2 nombre imagen
|
||||
#3 tipo de imagen [ img | diff ]
|
||||
IMGTYPE="$PARM3"
|
||||
MOUNTDIR="$REPODIR/mount/$PARM2"
|
||||
[ "$IMGTYPE" == "diff" ] && MOUNTDIR="$MOUNTDIR.$IMGTYPE"
|
||||
DIRMOUNT="$REPODIR/mount/$PARM2"
|
||||
[ "$IMGTYPE" == "diff" ] && DIRMOUNT="$DIRMOUNT.$IMGTYPE"
|
||||
echolog "Desmontamos la imagen $PARM2 $PARM3 "
|
||||
umount $MOUNTDIR
|
||||
rmdir $MOUNTDIR
|
||||
umount $DIRMOUNT
|
||||
rmdir $DIRMOUNT
|
||||
|
||||
;;
|
||||
REDUCE_IMAGE)
|
||||
|
@ -168,38 +207,58 @@ case "$PARM1" in
|
|||
#1 REDUCE_IMAGE
|
||||
#2 Nombre Imagen
|
||||
#3 Tipo de imagen [ img |diff ]
|
||||
MOUNTDIR="$REPODIR""mount/${PARM2}"
|
||||
DIRMOUNT="$REPODIR""mount/${PARM2}"
|
||||
if [ "$PARM3" == "img" ] ; then
|
||||
IMGEXT="img"
|
||||
else
|
||||
IMGEXT="img.diff"
|
||||
MOUNTDIR="$MOUNTDIR.diff"
|
||||
DIRMOUNT="$DIRMOUNT.diff"
|
||||
fi
|
||||
IMGFILE="$REPODIR$PARM2.$IMGEXT"
|
||||
[ ! -f $IMGFILE ] && echolog "Imagen $IMGFILE no existe" && exit 1
|
||||
|
||||
[ -d $MOUNTDIR ] || mkdir $MOUNTDIR
|
||||
mount -o compress=lzo "$IMGFILE" "$MOUNTDIR"
|
||||
AVAILABLE=$(df -k|grep $MOUNTDIR|awk '{print $4}')
|
||||
# Solo funciona si la imagen es ext4, si no nos salimos sin error
|
||||
file $IMGFILE |grep -i -e " ext4 filesystem " 2>&1 > /dev/null || exit 0
|
||||
|
||||
[ -d $DIRMOUNT ] || mkdir $DIRMOUNT
|
||||
mountImage "$IMGFILE" "$DIRMOUNT" || (echolog "Error al montar la imagen"; exit 1)
|
||||
|
||||
# Si el espacio libre menor que 500Mb desmontamos la imagen y nos salimos
|
||||
if [ $AVAILABLE -lt 500000 ]; then
|
||||
AVAILABLE=$(df -k|grep $DIRMOUNT|awk '{print $4}')
|
||||
if [ $AVAILABLE -lt 200000 ]; then
|
||||
echolog "reducir imagen REPO $PARM2 $IMGEXT. tamaño minimo, nada que hacer"
|
||||
umount $MOUNTDIR
|
||||
rmdir $MOUNTDIR
|
||||
umount $DIRMOUNT
|
||||
rmdir $DIRMOUNT
|
||||
exit 0
|
||||
fi
|
||||
|
||||
USED=$(df -k|grep $MOUNTDIR|awk '{print $3}')
|
||||
let ENDSIZE=USED+500000
|
||||
echolog "reducir imagen REPO $PARM2 $IMGEXT, tamaño final: $ENDSIZE"
|
||||
echolog btrfs filesystem resize "$ENDSIZE"k $MOUNTDIR
|
||||
btrfs filesystem resize "$ENDSIZE"k $MOUNTDIR
|
||||
umount $MOUNTDIR
|
||||
echolog "truncate --size=\"$ENDSIZE\"k $IMGFILE"
|
||||
truncate --size="$ENDSIZE"k $IMGFILE
|
||||
# Calculamos la diferencia entre el tamaño interno y externo
|
||||
EXTSIZE=$(ls -l --block-size=1024 $IMGFILE | cut -f5 -d" ")
|
||||
INTSIZE=$(df -k|grep "$DIRMOUNT"|awk '{print $2}')
|
||||
let EDGESIZE=$EXTSIZE-$INTSIZE
|
||||
|
||||
echolog "reducir imagen REPO $PARM2 $IMGEXT, tamaño final: $ENDSIZE"
|
||||
umount $DIRMOUNT
|
||||
LOOPDEVICE=$(losetup -f)
|
||||
losetup $LOOPDEVICE "$IMGFILE"
|
||||
|
||||
# Redimensiono sistema de ficheros
|
||||
echolog "resize2fs -fpM $LOOPDEVICE "
|
||||
resize2fs -fpM $LOOPDEVICE # 2>&1 > $REPOLOG
|
||||
mountImage "$IMGFILE" "$DIRMOUNT"
|
||||
# Calculamos el tamaño final del archivo
|
||||
INTSIZE=$(df -k|grep "$DIRMOUNT"|awk '{print $2}')
|
||||
let EXTSIZE=$INTSIZE+$EDGESIZE
|
||||
umount $DIRMOUNT
|
||||
# Si existe dispositivo loop lo borramos.
|
||||
[ $LOOPDEVICE ] && losetup -a| grep $LOOPDEVICE &> /dev/null && losetup -d $LOOPDEVICE
|
||||
# Corto el archivo al tamaño del sistema de ficheros
|
||||
echo "truncate --size=\"$EXTSIZE\"k $IMGFILE"
|
||||
echolog "truncate --size=\"$EXTSIZE\"k $IMGFILE"
|
||||
truncate --size="$EXTSIZE"k $IMGFILE
|
||||
|
||||
rmdir $DIRMOUNT
|
||||
|
||||
rmdir $MOUNTDIR
|
||||
;;
|
||||
default)
|
||||
echolog "Solicitud con parametros \"$PARM\" no realizada, no registrada o con errores"
|
||||
|
|
|
@ -45,7 +45,6 @@ if [ "$1" == "CACHE" -o "$1" == "cache" ]; then
|
|||
if [ -f "$IMGFILE" ]; then
|
||||
# Si la imagen esta montada la desmonto
|
||||
if [ -r "$DIRMOUNT/ogimg.info" ]; then
|
||||
echo "umount $DIRMOUNT" | tee -a $OGLOGSESSION $OGLOGFILE
|
||||
umount "$DIRMOUNT"
|
||||
[ $? -ne 0 ] && return $(ogRaiseError $OG_ERR_DONTUNMOUNT_IMAGE "$1 $2.$IMGEXT"; echo $?)
|
||||
fi
|
||||
|
@ -62,27 +61,41 @@ if [ "$1" == "CACHE" -o "$1" == "cache" ]; then
|
|||
if [ $IMGSIZE -lt $SIZEREQUIRED ];then
|
||||
echo " $MSG_SYNC_RESIZE" | tee -a $OGLOGSESSION $OGLOGFILE
|
||||
echo " truncate --size=>$SIZEREQUIRED k $IMGFILE" | tee -a $OGLOGSESSION $OGLOGFILE
|
||||
truncate --size=">$SIZEREQUIRED"k $IMGFILE &> $OGLOGCOMMAND
|
||||
echo " mount -o compress=lzo $IMGFILE $DIRMOUNT"
|
||||
mount -o compress=lzo "$IMGFILE" "$DIRMOUNT" &> $OGLOGCOMMAND
|
||||
echo " btrfs filesystem resize max $DIRMOUNT"
|
||||
btrfs filesystem resize max "$DIRMOUNT" &> $OGLOGCOMMAND
|
||||
truncate --size=">$SIZEREQUIRED"k "$IMGFILE" &> $OGLOGCOMMAND
|
||||
# FS de la imagen segun la version del kernel: < 3.7 ext4, si >= btrfs
|
||||
#if [[ "$(uname -r)" < "3.7" ]]; then
|
||||
if [ $(uname -r|cut -d. -f2) -lt 7 ]; then
|
||||
losetup $LOOPDEVICE "$IMGFILE"
|
||||
echo " resize2fs -f $LOOPDEVICE"
|
||||
resize2fs -f $LOOPDEVICE &> $OGLOGCOMMAND
|
||||
|
||||
else
|
||||
echo " ogMountImage $1 "$2" $3"
|
||||
ogMountImage $1 "$2" $3
|
||||
echo " btrfs filesystem resize max $DIRMOUNT"
|
||||
btrfs filesystem resize max "$DIRMOUNT" &> $OGLOGCOMMAND
|
||||
fi
|
||||
fi
|
||||
else
|
||||
echo " dd if=/dev/zero of=$IMGFILE bs=1024 count=$SIZEREQUIRED"
|
||||
dd if=/dev/zero of="$IMGFILE" bs=1024 count=$SIZEREQUIRED &> $OGLOGCOMMAND
|
||||
#Formateamos imagen
|
||||
losetup $LOOPDEVICE $IMGFILE
|
||||
echo " mkfs.btrfs -L ${2##*\/} $LOOPDEVICE "
|
||||
mkfs.btrfs -L "${2##*\/}" $LOOPDEVICE &> $OGLOGCOMMAND
|
||||
# FS de la imagen segun la version del kernel: < 3.7 ext4, si >= btrfs
|
||||
#if [[ "$(uname -r)" < "3.7" ]]; then
|
||||
if [ $(uname -r|cut -d. -f2) -lt 7 ]; then
|
||||
echo " mkfs.ext4 -i 4096 -b 4096 -L "${2##*\/}" $LOOPDEVICE"
|
||||
mkfs.ext4 -i 4096 -b 4096 -L "${2##*\/}" $LOOPDEVICE &> $OGLOGCOMMAND
|
||||
else
|
||||
echo " mkfs.btrfs -L ${2##*\/} $LOOPDEVICE "
|
||||
mkfs.btrfs -L "${2##*\/}" $LOOPDEVICE &> $OGLOGCOMMAND
|
||||
fi
|
||||
fi
|
||||
echo " mount -o compress=lzo $IMGFILE $DIRMOUNT"
|
||||
mount -o compress=lzo "$IMGFILE" "$DIRMOUNT" &> $OGLOGCOMMAND
|
||||
# si ya esta montado $? = 32
|
||||
[ $? -eq 0 -o $? -eq 32 ] || ogRaiseError $OG_ERR_IMAGE "$3 $4"
|
||||
touch "$DIRMOUNT/ogimg.info"
|
||||
# Monto la imagen
|
||||
ogMountImage $1 "$2" $3 &>/dev/null
|
||||
[ $? -eq 0 ] || ogRaiseError $OG_ERR_IMAGE "$3 $4"
|
||||
touch "$DIRMOUNT/ogimg.info"
|
||||
|
||||
#fi
|
||||
# Si existe dispositivo de loop lo borro.
|
||||
[ $LOOPDEVICE ] && losetup -d $LOOPDEVICE 2>&1 &>/dev/null
|
||||
|
||||
|
@ -159,7 +172,14 @@ rm $ORIG/ogimg.* 2>/dev/null
|
|||
# En las diferenciales no sabemos el tamaño -> ponemos una constante.
|
||||
SIZEDATA=${SIZEDATA:-"SIZEDATA"}
|
||||
|
||||
echo "#BRTFS:LZO:$FSTYPE:$SIZEDATA" > $IMGINFO
|
||||
# Incluimos información de la imagen. Segun el kernel sera ext4 o btrfs.
|
||||
#if [[ "$(uname -r)" < "3.7" ]]; then
|
||||
if [ $(uname -r|cut -d. -f2) -lt 7 ]; then
|
||||
echo "#EXT4:LZO:$FSTYPE:$SIZEDATA" > $IMGINFO
|
||||
else
|
||||
echo "#BTRFS:LZO:$FSTYPE:$SIZEDATA" > $IMGINFO
|
||||
fi
|
||||
|
||||
if [ "$IMGTYPE" == "img" ]; then
|
||||
# Imagen Basica
|
||||
echo " rsync -aHAXvn --delete $ORIG/ $DIREMPTY >> $IMGINFO" | tee -a $OGLOGSESSION $OGLOGFILE
|
||||
|
@ -169,7 +189,6 @@ if [ "$IMGTYPE" == "img" ]; then
|
|||
|
||||
else
|
||||
# Imagen Diferencial
|
||||
# TODO en el echo quitar la $OPTRSYNC para que no se vea el fichero de claves
|
||||
echo " rsync -aHAXvn$OPTRSYNC --delete $ORIG/ $DESTRSYNC a $IMGLIST" | tee -a $OGLOGSESSION $OGLOGFILE
|
||||
rsync -aHAXvn$OPTRSYNC $PASSWORD --delete "$ORIG/" "$DESTRSYNC" >> $IMGLIST
|
||||
sed -i -e s/"^sent.*.bytes\/sec"//g -e s/^total.*.speedup.*.$//g -e s/"sending.*.list"//g $IMGLIST
|
||||
|
@ -188,7 +207,7 @@ fi
|
|||
# Guardamos el contenido de las acl (Solo win) Necesario particion desmontada (esta asi)
|
||||
ogUnmount $1 $2
|
||||
if [ $FSTYPE == "NTFS" ]; then
|
||||
echo " ntfs-3g.secaudit -b $PART /" |tee -a $OGLOGSESSION $OGLOGFILE
|
||||
echo " ntfs-3g.secaudit -b $PART /" |tee -a $OGLOGSESSION $OGLOGFILE
|
||||
ntfs-3g.secaudit -b $PART / > $IMGACL
|
||||
fi
|
||||
|
||||
|
@ -252,12 +271,14 @@ if [ $(wc -l $DEST/$IMGLN|cut -f1 -d" ") -ne 0 ]; then
|
|||
fi
|
||||
|
||||
# Restauramos acl
|
||||
if [ "$(ogGetFsType $1 $2)" == "NTFS" ] ; then
|
||||
if [ "$(ogGetFsType $1 $2)" == "NTFS" -a -f $DEST/$IMGACL ] ; then
|
||||
cd /
|
||||
cp $DEST/$IMGACL /tmp
|
||||
ogUnmount "$1" "$2"
|
||||
echo " ntfs-3g.secaudit -se $PART" |tee -a $OGLOGSESSION $OGLOGFILE
|
||||
ntfs-3g.secaudit -se $PART /tmp/$IMGACL
|
||||
# Para evitar que de falso error
|
||||
echo ""
|
||||
fi
|
||||
|
||||
}
|
||||
|
@ -416,9 +437,22 @@ fi
|
|||
DIRMOUNT=$(ogGetMountDir "$2" ${IMGEXT#*\.})
|
||||
|
||||
if [ "$1" == "CACHE" -o "$1" == "cache" ]; then
|
||||
# Si está montado nada que hacer.
|
||||
df | grep "$DIRMOUNT$" 2>&1 >/dev/null && echo "/tmp/$DIRMOUNT" && return 0
|
||||
|
||||
IMGFILE=$(ogGetPath "$1" /"$2.$IMGEXT")
|
||||
mkdir -p "/tmp/$DIRMOUNT"
|
||||
mount -o compress=lzo "$IMGFILE" "/tmp/$DIRMOUNT" 1>/dev/null
|
||||
|
||||
# FS de la imagen segun la version del kernel: < 3.7 ext4, si >= btrfs
|
||||
#if [[ "$(uname -r)" < "3.7" ]]; then
|
||||
if [ $(uname -r|cut -d. -f2) -lt 7 ]; then
|
||||
mount -t ext4 -o loop "$IMGFILE" "/tmp/$DIRMOUNT" 1>/dev/null
|
||||
else
|
||||
mount -o compress=lzo "$IMGFILE" "/tmp/$DIRMOUNT" 1>/dev/null
|
||||
fi
|
||||
|
||||
# Comprobamos que se ha montado bien
|
||||
[ $? -eq 0 ] || ogRaiseError $OG_ERR_DONTMOUNT_IMAGE "$1 $2 $3" || return $?
|
||||
echo "/tmp/$DIRMOUNT"
|
||||
|
||||
else
|
||||
|
@ -554,8 +588,6 @@ echo ""
|
|||
}
|
||||
|
||||
|
||||
# DA ERROR
|
||||
# ERROR: unable to resize 'imagen' - File too large
|
||||
function ogReduceImage () {
|
||||
#/**
|
||||
# ogReduceImage
|
||||
|
@ -567,7 +599,91 @@ function ogReduceImage () {
|
|||
#@exception OG_ERR_FORMAT # 1 formato incorrecto.
|
||||
#@exception OG_ERR_NOTFOUND # 2 Fichero o dispositivo no encontrado.
|
||||
#*/
|
||||
local IMGEXT DIRMOUNT AVAILABLE USED IMGDIR IMGFILE ENDSIZE
|
||||
local IMGEXT DIRMOUNT AVAILABLE USED IMGDIR IMGFILE ENDSIZE LOOPDEVICE
|
||||
if [ "$*" == "help" ]; then
|
||||
ogHelp "$FUNCNAME" "$FUNCNAME [ REPO|CACHE ] image_name [ extension ]" \
|
||||
"$FUNCNAME REPO Ubuntu12" \
|
||||
"$FUNCNAME CACHE Windows7 diff"
|
||||
return
|
||||
fi
|
||||
|
||||
if [ $# -lt 2 ]; then
|
||||
ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $FUNCNAME [ REPO|CACHE ] image_name [ extension ]"
|
||||
return $?
|
||||
fi
|
||||
|
||||
|
||||
[ "$3" == "" -o "$3" == "img" ] && IMGEXT="img" || IMGEXT="img.diff"
|
||||
IMGDIR=$(ogGetParentPath "$1" "/$2")
|
||||
IMGFILE="${IMGDIR}"/$(basename "/$2").$IMGEXT
|
||||
|
||||
# Solo es posible para imagenes EXT4. Si no es EXT4 salimos sin error
|
||||
file $IMGFILE | grep -i " ext4 filesystem " 2>&1 > /dev/null || return 0
|
||||
|
||||
if [ "$1" == "CACHE" -o "$1" == "cache" ]; then
|
||||
# Al montar se comprueba la existencia de la imagen
|
||||
DIRMOUNT=$(ogMountImage $1 $2 ${IMGEXT#*\.})
|
||||
|
||||
AVAILABLE=$(df -k|grep "$DIRMOUNT$"|awk '{print $4}')
|
||||
# Si el espacio libre menor que 500Mb nos salimos
|
||||
if [ $AVAILABLE -lt 200000 ]; then
|
||||
ogUnmountImage $1 $2 ${IMGEXT#*\.}
|
||||
return 0
|
||||
fi
|
||||
|
||||
|
||||
# Calculamos la diferencia entre el tamaño interno y externo
|
||||
EXTSIZE=$(ls -l --block-size=1024 $IMGFILE | cut -f5 -d" ")
|
||||
INTSIZE=$(df -k|grep "$DIRMOUNT"|awk '{print $2}')
|
||||
let EDGESIZE=$EXTSIZE-$INTSIZE
|
||||
|
||||
ogUnmountImage $1 $2 ${IMGEXT#*\.}
|
||||
LOOPDEVICE=$(losetup -f)
|
||||
losetup $LOOPDEVICE "$IMGFILE"
|
||||
|
||||
# Redimensiono sistema de ficheros
|
||||
echo resize2fs -fpM $LOOPDEVICE
|
||||
resize2fs -fpM $LOOPDEVICE |tee -a $OGLOGCOMMAND
|
||||
ogMountImage $1 $2 ${IMGEXT#*\.}
|
||||
|
||||
# Calculamos el tamaño final del archivo
|
||||
INTSIZE=$(df -k|grep "$DIRMOUNT"|awk '{print $2}')
|
||||
let EXTSIZE=$INTSIZE+$EDGESIZE
|
||||
umount $DIRMOUNT
|
||||
|
||||
# Si existe dispositivo de loop lo borro.
|
||||
[ $LOOPDEVICE ] && losetup -d $LOOPDEVICE
|
||||
|
||||
# Corto el archivo al tamaño del sistema de ficheros.
|
||||
echo " truncate --size=\"$EXTSIZE\"k $IMGFILE "
|
||||
truncate --size="$EXTSIZE"k $IMGFILE
|
||||
|
||||
rmdir $DIRMOUNT
|
||||
|
||||
else
|
||||
[ -z $REPOIP ] && REPOIP=$(ogGetRepoIp)
|
||||
echo " hose $REPOIP 2009 --out sh -c echo -ne REDUCE_IMAGE \"$2\" ${IMGEXT#*\.}"
|
||||
hose $REPOIP 2009 --out sh -c "echo -ne REDUCE_IMAGE \"$2\" ${IMGEXT#*\.}"
|
||||
fi
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
function ogIsSyncImage () {
|
||||
#/**
|
||||
# ogIsSyncImage
|
||||
#@brief Comprueba si la imagen es sincronizable
|
||||
#@param 1 Repositorio [ REPO | CACHE ]
|
||||
#@param 2 Nombre Imagen
|
||||
#@param 3 Tipo Imagen [ img |diff ]
|
||||
#@return
|
||||
#@exception OG_ERR_FORMAT # 1 formato incorrecto.
|
||||
#@exception OG_ERR_NOTFOUND # 2 Fichero o dispositivo no encontrado.
|
||||
#*/
|
||||
local IMGEXT IMGDIR IMGFILE
|
||||
|
||||
if [ "$*" == "help" ]; then
|
||||
ogHelp "$FUNCNAME" "$FUNCNAME [ REPO|CACHE ] image_name [ extension ]" \
|
||||
"$FUNCNAME REPO Ubuntu12" \
|
||||
|
@ -581,41 +697,11 @@ if [ $# -lt 2 ]; then
|
|||
fi
|
||||
|
||||
[ "$3" == "" -o "$3" == "img" ] && IMGEXT="img" || IMGEXT="img.diff"
|
||||
IMGDIR=$(ogGetParentPath "$1" "/$2")
|
||||
IMGFILE="${IMGDIR}"/$(basename "/$2").$IMGEXT
|
||||
|
||||
if [ "$1" == "CACHE" -o "$1" == "cache" ]; then
|
||||
# Al montar se comprueba la existencia de la imagen
|
||||
DIRMOUNT=$(ogMountImage $1 $2 ${IMGEXT#*\.})
|
||||
|
||||
AVAILABLE=$(df -k|grep "$DIRMOUNT$"|awk '{print $4}')
|
||||
# Si el espacio libre menor que 500Mb nos salimos
|
||||
if [ $AVAILABLE -lt 500000 ]; then
|
||||
ogUnmountImage $1 $2 ${IMGEXT#*\.}
|
||||
return 0
|
||||
fi
|
||||
|
||||
# Reducimos el archivo de imagen:
|
||||
IMGDIR=$(ogGetParentPath "$1" "/$2")
|
||||
IMGFILE=${IMGDIR}/$(basename "/$2").$IMGEXT
|
||||
USED=$(df -k|grep "$DIRMOUNT$"|awk '{print $3}')
|
||||
let ENDSIZE=$USED+500000
|
||||
echo -e -n " btrfs filesystem resize "$ENDSIZE"k $DIRMOUNT \n "
|
||||
btrfs filesystem resize "$ENDSIZE"k $DIRMOUNT
|
||||
ogUnmountImage $1 $2 ${IMGEXT#*\.}
|
||||
echo " truncate --size=\"$ENDSIZE\"k $IMGFILE "
|
||||
truncate --size="$ENDSIZE"k $IMGFILE
|
||||
else
|
||||
[ -z $REPOIP ] && REPOIP=$(ogGetRepoIp)
|
||||
echo " hose $REPOIP 2009 --out sh -c echo -ne REDUCE_IMAGE \"$2\" ${IMGEXT#*\.}"
|
||||
hose $REPOIP 2009 --out sh -c "echo -ne REDUCE_IMAGE \"$2\" ${IMGEXT#*\.}"
|
||||
fi
|
||||
file "$IMGFILE" | grep -i -e " BTRFS Filesystem " -e " ext4 filesystem " >/dev/null
|
||||
[ $? -eq 0 ] && return 0 || return $OG_ERR_DONTSYNC_IMAGE
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -27,18 +27,14 @@
|
|||
trap "onexit $1 $2 $3 \"$4\"" 1 2 3 6 9 14 15 ERR
|
||||
|
||||
# Establecemos factor de compresion
|
||||
COMPRESS=90/100
|
||||
COMPRESSLINUX=80/100
|
||||
# !!! Se configura en las lineas 110 y 116.
|
||||
|
||||
# Si salimos con error demontamos la imagen y desbloqueamos la imagen y la particion
|
||||
function onexit() {
|
||||
local exit_status=$?
|
||||
echo "$MSG_ERR_GENERIC $exit_status" |tee -a $OGLOGFILE $OGLOGSESSION
|
||||
echo ogUnmountImage $3 "$4" $IMGEXT
|
||||
ogUnmountImage $3 "$4" $IMGEXT &>/dev/null
|
||||
echo ogUnlockImage "$3" "/$4.$IMGEXT"
|
||||
ogUnlockImage "$3" "/$4.$IMGEXT"
|
||||
echo ogUnlock $1 $2
|
||||
ogUnlock $1 $2
|
||||
exit $exit_status
|
||||
}
|
||||
|
@ -49,6 +45,8 @@ TIME1=$SECONDS
|
|||
|
||||
# Factor de calculo de Time out al crear imagen: valor por defecto en engine.cfg
|
||||
CREATESPEED=${CREATESPEED:-"100000*4"}
|
||||
# Sistema de fichero de la imagen según kernel, menor que 3.7 EXT4. comparamos revision
|
||||
[ $(uname -r|cut -d. -f2) -lt 7 ] && IMGFS="EXT4" || IMGFS="BTRFS"
|
||||
|
||||
PROG="$(basename $0)"
|
||||
# Si se solicita, mostrar ayuda.
|
||||
|
@ -95,11 +93,14 @@ case "$(ogGetFsType $1 $2)" in
|
|||
EXT[234])
|
||||
ogCleanLinuxDevices $1 $2
|
||||
rm -rf $ORIG/tmp/*
|
||||
COMPRESS=$COMPRESSLINUX
|
||||
# Compresion linux && ext4 || btrfs
|
||||
[ $IMGFS == "EXT4" ] && COMPRESS=110/100 || COMPRESS=80/100
|
||||
;;
|
||||
NTFS)
|
||||
[ $(ogGetPath $1 $2 pagefile.sys) ] && ogDeleteFile $1 $2 pagefile.sys
|
||||
[ $(ogGetPath $1 $2 hiberfil.sys) ] && ogDeleteFile $1 $2 hiberfil.sys
|
||||
# Compresion windows && ext4 || btrfs
|
||||
[ $IMGFS == "EXT4" ] && COMPRESS=120/100 || COMPRESS=90/100
|
||||
;;
|
||||
esac
|
||||
|
||||
|
@ -153,8 +154,8 @@ ogSyncCreate $1 $2 $3 "$4" $IMGEXT
|
|||
|
||||
# Lo comantamos hasta probar -> da error de ERROR: unable to resize '/tmp/mount/IMG' - No space left on device
|
||||
# Reducimos la imagen
|
||||
#echo "[90] $MSG_HELP_ogReduceImage: $3 /$4.$IMGEXT" | tee -a $OGLOGSESSION $OGLOGFILE
|
||||
#ogReduceImage $3 "$4" $IMGEXT
|
||||
echo "[90] $MSG_HELP_ogReduceImage: $3 /$4.$IMGEXT" | tee -a $OGLOGSESSION $OGLOGFILE
|
||||
ogReduceImage $3 "$4" $IMGEXT
|
||||
|
||||
# Desmontamos la Imagen
|
||||
ogUnmountImage $3 "$4" $IMGEXT
|
||||
|
@ -164,7 +165,8 @@ TIMEAUX5=$[SECONDS-TIMEAUX3]
|
|||
echo " $MSG_SCRIPTS_TASK_END, $MSG_SCRIPTS_TIME_PARTIAL: $[TIMEAUX3/60]m $[TIMEAUX3%60]s" | tee -a $OGLOGSESSION $OGLOGFILE
|
||||
|
||||
# Comprobamos que la imagen esta bien detectacdo que es un sistema de ficheros.
|
||||
file $IMGFILE|grep "BTRFS Filesystem" 2>&1 >/dev/null || ogRaiseError $OG_ERR_IMAGE "$3 $4"
|
||||
#file $IMGFILE|grep -i -e "BTRFS Filesystem" -e " ext4 filesystem " 2>&1 >/dev/null || ogRaiseError $OG_ERR_IMAGE "$3 $4"
|
||||
ogIsImageSync $3 "$4" "img" || ogRaiseError $OG_ERR_IMAGE "$3 $4"
|
||||
|
||||
TIMEAUX7=$[SECONDS-TIME2]
|
||||
echo " $MSG_SCRIPTS_TIME_PARTIAL : $[TIMEAUX7/60]m $[TIMEAUX7%60]s" | tee -a $OGLOGSESSION $OGLOGFILE
|
||||
|
|
|
@ -27,6 +27,10 @@
|
|||
#@date 2012-12-04
|
||||
#*/ ##
|
||||
trap "onexit $1 $2 $3 \"$4\" \"$5\"" 1 2 3 6 9 14 15 ERR
|
||||
|
||||
# Establecemos factor de compresion
|
||||
# !!! Se configura en las lineas 122 y 128.
|
||||
|
||||
function onexit() {
|
||||
local exit_status=$?
|
||||
echo "$MSG_ERR_GENERIC $exit_status" |tee -a $OGLOGFILE $OGLOGSESSION
|
||||
|
@ -38,15 +42,13 @@ function onexit() {
|
|||
exit $exit_status
|
||||
}
|
||||
|
||||
# Establecemos factor de compresion
|
||||
COMPRESS=90/100
|
||||
COMPRESSLINUX=80/100
|
||||
|
||||
#Carga el configurador del engine desde el fichero engine.cfg
|
||||
[ -z $OGENGINECONFIGURATE ] && source /opt/opengnsys/etc/engine.cfg
|
||||
|
||||
# Factor de calculo de Time out al crear imagen: valor por defecto en engine.cfg
|
||||
CREATESPEED=${CREATESPEED:-"100000*4"}
|
||||
# Sistema de fichero de la imagen según kernel, menor que 3.7 EXT4. comparamos revision
|
||||
[ $(uname -r|cut -d. -f2) -lt 7 ] && IMGFS="EXT4" || IMGFS="BTRFS"
|
||||
|
||||
TIME1=$SECONDS
|
||||
|
||||
|
@ -75,7 +77,8 @@ ogIsLocked "$1" "$2" && ogRaiseError $OG_ERR_LOCKED "$1 $2"
|
|||
IMGFILE=$(ogGetPath "$3" "$4.$IMGEXT") || ogRaiseError $OG_ERR_NOTFOUND "$3 $4.$IMGEXT"
|
||||
|
||||
# Comprobar que la imagen completa es sincronizable
|
||||
file $IMGFILE | grep " BTRFS Filesystem" >/dev/null || ogRaiseError $OG_ERR_DONTSYNC_IMAGE "$3 $4"
|
||||
#file $IMGFILE | grep -i -e " BTRFS Filesystem " -e " ext4 filesystem " >/dev/null || ogRaiseError $OG_ERR_DONTSYNC_IMAGE "$3 $4"
|
||||
ogIsImageSync "$3" "$4" "img" || ogRaiseError $OG_ERR_DONTSYNC_IMAGE "$3 $4"
|
||||
# Comprobar que no está bloqueada
|
||||
ogIsImageLocked "$3" "$4.$IMGEXT" && ogRaiseError $OG_ERR_LOCKED "$3 $4.$IMGEXT"
|
||||
|
||||
|
@ -113,15 +116,19 @@ TIMEAUX1=$[SECONDS-TIME1]
|
|||
echo " $MSG_SCRIPTS_TASK_END, $MSG_SCRIPTS_TIME_PARTIAL: $[TIMEAUX1/60]m $[TIMEAUX1%60]s" | tee -a $OGLOGSESSION $OGLOGFILE
|
||||
|
||||
# Borramos ficheros de paginacion y configuracion
|
||||
# Establecemos factor de compresion, varia segun el sistema operativo y el kernel.
|
||||
case "$(ogGetFsType $1 $2)" in
|
||||
EXT[234])
|
||||
ogCleanLinuxDevices $1 $2
|
||||
rm -rf $ORIG/tmp/*
|
||||
COMPRESS=$COMPRESSLINUX
|
||||
# Compresion linux && ext4 || btrfs
|
||||
[ $IMGFS == "EXT4" ] && COMPRESS=110/100 || COMPRESS=80/100
|
||||
;;
|
||||
NTFS)
|
||||
[ $(ogGetPath $1 $2 pagefile.sys) ] && ogDeleteFile $1 $2 pagefile.sys
|
||||
[ $(ogGetPath $1 $2 hiberfil.sys) ] && ogDeleteFile $1 $2 hiberfil.sys
|
||||
# Compresion windows && ext4 || btrfs
|
||||
[ $IMGFS == "EXT4" ] && COMPRESS=130/100 || COMPRESS=90/100
|
||||
;;
|
||||
esac
|
||||
|
||||
|
@ -203,7 +210,8 @@ ogUnlockImage "$3" "/$5.$DIFFEXT"
|
|||
ogUnlock $1 $2
|
||||
|
||||
# Comprobamos que la imagen esta bien
|
||||
file "$DIFFFILE" |grep "BTRFS Filesystem" >/dev/null || ogRaiseError $OG_ERR_IMAGE "$3 $4"
|
||||
#file "$DIFFFILE" |grep -i -e " BTRFS Filesystem " -e " ext4 filesystem " >/dev/null || ogRaiseError $OG_ERR_IMAGE "$3 $5"
|
||||
ogIsImageSync $3 "$5" diff || ogRaiseError $OG_ERR_IMAGE "$3 $5"
|
||||
|
||||
#resumen de la operacion
|
||||
IMGSIZE=$(ls -l --block-size=1024 ${DIFFFILE}| cut -f5 -d" ")
|
||||
|
|
|
@ -58,7 +58,8 @@ fi
|
|||
REPOFILE=$(ogGetPath "REPO" "$2.$IMGEXT") || ogRaiseError $OG_ERR_NOTFOUND "REPO, $2.$IMGEXT"
|
||||
|
||||
# Comprobar que es sincronizable (con REPO)
|
||||
file $REPOFILE | grep " BTRFS Filesystem" 2>&1 > /dev/null || ogRaiseError $OG_ERR_DONTSYNC_IMAGE "$1 $2"
|
||||
#file $REPOFILE | grep -i -e " BTRFS Filesystem" -e " ext4 filesystem " 2>&1 > /dev/null || ogRaiseError $OG_ERR_DONTSYNC_IMAGE "$1 $2"
|
||||
ogIsImageSync $1 "$2" $IMGEXT || ogRaiseError $OG_ERR_DONTSYNC_IMAGE "$1 $2"
|
||||
|
||||
# Comprobamos si el sistema de ficheros se puede montar
|
||||
ogMount "$3" "$4" &>/dev/null || RETVAL=$?
|
||||
|
@ -87,7 +88,8 @@ if [ "$1" == "CACHE" -o "$1" == "cache" ]; then
|
|||
# Sincronizamos si existe el fichero y si no usamos updateCache.
|
||||
echo "[10] $MSG_SCRIPTS_TASK_START updateCache REPO $2.$IMGEXT $PROTO $6" | tee -a $OGLOGFILE
|
||||
echo " updateCache REPO" "/$2.$IMGEXT" "$PROTO" "$6" | tee -a $OGLOGFILE
|
||||
updateCache REPO "/$2.$IMGEXT" "$PROTO" "$6" &>> $OGLOGCOMMAND
|
||||
#updateCache REPO "/$2.$IMGEXT" "$PROTO" "$6" &>> $OGLOGCOMMAND
|
||||
updateCache REPO "/$2.$IMGEXT" "$PROTO" "$6" 2>&1 | tee -a $OGLOGCOMMAND
|
||||
RETVAL=$?
|
||||
if [ "$RETVAL" != "0" ]
|
||||
then
|
||||
|
@ -127,10 +129,10 @@ ogUnlock $3 $4
|
|||
echo "[70] $MSG_HELP_ogRestoreInfoImage" |tee -a $OGLOGFILE
|
||||
ogRestoreInfoImage $3 $4 &>>$OGLOGCOMMAND
|
||||
|
||||
|
||||
# Llamar al script de post-configuración del sistema operativo.
|
||||
echo "[90] $MSG_HELP_configureOs" |tee -a $OGLOGFILE
|
||||
configureOs $3 $4 &>>$OGLOGCOMMAND
|
||||
# el || echo es para evitar que se maneje el error.
|
||||
configureOs $3 $4 &>>$OGLOGCOMMAND || echo "$?" &>>$OGLOGCOMMAND
|
||||
|
||||
TIME=$[SECONDS-TIME1]
|
||||
echo "[100] $MSG_SCRIPTS_END $MSG_SCRIPTS_TIME_TOTAL: $[TIME/60]m $[TIME%60]s" |tee -a $OGLOGFILE
|
||||
|
|
|
@ -69,7 +69,8 @@ PART=$(ogDiskToDev "$3" "$4" 2>/dev/null ) || ogRaiseError $OG_ERR_PARTITION "$
|
|||
[ -z $OGENGINECONFIGURATE ] && source /opt/opengnsys/etc/engine.cfg
|
||||
|
||||
# Comprobar que es sincronizable
|
||||
file $REPODIFFFILE | grep " BTRFS Filesystem" >/dev/null || ogRaiseError $OG_ERR_DONTSYNC_IMAGE "$3 $4"
|
||||
#file $REPODIFFFILE | grep -i -e " BTRFS Filesystem " -e " ext4 filesystem " >/dev/null || ogRaiseError $OG_ERR_DONTSYNC_IMAGE "$3 $4"
|
||||
ogIsImageSync $3 "$4" diff || ogRaiseError $OG_ERR_DONTSYNC_IMAGE "$3 $4"
|
||||
|
||||
PROTO=${5:-"UNICAST"}
|
||||
|
||||
|
@ -120,7 +121,8 @@ ogRestoreInfoImage "$3" "$4" &>$OGLOGCOMMAND
|
|||
|
||||
# Llamar al script de post-configuración del sistema operativo.
|
||||
echo "[90] $MSG_HELP_configureOs."
|
||||
configureOs $3 $4
|
||||
# el || echo es para evitar que se maneje el error.
|
||||
configureOs $3 $4 &>>$OGLOGCOMMAND || echo "$?" &>>$OGLOGCOMMAND
|
||||
|
||||
|
||||
TIME=$[SECONDS-TIME1]
|
||||
|
|
|
@ -55,16 +55,18 @@ REPOFILE=$(ogGetPath "REPO" "/$2") || ogRaiseError $OG_ERR_NOTFOUND "REPO /$2"
|
|||
|
||||
echo "$MSG_SCRIPTS_UPDATECACHE_DOUPDATE "
|
||||
# Distingo si es monolitica o sincronizable
|
||||
file $REPOFILE | grep " BTRFS Filesystem" 2>&1 > /dev/null
|
||||
file $REPOFILE | grep -i -e " BTRFS Filesystem " -e " ext4 filesystem " 2>&1 > /dev/null
|
||||
if [ $? == 0 ]; then
|
||||
IMGTYPE="RSYNC"
|
||||
# Para imagen sincronizada, si hay imagen en cache uso rsync, si no otro protocolo
|
||||
IMGSYNC=TRUE
|
||||
# Para imagen sincronizada, si hay imagen en cache siempre protocolo = rsync.
|
||||
CACHEFILE=$(ogGetPath "CACHE" "/$2") && PROTOCOLO="RSYNC"
|
||||
|
||||
# Si es imagen sincronizada siempre da distinto md5. No podemos comprobar -> actualizamos.
|
||||
RETVAL=0
|
||||
else
|
||||
IMGTYPE="MONOLITICA"
|
||||
# Si la imagen es monolitica y ha elegido protocolo = RSYNC salimos con error.
|
||||
[ $PROTOCOLO == "RSYNC" ] && exit $(ogRaiseError $OG_ERR_DONTSYNC_IMAGE "REPO $2"; exit 1)
|
||||
IMGSYNC=FALSE
|
||||
#TODO: ogUpdateCacheIsNecesary debe borrar la imagen que tenga igual nombre pero distinto sum-
|
||||
ogUpdateCacheIsNecesary $1 $2
|
||||
RETVAL=$?
|
||||
|
@ -81,12 +83,15 @@ REALFILESIZE=$(ls -l --block-size=1024 $(ogGetPath $REPOSITORIO "$2") | cut -f5
|
|||
# La sincronizada, si existe la imagen en cache el espacio necesario
|
||||
# es la nueva menos lo que ocupa la que ya hay.
|
||||
if [ "$PROTOCOLO" == "RSYNC" ]; then
|
||||
CACHEFILESIZE=$(ls -l --block-size=1024 $(ogGetPath "CACHE" "$2") | cut -f5 -d" ")
|
||||
let SIZEREQUIRED=$CACHEFILESIZE-$FILESIZE
|
||||
if [ "$CACHEFILE" == "" ]; then
|
||||
CACHEFILESIZE=0
|
||||
else
|
||||
CACHEFILESIZE=$(ls -l --block-size=1024 "$CACHEFILE" | cut -f5 -d" ")
|
||||
fi
|
||||
let SIZEREQUIRED=$REALFILESIZE-$CACHEFILESIZE
|
||||
[ $SIZEREQUIRED -lt 0 ] && SIZEREQUIRED=0
|
||||
else
|
||||
SIZEREQUIRED=$FILESIZE
|
||||
|
||||
fi
|
||||
|
||||
echo "$MSG_SCRIPTS_UPDATECACHE_CHECKSIZECACHE"
|
||||
|
@ -128,7 +133,7 @@ then
|
|||
fi
|
||||
|
||||
# Comprobamos que imagen cache igual a la del repo. Si sincronizada no podemos comprobar.
|
||||
[ "$IMGTYPE" == "RSYNC" ] || ogUpdateCacheIsNecesary $REPOSITORIO "$2"
|
||||
[ "$IMGSYNC" == "TRUE" ] || ogUpdateCacheIsNecesary $REPOSITORIO "$2"
|
||||
RETVAL=$?
|
||||
# si RETVAL=0 => actualizamos si RETVAL=1 no actaulizasmo-exit 0 || si RETVAL>2 exit 1
|
||||
[ "$RETVAL" == "1" ] && exit 0
|
||||
|
@ -204,26 +209,17 @@ case "$PROTOCOLO" in
|
|||
[ "${2##*.}" == "img" ] && IMGTYPE="img" || IMGTYPE="diff"
|
||||
IMGNAME="${2%.img*}"
|
||||
|
||||
DIRMOUNT="$(ogGetMountDir "$IMGNAME" $IMGTYPE)"
|
||||
DIRMOUNT=$(ogGetMountDir "$IMGNAME" $IMGTYPE)
|
||||
DIRLOCAL="/tmp/$DIRMOUNT"
|
||||
mkdir $DIRLOCAL 2>/dev/null
|
||||
echo "$MSG_SCRIPTS_UPDATECACHE_CHECKSIZEIMG"
|
||||
|
||||
# Si la imagen no existe la creo
|
||||
# Si la imagen del repositorio es mayor, redimensiono la imagen de cache
|
||||
if [ $CACHEFILESIZE -lt $REALFILESIZE ]; then
|
||||
# Si la imagen esta montada la desmonto
|
||||
mount |grep $CACHEFILE >/dev/null && umount $CACHEFILE
|
||||
echo " $MSG_SYNC_RESIZE." | tee -a $OGLOGSESSION $OGLOGFILE
|
||||
echo " truncate --size=>$REALFILESIZE k $CACHEFILE" | tee -a $OGLOGSESSION $OGLOGFILE
|
||||
truncate --size=">$REALFILESIZE"k $CACHEFILE &> $OGLOGCOMMAND
|
||||
echo " mount -o compress=lzo $CACHEFILE $DIRLOCAL"
|
||||
mount -o compress=lzo $CACHEFILE $DIRLOCAL
|
||||
echo " btrfs filesystem resize max $DIRLOCAL"
|
||||
btrfs filesystem resize max $DIRLOCAL
|
||||
if [ "$CACHEFILE" == "" -o $CACHEFILESIZE -lt $REALFILESIZE ]; then
|
||||
ogCreateFileImage CACHE "$IMGNAME" $IMGTYPE $REALFILESIZE
|
||||
TIMEAUX3=$[SECONDS-TIMEAUX3]
|
||||
echo " $MSG_SCRIPTS_TASK_END, $MSG_SCRIPTS_TIME_PARTIAL: $[TIMEAUX3/60]m $[TIMEAUX3%60]s" | tee -a $OGLOGSESSION $OGLOGFILE
|
||||
|
||||
|
||||
fi
|
||||
# Montamos las imagenes para sincronizarlas
|
||||
ogMountImage CACHE "$IMGNAME" $IMGTYPE >/dev/null
|
||||
|
@ -245,7 +241,11 @@ echo " [ ] $RESUMEUPDATECACHE " | tee -a $OGLOGSESSION $OGLOGFILE
|
|||
echo " [ ] $MSG_SCRIPTS_TIME_PARTIAL updateCache $[TIME1/60]m $[TIME1%60]s" | tee -a $OGLOGSESSION $OGLOGFILE
|
||||
echo " [ ] $MSG_SCRIPTS_TASK_START $MSG_HELP_ogCalculateChecksum " | tee -a $OGLOGSESSION $OGLOGFILE
|
||||
TIME2=$SECONDS
|
||||
if [ "$IMGTYPE" == "MONOLITICA" ]; then
|
||||
# Si es imagen sincronizada siempre da distinto md5. No podemos comprobar
|
||||
if [ "$IMGSYNC" == "TRUE" ]; then
|
||||
# RETVAL="1" -> OK RETVAL="2" -> error # valores igual que ogUpdateCacheIsNecesary
|
||||
[ $PROTOCOLO == "RSYNC" ] || RETVAL=1
|
||||
else
|
||||
ogUpdateCacheIsNecesary $REPOSITORIO "$2"
|
||||
RETVAL=$?
|
||||
fi
|
||||
|
|
|
@ -40,8 +40,9 @@ IMGEXT="$2"
|
|||
IMGFILE="$REPODIR/$1.$IMGEXT"
|
||||
if [ -f $IMGFILE ]; then
|
||||
[ -f $IMGFILE.lock ] && echo "$PROG: Error: $MSG_ERR_LOCKED $1 $IMGEXT" && exit 4
|
||||
|
||||
if ! file $IMGFILE | grep " BTRFS Filesystem" >/dev/null ; then
|
||||
|
||||
|
||||
if ! file $IMGFILE | grep -i -e " BTRFS Filesystem " -e " ext4 filesystem " >/dev/null ; then
|
||||
echo "$PROG: Error: $MSG_ERR_DONTSYNC_IMAGE $1 $2"
|
||||
exit 71
|
||||
fi
|
||||
|
|
|
@ -42,7 +42,9 @@ IMGFILE="$REPODIR/$1.$IMGEXT"
|
|||
|
||||
|
||||
# Comprobar que la imagen es sincronizable
|
||||
if ! file $IMGFILE | grep " BTRFS Filesystem" >/dev/null ; then
|
||||
file $IMGFILE | grep -i -e " BTRFS Filesystem " >/dev/null && IMGFS=BTRFS
|
||||
file $IMGFILE | grep -i -e " ext4 filesystem " >/dev/null && IMGFS=EXT4
|
||||
if [ "$IMGFS" != "BTRFS" -a "$IMGFS" != "EXT4" ] ; then
|
||||
echo "$PROG: Error: $MSG_ERR_DONTSYNC_IMAGE $1 $2"
|
||||
exit 71
|
||||
fi
|
||||
|
@ -50,7 +52,15 @@ fi
|
|||
MOUNTDIR="$REPODIR/mount/$1"
|
||||
[ "$IMGEXT" == "img.diff" ] && MOUNTDIR="$MOUNTDIR.${IMGEXT#*\.}"
|
||||
mkdir -p "$MOUNTDIR"
|
||||
mount -o compress=lzo "$IMGFILE" "$MOUNTDIR"
|
||||
[ "$?" == "0" ] || ( echo "$MSG_ERR_DONTMOUNT_IMAGE $1 $2" ; exit 70)
|
||||
|
||||
# Comprobamos si la imagen esta montada y si es así nos salimos.
|
||||
df |grep "$MOUNTDIR$" 2>&1 >/dev/null && echo "$MOUNTDIR" && exit 0
|
||||
|
||||
if [ "$IMGFS" == "EXT4" ] ; then
|
||||
mount -t ext4 "$IMGFILE" "$MOUNTDIR"
|
||||
else
|
||||
mount -o compress=lzo "$IMGFILE" "$MOUNTDIR"
|
||||
fi
|
||||
[ $? -eq 0 ] || ( echo "$MSG_ERR_DONTMOUNT_IMAGE $1 $2" ; exit 70)
|
||||
echo "$MOUNTDIR"
|
||||
|
||||
|
|
|
@ -42,7 +42,7 @@ IMGFILE="$REPODIR/$1.$IMGEXT"
|
|||
[ -f $IMGFILE.lock ] && echo "$PROG: Error: $MSG_ERR_LOCKED $1 $IMGEXT" && exit 4
|
||||
|
||||
# Comprobar que la imagen es sincronizable
|
||||
if ! file $IMGFILE | grep " BTRFS Filesystem" >/dev/null ; then
|
||||
if ! file $IMGFILE | grep -i -e " BTRFS Filesystem " -e " ext4 filesystem " >/dev/null ; then
|
||||
echo "$PROG: Error: $MSG_ERR_DONTSYNC_IMAGE $1 $2"
|
||||
exit 71
|
||||
fi
|
||||
|
|
|
@ -32,11 +32,16 @@ if [ "$USER" != "root" ]; then
|
|||
exit 1
|
||||
fi
|
||||
|
||||
[ "$2" == "" ] && IMGEXT="img" || IMGEXT="$2"
|
||||
# Comprobamos que imagen la imagen esta montada
|
||||
MOUNTDIR="$REPODIR/mount/$1"
|
||||
[ "$IMGEXT" == "diff" ] && MOUNTDIR="$MOUNTDIR.$IMGEXT"
|
||||
[ ! -r $MOUNTDIR/ogimg.info ] && echo "La imagen REPO $1 $2 no esta montada" && exit 0
|
||||
if [ "$2" == "diff" ]; then
|
||||
IMGEXT="diff"
|
||||
MOUNTDIR="$MOUNTDIR.diff"
|
||||
else
|
||||
IMGEXT="img"
|
||||
fi
|
||||
# Si la imaen no está montada me salgo
|
||||
df |grep "$MOUNTDIR$" 2>&1 >/dev/null || exit 0
|
||||
|
||||
echo -ne UMOUNT_IMAGE "$1" $IMGEXT | /opt/opengnsys/sbin/ogAdmRepoAux
|
||||
echo "Los resultado se registran en $REPOLOG. "
|
||||
|
|
Loading…
Reference in New Issue