« Ntp e Gps | Main | Convertire un video rapidamente »

Backup del pc con disco di rete basato su linux

Da poco sono venuto in possesso di un disco di rete basato su linux di svariati tera.
Questo mi ha permesso di modificare il mio sistema di backup, in
modo tale da fare automaticamente il backup di alcune directory del
mio portatile quotidianamente se sono a casa e una volta al mese,
un bel backup storico.

Tutto si basa su un semplice comando presente praticamente in ogni
distribuzione di linux: rsync.

Avendo un disco di rete basato su linux ho potuto installare tale comando
e configurarlo per agire come server. Lato portatile ho fatto uno script
che quando viene lanciato, verifica che il disco di rete sia raggiungibile,
e in caso positivo lancia rsync per syncronizzare o fare un backup mensile
delle cose che reputo importanti sul mio portatile.

Questo e' lo script, chiamato home-backup.sh

#!/bin/bash

BACKUPDAY=`date +%d%m%Y`

RUNNING_USER=`id -u`
if [ $RUNNING_USER != "0" ];then
echo "This script must be runned with root privileges!(DATE: $BACKUPDAY)"
exit 1
fi

SOURCEDIR="DIRSOTTOBACKUP"
BACKUPSERVER="IPDISCORETE"
BACKUPMODULE="MODULO-RSYNC"

RSYNC=`which rsync`

if [ $1 == "sync" ];then
RSYNC_EXT_OPT=""
RSYNC_LOG="/var/log/rsync-backup/rsync-sync-${BACKUPDAY}.log"
BACKUPDIR="daysync"
elif [ $1 == "backup" ];then
RSYNC_EXT_OPT="-W"
RSYNC_LOG="/var/log/rsync-backup/rsync-backup-${BACKUPDAY}.log"
BACKUPDIR="monthsync/${BACKUPDAY}"
else
RSYNC_LOG="/var/log/rsync-backup/rsync-sync-${BACKUPDAY}.log"
RSYNC_EXT_OPT=""
BACKUPDIR="daysync"
fi

RSYNC_OPT="-rlptgoD --timeout 120 --numeric-ids --delete-after --stats --progress --human-readable --log-file=${RSYNC_LOG}"
RSYNC_EXCLUDE="--exclude-from EXCLUDEFILE"

GZIP=`which gzip`
GZIP_OPT="-9"

ping -c 3 ${BACKUPSERVER} > /dev/null
if [ $? != "0" ]; then
exit 1
fi

echo -e "Type of backup:\t\t$1"
echo -e "Date:\t\t\t${BACKUPDAY}"
echo -e "Source:\t\t\t${SOURCEDIR}"
echo -e "Destination server:\t${BACKUPSERVER}"
echo -e "Destination module:\t${BACKUPMODULE}"
echo -e "Destination dir:\t${BACKUPDIR}"
echo -e "Rsync options:\t\t${RSYNC_OPT}"
echo -e "Rsync extra options:\t${RSYNC_EXT_OPT}"
echo -e "Rsync exclude file:\t${RSYNC_EXCLUDE}"
echo -e "Rsync log file:\t\t${RSYNC_LOG}"
echo -e "\n\n"

#echo "${RSYNC} ${RSYNC_OPT} ${RSYNC_EXT_OPT} ${RSYNC_EXCLUDE} ${RSYNC_LOG} ${SOURCEDIR} ${BACKUPSERVER}::${BACKUPMODULE}/${BACKUPDIR}"
${RSYNC} ${RSYNC_OPT} ${RSYNC_EXT_OPT} ${RSYNC_EXCLUDE} ${RSYNC_LOG} ${SOURCEDIR} ${BACKUPSERVER}::${BACKUPMODULE}/${BACKUPDIR}
${GZIP} ${GZIP_OPT} ${RSYNC_LOG}

L'ho salvato in una directory chiamata bin nella mia home, quindi il path
per eseguirlo e' /home/mioutente/bin/home-backup.sh
I parametri importanti sono i seguenti:

SOURCEDIR: Una lista delle directory da mettere sotto backup
BACKUPSERVER: Indirizzo ip o hostname del disco di rete dove gira rsync in modalita' server
BACKUPMODULE: il modulo rsync sotto cui andare a depositare il sync/backup.
RSYNC_EXCLUDE: Dovete inserire il nome di un file che contenga una lista di cosa volete escludere dal backup. Io per esempio evito di copiarmi le directory chiamate cache o Cache.

Dovete crearvi una directory /var/log/rsync-backup in cui finiranno i log delle
operazioni di backup.
Lo script prevede di girare esclusivamente con l'uid di root, questo perche'
nel mio caso oltre a fare il backup della mia home, recupera anche la etc e altre
cosette sparse per il filesystem.
Lato disco di rete dovete prevedere due directory sotto il modulo rsync chiamate
monthsync e daysync.

Lo script deve essere chiamato con primo argomento sync o backup; nel primo caso viene effettuato un sync verso una
directory gia' popolata in precedenza (ovviamente non la prima volta), mentre
con backup, il sync avviene verso una directory chiamata GIORNOMESEANNO sotto
monthbackup completamente nuova.

Sul crontab del mio portatile ho aggiunto queste linee:

# Rsync backup at home with autodetect 03 2,15 2-31 * * root /home/miahome/bin/home-backup.sh sync &> /var/log/rsync-backup/rsync.log 00 15 1 * * * root /home/miahome/bin/home-backup.sh sync &> /var/log/rsync-backup/rsync.log 00 3 1 * * * root /home/miahome/bin/home-backup.sh backup &> /var/log/rsync-backup/rsync.log

In questo modo ogni giorno alle 2.00 e alle 15.00 c'e' un sync delle mie directory.
Tranne il primo giorno che alle ore 3 c'e' un backup distinto e alle 15 il normale sync.

Lato disco di rete la configurazione e' alquanto banale, individuato dove
salvare i miei backup creare due directory chiamate sync e monthbackup.
La configurazione lato server e' la seguente contenuta nel file /etc/rsyncd.conf

# rsyncd.conf # # configure according to your needs

uid = root
gid = root
use chroot = yes
max connections = 5
syslog facility = local3
pid file = /var/run/rsyncd.pid
secrets file = /opt/etc/rsyncd.secrets
timeout = 300

[sync]
path = PATHMODULO
comment = Backup sync for my notebook
read only = no
host allow = IPPORTATILE
numeric ids = yes
#log file = /var/log/rsyncd.log
#max verbosity = yes
list = yes

Sostituite PATHMODULO con il path ove volete salvare i vostri backup e il sync
quotidiano sul disco di rete.

Per lo script di autostart, cosi' rsync sul disco di rete sara' avviato ogni volta
che verra' riacceso, dovra' contenere il seguente comando:

rsync --daemon --config=/etc/rsyncd.conf

Questo splendido giochino mi permette di stare sereno sulla questione del
backup del mio portatile, e nella peggiore delle ipotesi avro' il backup
quotidiano del mio portatile. Ovviamente questa certezza dipende dal
fatto che ho scelto degli orari in cui so che il mio portatile sara' acceso
e quindi lo script sara' in grado di farlo autonomamente.

Nel caso vogliate un un sync o un backup a mano, vi basta lanciare lo script
in qualsiasi momento o con l'opzione sync o con l'opzione backup.

TrackBack

TrackBack URL for this entry:
http://service.ipv7.org/mt/mt-tb.cgi/27

Post a comment

(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)

About

This page contains a single entry from the blog posted on 21.08.09 04:11.

The previous post in this blog was Ntp e Gps.

The next post in this blog is Convertire un video rapidamente.

Many more can be found on the main index page or by looking through the archives.

Creative Commons License
This weblog is licensed under a Creative Commons License.
Powered by
Movable Type 3.33