Introduzione

rsync è un fantastico programma che scarica le parti di un file che sono cambiate nel server. Il sito https://launchpad.net/products/rsync è una buona risorsa di informazioni.

Una cosa molto bella riguardo come vengono create le immagini dei CD di Ubuntu è che con rsync è facile tenere una copia locale aggiornata. Dato che le immagini giornaliere cambiano di solito solo in minima parte, il processo può essere abbastanza veloce.

Ottenere un immagine ISO

Tutte le immagini dei CD di Ubuntu sono disponibili sul sito http://cdimage.ubuntu.com. Il modo più veloce per scaricarle la prima volta è usando Torrent.

Aggiornare l'immagine ISO

Un certo numero di server Ubuntu fungono anche da serventi rsync con indirizzi simili a quelli del sito web. Ad esempio il comando:

rsync -tzhhP rsync://cdimage.ubuntu.com/cdimage/daily-live/current/natty-desktop-i386.iso .

sincronizzerà l'immagine giornaliera desktop di Lucid (per la piattaforma i386) con la tua versione locale (il puntino indica il punto corrente della shell). I parametri indicano: -z di usare la compressione, -hh di usare unità di misura facilmente leggibili dall'uomo (Kb, Mb, ecc) e -P indica di mostrare lo stato di progresso.

Nota: Se state scaricando un'altra edizione di Ubuntu non dimenticate di indicare il nome dell'edizione nel percorso rsync subito dopo cdimage/, ad esempio per kubuntu:

rsync -tzhhP rsync://cdimage.ubuntu.com/cdimage/kubuntu/daily-live/current/natty-desktop-i386.iso .

Esiste poi uno script un po' più avanzato per automatizzare il processo di sincronizzazione. Per eseguire con successo questo script occorre che impostiate la variabile DIR secondo le vostre esigenze. Potete impostare la variabile ISO dentro lo script o semplicemente passarla come parametro quando lo invocate a riga di comando (questo per rendere semplice sincronizzare più immagini). In alcuni casi si renderà necessario impostare la variabile ISOPATH se state scaricando un immagine non rilevata automaticamente. Assicuratevi di avere "#!/bin/bash" nella prima riga dello script.

#Script for updating individual ISO image at cdimage.ubuntu.com (daily/current versions).
#Orginal script written by Henrik Omma, slightly adjusted by Bert Verhaeghe, then a bit by Victor Van Hee
#Jeremy Yoder made it try to automatically pick an ISOPATH, adapted to karmic by Christian Bangerter

# Change this next line to the directory where your previously downloaded iso image sits.
DIR="/home/USERNAME/Desktop/Lucid"

# Choose only one of the iso files below and uncomment it
ISO="lucid-desktop-amd64.iso"
# ISO="lucid-desktop-i386.iso"
# ISO="lucid-alternate-amd64.iso"
# ISO="lucid-alternate-i386.iso"

# Uncomment the line below if you want a different image not listed below
# ISOPATH="cdimage.ubuntu.com/cdimage/LOCATION/current"

# Default ISO to the first command-line parameter
if [ "$1" != "" ]; then
  ISO=$1
fi

if [ "$ISOPATH" = "" ]; then
  if [[ "$ISO" =~ "-desktop-" ]]; then
    ISOPATH="cdimage.ubuntu.com/cdimage/daily-live/current"
  elif [[ "$ISO" =~ "-alternate-" ]]; then
    ISOPATH="cdimage.ubuntu.com/cdimage/daily/current"
  elif [[ "$ISO" =~ "-dvd-" ]]; then
    ISOPATH="cdimage.ubuntu.com/cdimage/dvd/current"
  elif [[ "$ISO" =~ "-netbook-remix-" ]]; then
    ISOPATH="cdimage.ubuntu.com/cdimage/ubuntu-netbook-remix/daily-live/current"
  elif [[ "$ISO" =~ "-server-" ]]; then
    ISOPATH="cdimage.ubuntu.com/cdimage/ubuntu-server/daily/current"
  else
    echo "Unrecognized distribution, set ISOPATH manually"
    exit 1
  fi
fi

if [ ! -d $DIR ]; then
  echo "Sorry, $DIR does not exist"
  exit
fi

cd $DIR

md5sum $ISO | sed -e "s/  / */" > $ISO.md5.local 
# ^ create identical formatted md5sum file from local copy
echo ""
echo "########################################"
echo "# diff'ing MD5SUMs : local <-> server  #"
echo "########################################"

wget -q http://$ISOPATH/MD5SUMS 
grep $ISO MD5SUMS > $ISO.md5.server
rm MD5SUMS
diff -q $ISO.md5.local $ISO.md5.server

if [ ! $? -eq "0" ]; then
        echo ""
        echo "!!! MD5SUMs differ !!!"
        echo "...Performing rsync..."
        echo "###################"
        echo "# rsync iso image #"
        echo "###################"
        rsync -avzhhP rsync://$ISOPATH/$ISO .
else
        echo ""
        echo "MD5SUMs identical -- no need to Rsync"
        echo ""
        exit 0
fi
echo ""
echo "########################################"
echo "# diff'ing MD5SUMs : local <-> server  #"
echo "########################################"

md5sum $ISO | sed -e "s/  / */" > $ISO.md5.local
diff -q $ISO.md5.local $ISO.md5.server

if [ ! $? -eq "0" ]; then
        echo ""
        echo "!!! MD5SUMs differ !!!"
        echo "!!! Rsync failed!  !!!"
else
        echo ""
        echo "MD5SUMs identical"
        echo "SUCCESS!"
fi
echo ""

Questo script fa sostanzialmente tre cose. Per primo crea un file contenente il codice di controllo MD5SUM dell'immagine locale e remota e mostra se i due codici sono identici o meno. Se non sono identici significa che nel server è stata aggiornata l'immagine ed inizia la sincronizzazione. Al termine controlla di nuovo il codice MD5SUM e visualizza il risultato.

Uso alternativo con zsync

zsync è un'altra implementazione dello stesso algoritmo che usa rsync, ma non richiede software aggiuntivo installato sul server. Sembra essere anche leggermente più efficiente (richiede meno dati da scaricare) per le immagini ISO.

Per scaricare o aggiornare un immagine con zsync usate il seguente comando:

zsync http://cdimage.ubuntu.com/daily-live/current/natty-desktop-amd64.iso.zsync

Ulteriori Risorse


CategoryComunitaTest

GruppoTest/Iso/Rsync (l'ultima modifica è del 31/03/2012 00.27.24, fatta da NicolaCorti)