PDA

View Full Version : Backup su Linux: strategie e strumenti per eseguirlo


Acrobat
02-12-2003, 16:34
Ho fatto una ricerca ma mi pare non se ne sia ancora parlato..

Come fate i vostri backup sul pinguino(e affini?) Che politiche di backup seguite,che programmi usate? Prediligete un salvataggio più automatizzato o più manuale? Usate più tipi di periferiche/supporti,ne avete alcune dedicato solo al backup?

Per chi è in dual boot,o ha una rete con più s.o. installati,sarebbe anche interessante sapere se la procedura coinvolge dei dati sotto win in qualche modo..

Grazie a tutti! :)

NA01
02-12-2003, 16:40
sistema configurato lo salvo con il live cd di partimage, il resto con banali archivi

cia

Acrobat
02-12-2003, 16:44
Originariamente inviato da NA01
sistema configurato lo salvo con il live cd di partimage, il resto con banali archivi

cia


Se ti va,potresti essere più dettagliato? Tnx:)

NA01
02-12-2003, 16:49
http://www.partimage.org/
partimage lo trovi qua.
è un programma tipo ghost.

i banali archivi sono quelli che ottieni con tar e li uso per salvare i dati della home

ciao

Acrobat
02-12-2003, 17:24
Originariamente inviato da NA01
http://www.partimage.org/
partimage lo trovi qua.
è un programma tipo ghost.

i banali archivi sono quelli che ottieni con tar e li uso per salvare i dati della home

ciao


Grazie,avrei qualche domanda:

Ci sono altri programmi tipo partimage per linux? E partimage,è il migliore?

Per gli archivi,che opzioni usi? tipo: per salvare solo i files nuovi,per riconoscere e salvare i files modificati dall'ultima volta ecc.

Sei paranoico(I Am :p ) e verifichi in qualche modo(automatico o manuale) i dati contenuti nell'immagine e nei tar?

Quali sono i prog per backup più rinomati per Linux?

hardskin1
02-12-2003, 17:43
OT: L'autore di Qtparted cerca un hard disk di prova.
Dalla pagina dedicata al QtParted:

Looking for a free hard disk:
As you can imagine to do real test with qtparted I need to use an hard drive... For now I'm testing qtparted on my "only one" hard disk, so as you an imagine, if something goes wrong... :(
I'm looking for some sponsor that can send me a free hard disk. It will be hard for me to release 0.4 version without have an hard disk to dedicate to qtparted :(

Vanni

Per chi non capisce l'inglese: l'autore del programma cerca sponsor/donazioni per potersi permettere un disco nuovo. Attualmente tutte le prove che fa sono sul suo disco personale, se qualcosa non funziona...

Questa la pagine del progetto:
http://qtparted.sourceforge.net/

Ikitt_Claw
02-12-2003, 18:26
Originariamente inviato da Acrobat
Come fate i vostri backup sul pinguino(e affini?) Che politiche di backup seguite,che programmi usate?

dopo lunga ricerca, ho trovato in dar quello che fa per me.
La politica di backup e` teoricamente quindicinale, in pratica e` ogni-due-settimane-se-mi-ricordo, salvo per cose particolarmente importanti
(nel mio piccolo) per cui faccio eccezione :D


Prediligete un salvataggio più automatizzato o più manuale? Usate più tipi di periferiche/supporti,ne avete alcune dedicato solo al backup?

La procedura e` semi-automatizzata. Ho uno script che fa quasi tutto il lavoro tranna la bruciatura delle ISO, ma che lancio a mano dopo essere passato/bootato in single user mode.
Come periferica di backup uso CD-R o CD-RW per le copie volanti, per le mie esigenze e` piu` che adeguato.

Jøhñ Ðøë
02-12-2003, 18:29
io uso tar anche se è in previsione il passaggio a dar per via delle slice

sistema automatizzato che backuppa dal raid scsi all'ata, non brucio i cd se non una volta al mese della mia home, vivo nella speranza che 3 dischi insieme non si spappolino... almeno uno per volta :D

John

Acrobat
02-12-2003, 18:32
Originariamente inviato da Ikitt_Claw
dopo lunga ricerca, ho trovato in dar quello che fa per me.
La politica di backup e` teoricamente quindicinale, in pratica e` ogni-due-settimane-se-mi-ricordo, salvo per cose particolarmente importanti
(nel mio piccolo) per cui faccio eccezione :D



La procedura e` semi-automatizzata. Ho uno script che fa quasi tutto il lavoro tranna la bruciatura delle ISO, ma che lancio a mano dopo essere passato/bootato in single user mode.
Come periferica di backup uso CD-R o CD-RW per le copie volanti, per le mie esigenze e` piu` che adeguato.


Dar..è a linea di comando?

C'è un motivo particolare per cui passi in single user?

Ikitt_Claw
02-12-2003, 18:54
Originariamente inviato da Acrobat
Dar..è a linea di comando?

Si, sostanzialmente e` un tar con gli steroidi e non pensato per l'archiviazione su nastro; permette cose carine come l'estrazione di singoli file, l'accesso casuale ai file negli archivi, la suddivisione in automatico in slice di dimensione max prefissata degli archivi, e dovrebbe anche essere piu` resistente alla corruzione.

C'è un motivo particolare per cui passi in single user?

L'ideale sarebbe farlo completamente off-line, ma la mia pigrizia ha il sopravvento. Il motivo principale e` che nei mie backup sono solitamente compresi anche snapshot del sistema, e quindi e` estremamente salutare avere le acque quanto piu` calme possibili nel procedere, per evitare incoerenze.

maxithron
03-12-2003, 01:21
dai anche un'occhiata a questo thread:

http://forum.hwupgrade.it/showthread.php?s=&threadid=510392

Acrobat
03-12-2003, 07:25
Originariamente inviato da maxithron
dai anche un'occhiata a questo thread:

http://forum.hwupgrade.it/showthread.php?s=&threadid=510392

Parecchio interessante!

Up! Nessun'altro?

hardskin1
03-12-2003, 07:48
Ho sentito parlare abbastanza bene di questo:
http://www.microwerks.net/~hugo/

cn73
03-12-2003, 09:48
Ti segnalo 2 ottimi (a mio parere) links sull'argomento, con esempi pratici di script...

http://www.linuxgazette.com/issue91/keates.html
http://www.linuxgazette.com/issue47/pollman.html

cn73
03-12-2003, 09:53
Fra gli altri trovi questo, che è proprio una bella soluzione:


#!/bin/bash
# backup
#------------------------------------------------------------------------------
# Script to enable easy backup of all important Linux files
# and also creates a customised system repair disk.
# Uses two CD-RW Disks labled "RED" and "GREEN to rotate backups
#------------------------------------------------------------------------------
# The backup directory already contains files for boot and recovery.
# One can add much more - my Slackware 8.1 system backup is < 580MB.

Backup_Dirs="/home /etc /usr/local /opt /var /root /boot"
Backup_Dest_Dir=/tmp/backup
Backup_Date=`date +%b%d%Y`
Image_File=/tmp/backup.iso
declare -i Size

# Create tar file with todays Month Day Year prepended for easy identification
tar cvzf $Backup_Dest_Dir/$Backup_Date.tar.gz $Backup_Dirs &> /dev/null

# Start backup process to local CD-RW drive
echo "Backing up $Backup_Dest_Dir to CD-RW Drive - $Backup_Date"
echo "Creating ISO9660 file system image ($Image_File)."

mkisofs -b toms288.img -c boot.cat -r \
-o $Image_File $Backup_Dest_Dir &> /dev/nul

# Check size of directory to burn in MB
Size=`du -m $Image_File | cut -c 1-3`
if [ $Size -lt 650 ]
then
echo "Size of ISO Image $Size MB, OK to Burn"
else
echo "Size of ISO Backup Image too Large to burn"
rm $Backup_Dest_Dir/$Backup_Date.tar.gz # Remove dated tar file
rm $Image_File # ISO is overwritten next backup but cleanup anyway
exit 1
fi

# Burn the CD-RW
Speed=4 # Use best speed for CD-RW disks on YOUR system
echo "Burning the disk."
# Set dev=x,x,x from cdrecord -scanbus
cdrecord -v speed=$Speed blank=fast dev=1,0,0 $Image_File &> /dev/null
Md5sum_Iso=`md5sum $Image_File`
echo "The md5sum of the created ISO is $Md5sum_Iso"

# Could TEST here using Md5sum_Iso to verify md5sums but problem is tricky.
echo "To verify use script md5scd, this will produce the burned CD's md5sum"
echo "run this as User with backup CD in drive to be used for recovery."
echo "This verifies not only the md5sum but that disk will read OK when needed."

# Remove image.iso and compressed tar file
echo "Removing $Image_File"
rm $Image_File
echo "Removing : $Backup_Dest_Dir/$Backup_Date.tar.gz"
rm $Backup_Dest_Dir/$Backup_Date.tar.gz
echo "END BACKUP $Backup_Date"
echo "Be sure to place this backup in the RED CD case and previous CD in GREEN"
echo "------------------------------------------------------------------------"
exit 0

Come vedete il problema è per iso di dimensione superiori ai 650 mb (o cmq alla dimensione di un cd)...Perchè non lo miglioriamo per creare un set di dischi?

Acrobat
03-12-2003, 12:55
Originariamente inviato da cn73

MEGA-CUT

...Perchè non lo miglioriamo per creare un set di dischi?


Intanto grazie,poi..beh,sarabbe veramente grandioso! Solo che non ne ho ancora le capacità(ho comprato il bellissimo "learnin the bash shell" ma devo trovare il tempo..) :( posso cercare di contribuire con idee se vuoi. Tu te la cavi con la shell?

E,altri bash-wizards...anyone?:) dai che se viene fuori bene è una bella soddisfazione!

Ikitt_Claw
03-12-2003, 13:01
Originariamente inviato da Acrobat
E,altri bash-wizards...anyone?:) dai che se viene fuori bene è una bella soddisfazione!

Ho affrontato un problema simile e ho trovato una (rozza) soluzione in python.
L'idea di fondo e` farsi una lista completa di tutti i file da backuppare, quindi rifarsi dal principio e calcolare le dimensioni di ognuno, includendo tutti i file in una sottolista; quando la sottolista raggiunge le dimensioni volute, la si cambia.
Alla fine, si backuppano individualmente le sottoliste ottenute...

hardskin1
03-12-2003, 13:34
Modesta idea:
Si crea un unico archivo, si splitta con il comando "split" in file grossi quanto l'unita' di backup e si crea la iso. Per rendere piu' sicuro il meccanismo si farcisce il tutto con vari controlli MD5 per verificare che non ci siano errori.

Ikitt_Claw
03-12-2003, 15:33
Originariamente inviato da hardskin1
Modesta idea:
Si crea un unico archivo, si splitta con il comando "split" in file grossi quanto l'unita' di backup e si crea la iso. Per rendere piu' sicuro il meccanismo si farcisce il tutto con vari controlli MD5 per verificare che non ci siano errori.

Ci avevo pensato ed e` una buona soluzione, ma ha un difetto nella fase del recupero da errori.
Con l'MD5 mi accorgo se un frammento dell'archivio e` corrotto, ma una volta che l'ho perso sono a piedi, perche` i restanti pezzi dell'archivio non sono a loro volta archivi validi.
La soluzione (rozza) che ho poi adottato voleva migliorare le cose in questo senso.

cn73
03-12-2003, 18:26
Si me la cavo, ma anche io come tempo... :rolleyes:

Cmq se guardate lo script, c'è una chiamata


Ecco lo script md5sum:
[code]
#!/bin/bash
#------------------------------------------------------------------------
# md5scd ---- Data CD md5sum Verifier
# Script to automate determining Md5sum for ISO9660 CDs
# NOTE - This script assumes that correct md5sum is known and one wishes
# to verify that a particular CD copy has been burnt correctly.
# If working from a downloaded ISO image use "md5sum ISO" at command line
#------------------------------------------------------------------------
# Requires standard tools found in all Linux Distributions
# If script invoked as user, check all permissions, groups, etc.

# Missing arguments?
if [ $# -ne 2 ]
then
echo "Usage - md5scd mountpoint device, ex - md5scd /mnt/cdrom /dev/hdc"
exit 1
else
: OK have arguments
fi

# Loop over md5sum determination ...100 good copies for install-fest?
again=yes
while [ "$again" = yes ]
do
echo "Please insert CD at $1 and press ENTER when ready"
read #Wait for insertion of disk
mount $1
Block_Count=`df -k $1 | grep $1 | cut -c 25-30`
#700Mb disk cannot exceed this ^^^^^ column limit in 1k blocks
umount $1
Md5sum_Cd=`dd if=$2 count=$Block_Count bs=1024 | md5sum`
echo "The md5sum of the CD at $1 is " $Md5sum_Cd
echo
echo -n "Verify another CD? [yes/no]"
read again # Wait for "yes" -> repeat, anything else -> drop through'
done
exit 0

Acrobat
04-12-2003, 07:19
Originariamente inviato da Ikitt_Claw
Ho affrontato un problema simile e ho trovato una (rozza) soluzione in python.
L'idea di fondo e` farsi una lista completa di tutti i file da backuppare, quindi rifarsi dal principio e calcolare le dimensioni di ognuno, includendo tutti i file in una sottolista; quando la sottolista raggiunge le dimensioni volute, la si cambia.
Alla fine, si backuppano individualmente le sottoliste ottenute...


Cioè il tuo prog crea una lista di tutti i files presenti nelle dir che vuoi backuppare,e una volta ottenuta questa esegue un controllo sulla dimensione di ognuno,e poi?

Ikitt_Claw
04-12-2003, 08:07
Originariamente inviato da Acrobat
Cioè il tuo prog crea una lista di tutti i files presenti nelle dir che vuoi backuppare,e una volta ottenuta questa esegue un controllo sulla dimensione di ognuno,e poi?

Probabilmente si fa prima a farlo (vedere, il codice) che a dirlo:

Questo che segue sostanzialmente fa quanto fa find:

#!/usr/bin/python

VERSION=0.0.1

import sys, os, getopt

EXCLUDE="/etc/mybackup/exclude.lst"
CONFIG="/etc/mybackup/mybackup.conf"

def usage():
print "%s is part of mybackup." %(sys.argv[0])
print "%s generates file list to use with mkarchive, from a given path" %(sys.argv[0])
print "usage: %s [opts] basedir" %(sys.argv[0])
print "\t-h : display this message"
print "\t-V : show version and exit"
print "\t-f <file> : use <file> as configuration file, not default (%s)" %(CONFIG)
print "\t-x <file> : optional exclude list (default: %s)" %(EXCLUDE)


def print_if(exclude, dirname, fnames):
for f in fnames:
good = 1
cur = os.path.join(dirname, f)
if(os.path.isdir(cur)):
continue
# ci pensera` un'altra invocazione fatta da os.path.walk
for x in exclude:
if cur.find(x) != -1:
good = 0
if good:
print cur




try:
opts, args = getopt.getopt(sys.argv[1:], "f:x:h")
except getopt.GetoptError:
pass

opts = dict(opts)
if opts.has_key("-V"):
print "%s version %s" %(sys.argv[0], str(VERSION))
sys.exit()

if not args or len(args) > 1 or opts.has_key("-h"):
usage()
sys.exit(0)
try:
exclude = [ f[:-1] for f in file(opts["-x"], 'r').readlines() ]
except KeyError, IOError:
exclude = []

basedir = args[0]
os.path.walk(basedir, print_if, exclude)


questo invece e` lo script che divide in set la lista omnicomprensiva dei file da backuppare:

#!/usr/bin/python

VERSION=0.0.1

import sys, os, getopt

MAX_SIZE=long(700*1024*1024) # in bytes!
VERBOSE=False

def usage():
print "%s is part of mybackup." %(sys.argv[0])
print "%s generates segmentated file list to use with mkarchive, to create archive limited in size" %(sys.argv[0])
print "usage: cat fulldirlist | %s [opts] segbasename" %(sys.argv[0])
print "\t-h : display this message"
print "\t-v : verbose execution"
print "\t-f <file> : --UNRECOGNIZED-- use <file> as configuration file, not default"
print "\t-s <size> : maximum segment size (default: %s)" %(str(MAX_SIZE))


def fmkname(name, seq):
return name + '_' + str(seq)

try:
opts, args = getopt.getopt(sys.argv[1:], "f:s:hv")
except getopt.GetoptError:
pass

opts = dict(opts)
if opts.has_key("-V"):
print "%s version %s" %(sys.argv[0], str(VERSION))
sys.exit()

if not args or len(args) > 1 or opts.has_key("-h"):
usage()
sys.exit(0)
try:
seg_size = long(int(opts["-s"]) * 1024 * 1024)
except KeyError:
seg_size = MAX_SIZE
if opts.has_key("-v"):
VERBOSE=True

basename = args[0]
seg_num = 0
cur_size = 0
lines = 0

f = file(fmkname(basename, seg_num), "w")
while 1:
lines += 1
l = sys.stdin.readline()[:-1]
if not l:
break
try:
s = os.stat(l)[6]
except OSError:
print("[%s] set #%s: unable to stat '%s', skipped..." %(sys.argv[0], str(seg_num), l))
if (cur_size + s) > seg_size:
# rotate file
seg_num += 1
cur_size = 0
f.close()
f = file(fmkname(basename, seg_num), "w")
cur_size += s
f.write(l + '\n')
if VERBOSE:
print("[%s] set #%s: including '%s'" %(sys.argv[0], str(seg_num), l))
if VERBOSE:
print "[%s] done: %s files in %s segments" %(sys.argv[0], str(lines), str(seg_num+1))


ribadisco e sottolineo che i due script sono rozzi, perfettibili e non largamente testati (e sotto licenza BSD, va).

PS: richiesto Python 2.2 o superiore o un po` di adattamento del codice...

PaTLaBoR
04-12-2003, 10:36
"tar -cjvf backup.tar.bz2 /" :sofico: