Newsgroup: it.comp.os.linux.software
Titolo: Mirror dei dati

Ciao a tutti.
Ho bisogno di avere su un server di backup o su un hard disk di rete una 
copia esatta dei dati del server principale.
Devo avere almeno 3 o 4 copie storiche complete o differenziali, in modo 
da avere un minimo di storicità dei dati..
Il problema è gestire lo spazio sul disco di backup, in modo da non 
riempirlo inutilmente (deve quindi cancellare i dati vecchi per dare 
spazio ai nuovi backup).
Voi cosa usate normalmente? Tar e scp, Rsync o altro?
Oppure mi consigliate un software per fare quello che voglio?
Avete qualche consiglio da darmi?
Grazie mille!
Ciao
decibel.

 Voi cosa usate normalmente? Tar e scp, Rsync o altro?
Io utilizzo rsync su un hd usb/di rete da 500GB e tengo gli ultimi 31
giorni, le ultime 53 settimane e tutti i mesi (sto ancora calibrando il
meccanismo). Nel mio caso la mole dei dati è dell'ordine della decina di GB
di base e delle centinaia di MB quotidiani, quindi conto di avere uno
storico abbastanza esteso (salvo catsate di utenti: v. "Disk monitor" su
icol.debian).
Il bello è che hai delle immagini sempre disponibili agli utenti e che
vengono create in pochi minuti (per alcune centinaia di migliaia di file e
dir).
Il brutto è che per ora, almeno l'rsync disponibile in Debian testing, non
supporta le ACL, quindi devo trasferirle a parte sulle immagini.
Per gli script cron sono partito da:
http://www.mikerubel.org/computers/rsync_snapshots/
Se ti interessano, posso spedirti i miei...
Ciao,
  Void :-)

 Se ti interessano, posso spedirti i miei...
Più che volentieri, grazie!
Puoi mandarmeli a 
decib...@libero.it
.
Ciao!
Decibel.

 Più che volentieri, grazie!
Questo è una bozza di quello lanciato quotidianamente, la strategia di
cancellazione consiste semplicemente nel mantenere al massimo X backup
quitidiani:
================================================================================
#!/bin/bash
# ----------------------------------------------------------------------
# mikes handy rotating-filesystem-snapshot utility
# ----------------------------------------------------------------------
# this needs to be a lot more general, but the basic idea is it makes
# rotating backup-snapshots of /home whenever called
# ----------------------------------------------------------------------
# Original script took from:
http://www.mikerubel.org/computers/rsync_snapshots/
# ----------------------------------------------------------------------
unset PATH      # suggestion from H. Milz: avoid accidental use of $PATH
# ------------- system commands used by this script --------------------
ID=/usr/bin/id;
ECHO=/bin/echo;
MOUNT=/bin/mount;
RM=/bin/rm;
MV=/bin/mv;
CP=/bin/cp;
TOUCH=/bin/touch;
DATE=/bin/date;
FIND=/usr/bin/find;
SORT=/usr/bin/sort;
HEAD=/usr/bin/head;
TAIL=/usr/bin/tail;
NICE=/usr/bin/nice;
SMBSTATUS=/usr/bin/smbstatus;
W=/usr/bin/w;
RSYNC=/usr/bin/rsync;
GETFACL=/usr/bin/getfacl;
SETFACL=/usr/bin/setfacl;
# ------------- file locations -----------------------------------------
DESIN="D"
MOUNT_DEVICE=/dev/sdb1
SNAPSHOT_RW=/home/snapshots;
EXCLUDES=/etc/snapshots_exclude;
FIRST=`$FIND $SNAPSHOT_RW -maxdepth 1 -name "*$DESIN" | $SORT | $HEAD -n 1`;
LAST=`$FIND $SNAPSHOT_RW -maxdepth 1 -name "2*" | $SORT | $TAIL -n 1`;
DEST=`$DATE +%Y.%m.%d-%H.%M.%S`;
SOUR="/home/cad /home/pdm /home/rd"
SOUS="cad pdm rd"
# ------------- the script itself --------------------------------------
# make sure we're running as root
if (( `$ID -u` != 0 )); then { $ECHO "Sorry, must be root.  Exiting...";
exit; } fi
# get file ACLs
cd /home
$GETFACL -R $SOUS > /var/tmp/Tree.facl
# attempt to remount the RW mount point as RW; else abort
$MOUNT -o remount,rw,acl $MOUNT_DEVICE $SNAPSHOT_RW;
if (( $? )); then
{
  $ECHO "snapshot: could not remount $SNAPSHOT_RW readwrite";
  $W;
  $SMBSTATUS;
  exit;
}
fi;
# rotating snapshots of /home (fixme: this should be more general)
# step 1: delete the oldest snapshot, if it exists:
# presuppone la creazione di N cartelle dummy prima dell'avvio del
meccanismo
#if [ -d $FIRST ] ; then                                         \
#  $RM -rf $FIRST ;                                              \
#fi ;
# step 4: rsync from the system into the latest snapshot (notice that
# rsync behaves like cp --remove-destination by default, so the destination
# is unlinked first.  If it were not so, this would copy over the other
# snapshot(s) too!
$NICE $RSYNC -va --delete --delete-excluded --exclude-from="$EXCLUDES"
--link-dest="$LAST" $SOUR $SNAPSHOT_RW/$DEST-$DESIN
# set file ACLs
cd $SNAPSHOT_RW/$DEST-$DESIN
$SETFACL --restore /var/tmp/Tree.facl
# step 5: update the mtime of hourly.0 to reflect the snapshot time
$TOUCH $SNAPSHOT_RW/$DEST-$DESIN ;
# and thats it for home.
# now remount the RW snapshot mountpoint as readonly
$MOUNT -o remount,ro,acl $MOUNT_DEVICE $SNAPSHOT_RW;
if (( $? )); then
{
  $ECHO "snapshot: could not remount $SNAPSHOT_RW readonly";
  exit;
}
fi;
================================================================================
Ciao,
  Void :-)