Changes between Version 1 and Version 2 of SyncronizeSquashfs


Ignore:
Timestamp:
Apr 4, 2012, 11:29:09 AM (12 years ago)
Author:
irina
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SyncronizeSquashfs

    v1 v2  
    22= Sincronización de imágenes con SquashFS =
    33== Introducción ==
    4 Opengnsys permite crear un archivo imagen de una partición completa que luego puede clonarse en otra. Son imágenes hay que tratarlas como un todo y no permiten ver su contenido.
     4Hasta ahora Opengnsys permite crear un archivo imagen de una partición completa que luego puede clonarse en otra. Estas imágenes hay que tratarlas como un todo y no permiten ver su contenido.
     5
    56
    67Con la sincronización de imágenes pretendemos:
     
    89 * comparar la imagen con el contenido de la partición y crear una imagen diferencial con los archivos que difieran y la información de los archivos que sobran, de forma que al restaurar primero la imagen completa y luego la diferencial la partición destino quede como la del equipo modelo.
    910
     11
     12
    1013'''Procedimiento'''
    1114
     
    1619Para windows restauraremos las ACL con ntfs-3g.secaudit
    1720
     21Nota: supongo que después de creada la imagen permitiría añadir nuevos ficheros (igual que ogclient), aunque quizás es demasido complejo para que sea práctico
     22
    1823'''Problemas'''
    1924
     
    2328
    2429== Crear una imagen tipo sqfs ==
    25 La imagen será un archivo con formato squashfs del sistema de fichero de la partición. Para guardar la información de la imagen (como tenemos en partclone: tipo de sistema operativo, tamaño, archivos de que contiene, ...) necesitaremos incluir uno o varios archivos en el sistema de fichero original antes de realizar la creación.
     30La imagen será un archivo con formato squashfs del sistema de fichero de la partición.
     31
     32Para guardar la información de la imagen (como tenemos en partclone: tipo de sistema operativo, tamaño, archivos de que contiene, ...) necesitaremos incluir uno o varios archivos en el sistema de fichero original antes de realizar la creación.
    2633
    2734=== Creación imagen Linux ===
     
    5259ntfs-3g.secaudit -b /dev/sdaX / > ogimage.acl
    5360ogMount 1 X
    54 cp /tmp/ogimage.acl
     61cp /tmp/ogimage.acl /mnt/sdaX
    5562mksquashfs /mnt/sdaX nombreIMG.sqfs
    5663}}}
    5764
    58 == !Restauración/Sincronización de la imagen tipo sqfs ==
     65== Restaurar - Sincronizar de la imagen tipo sqfs ==
    5966
    6067La imagen puede estar en la cache o en repo.
    61 
    6268=== Restauración imagen Linux ===
    6369Para restaurar montaremos la imagen y la partición y copiaremos con rsync
     
    7884ntfs-3g.secaudit -se /dev/sda1 /tmp/ogimage.acl
    7985}}}
    80 === Opciones rsync ===
     86
     87== Opciones rsync ==
    8188/ la barra en el directorio de origen hace que transfiera el contenido del directorio al directorio destino (si no la ponemos copia también el directorio)
    8289
     
    100107
    101108--progress: muestra los archivos y el progreso → cuelga el equipo.
     109
     110== Crear una imagen diferencial ==
     111
     112'''Definición de imagen diferencial: '''
     113
     114Supongamos que tenemos una imagen completa y la hemos restaurado en un equipo que hará de modelo. Instalamos una serie de programas.
     115
     116Llamaremos imagen diferencial de una completa a la que contengan los archivos nuevos y la información de los archivos que sobran, de forma que al restaurar primero la imagen completa y luego la diferencial la partición destino quede como la del equipo modelo.
     117
     118
     119'''Procedimiento'''
     120 * Se monta la imagen completa y se compara el contenido de la partición con la imagen: Se crea la lista de las diferencias con rsync
     121 * Se trata la lista de diferencias: se separan los archivos a copiar, a borrar y los enlaces (simbólicos o no), ya que se tendrán que procesar de forma diferente al restaurar.
     122 * En un directorio temporal se copian los archivos que están en la partición y no en la imagen completa.
     123 * Se crea una imagen squash del directorio
     124
     125
     126{{{
     127# Montamos imagen completa (con la que vamos a comparar)
     128mount -t squashfs -o loop /opt/opengnsys/image/ImgCompleta $OGCAC$OGIMG/montar
     129# Creamos las diferencias
     130rsync -aHvn --delete /mnt/sda2/ $OGCAC$OGIMG/montar > lista_img
     131sed -i -e s/"^sent.*.bytes\/sec"//g  -e s/^total.*.speedup.*.$//g -e s/"sending.*.list"//g lista_img
     132
     133# creasmo directorio temporarl
     134mkdir $OGCAC$OGIMG/img.tmp
     135grep -e '\->' -e  '\=>' lista_img > $OGCAC$OGIMG/img.tmp/list__ln
     136grep -e  ^deleting  lista_img | sed s/^deleting\ //g > $OGCAC$OGIMG/img.tmp/list_rm
     137grep -v -e '\->' -e  '\=>'  -e ^deleting  lista_img > $OGCAC$OGIMG/img.tmp/lista_rsync
     138#
     139echo "rsync -aHq --files-from=$OGCAC$OGIMG/img.tmp/list_rsync /mnt/sda2/  $OGCAC$OGIMG/img.tmp" | tee -a $FILELOG
     140rsync -aHq --files-from=$OGCAC$OGIMG/img.tmp/list_rsync  /mnt/sda2/  $OGCAC$OGIMG/img.tmp  >> $FILELOG 2>&1
     141
     142echo "mksquashfs $OGCAC$OGIMG/img.tmp ubuntu11DesdePArticionSqfs.diff" | tee -a $FILELOG
     143mksquashfs $OGCAC$OGIMG/img.tmp ubuntu11DesdePArticionSqfs.diff | tee -a $FILELOG
     144}}}
     145
     146== Restaurar - Sincronizar una imagen diferencial ==
     147
     148Tras restaurar la imagen completa, la restauración de la imagen diferencial hará lo siguiente:
     149 * Montará la partición destino y la imagen diferencial
     150 * Con rsync copiará los archivos incluidos en la lista de la diferencial (Es más rápido que si se le permite que compare el contenido de la imagen con la partición).
     151 * Borrara los archivos sobrantes, con la información de la lista para borrar
     152 * Creará los enlaces simbólicos, con la informacón de  la lista de enlaces
     153
     154
     155
     156{{{
     157echo "Restaurar diferencial"  | tee -a $FILELOG
     158ogMount 1 X
     159mount $OGCAC$OGIM/imagen.diff $OGCAC$OGIMG/montar
     160rsync -aHq –files-from=$OGCAC$OGIMG/montar/list_rsync  $OGCAC$OGIMG/montar/ /mnt/sdaX | tee -a $FILELOG
     161echo "Diferencial: creando enlaces y borrando"  | tee -a $FILELOG
     162cd $PART
     163rm -rf $(cat $OGCAC$OGIMG/montar/list_rc)
     164
     165# nota: mal la comparación de ->  no distingue el => para los enlaces duros
     166while read dest enlace orig
     167do
     168   echo $dest ... $enlace ... $orig
     169   if [ "$enlace" == "->" ]
     170   then
     171        echo enlace: $enlace
     172        OPTLN='-s'
     173   fi
     174
     175   echo "ln $OPTLN   ${dest%\/*}/$orig $dest"
     176   #ln $OPTLN   ${dest%\/*}/$orig $dest
     177   echo ""
     178done < $OGCAC$OGIMG/montar/list_ln
     179
     180}}}
     181
     182== Transformando una imagen de partclone en sqfs ==
     183
     184Partimos de una imagen de partclone comprimida, la transformamos en una que se pueda montar.
     185
     186Se restaura la imagen en un fichero (dos opciones según el compresor):
     187{{{
     188cat Imagen.img.gz | gzip -d -c | partclone.restore -C -s - -O imgMontable.img
     189
     190lzop -dc Ubuntu11.img | partclone.restore -C -s - -O ubuntu11Montar.img
     191}}}
     192
     193Montando la imagen
     194{{{
     195mkdir montar
     196mount -o loop ubuntuMontar.img montar/
     197mount.ntfs-3g -o loop w7BasicaMontar.img montar/
     198}}}
     199
     200Comprimiendo la imagen en formato sqfsImage.sqfs.lib
     201
     202{{{
     203cd /opt/opengnsys/images
     204sudo mkdit montar
     205sudo mount -o loop ubuntuMontar montar
     206sudo mksquashfs montar ubuntuMontar.sqfs
     207}}}
     208
     209Montando el fichero sqfs
     210{{{
     211mount -t squashfs -o loop ubuntuMontar.sqfs montar
     212}}}