Pagina 1 di 1

Creare dei TGZ PROGRESSIVI

Inviato: mer 18 lug 2007, 18:33
da lucabaldazzi
Ciao,
scusate il disturbo.
Dovrei fare un TGZ del contenuto intero di una directory /home/luca/* . E fin qui nessun problema, ma dovrei fare una cosa del genere

luca_01.tgz (per il giorno 18/07)

Il giorno 19/07 luca_01.tgz deve diventare luca_02.tgz e crearne uno nuovo luca_01.tgz (relaviro al gg 19/07)

Il giorno 20/07 luca_01.tgz deve diventare luca_02.tgz, luca_02.tgz deve diventare luca_03.tgz e crearne uno novo relativo al gg 20/07

Qualcuno puo' aiutarmi o darmi delle info per partire?

Grazie Luca

Inviato: mer 18 lug 2007, 22:01
da albatros
Se metti i tgz in una directory puoi contarli con qualcosa tipo ls | wc -l , oppure puoi salvare il totale in un file, quindi crei una variabile tipo $ultimo pari al valore più grande e rinomini con mv tutti i tgz dal più grande al più piccolo incrementando nel file destinazione $ultimo di una unità; arrivato in fondo, crei l'archivio giornaliero sempre con lo stesso comando tar.

Se mi permetti un'osservazione, non ti converrebbe mettere semplicemente la data nel nome dell'archivio tar, magari con un formato tipo date +"%y%m%d" in modo che ti rimanga ordinato?
E' veloce rinominare i file, anche se fossero centinaia, però quest'altro sistema sarebbe più semplice e per questo motivo, salvo tue più che legittime esigenze particolari, a parer mio preferibile.

:)

Inviato: gio 19 lug 2007, 7:36
da acrive
Perchè non usare RSYNC e farsi un server di backup? O pur semplicemente uno scriptino con rsync che sincronizza il contenuto della tua home in una temporanea che poi a sua volta viene targizzata ?
Potresti magari implementare nello script di lasciare copie di backup fino a 3 gg prima dopodichè verranno eliminati (ovviamente se presenti quelli successi).
Guarda Luca.. mi hai dato una bella idea ;)

Inviato: gio 19 lug 2007, 11:56
da lucabaldazzi
Ciao a tutti,
grazie per avermi risposto.
Nell'immediato ho cercato di inventarmi questo piccolo scritp (stra casalingo)

Codice: Seleziona tutto

#!/bin/bash
# ESEGUE IL BACKUP A PARTIRE DALLA DIR PASSATA
# COME PARAMETRO $1

# FA UN LOG CON TUTTI I FILE E LE DIRECTORY
# SERVE PER CREARE LE DATE DA INSERIRE NEL LOG
tree -sifD $1 > tmp
mv tmp /var/log/backup/backup_date_tgz.log

# RINOMINO I FILE PER AVERNE 3 VERSIONI
mv /mnt/agverona/_backup/documenti_02.tgz /mnt/agverona/_backup/documenti_03.tgz
mv /mnt/agverona/_backup/documenti_01.tgz /mnt/agverona/_backup/documenti_02.tgz


# ESEGUO IL BACKUP E SCRIVO IL FILE LOG
tar -zcvpf /mnt/agverona/_backup/documenti_01.tgz $1 > /var/log/backup/backup_tgz.log
albatros mi interesserebbe codificare i file compressi con la data, ma non saprei come fare. Mi puoi aiutare sulla base di quello che ti ho incollato sopra?

Grazie a tutti.

P.s.: Per acrive.
rsync con il parametro --delete lo utilizzo per salvare i dati giornalmente, ma se per disgrazie (sicuramente accadrà spesso... non hai idea con che persone lavoro :-) ) vengono cancellati dei file allora ho la possibilità di indietreggiare di 3gg.
Il parametro rsync che utilizzo è

Codice: Seleziona tutto

rsync -av --delete --force /mnt/agverona/* /mnt/agverona_mirror/
cosa ne dici.. potrebbe andare bene?
Se per caso succede qualcosa durante la copia, utilizzando il parametro '--delete' non rischio di cancellare tutto e non avere il backup giornaliero?

Aspetto vs notizie..

Grazie a tutti
Luca

Inviato: gio 19 lug 2007, 13:37
da mauro
x quanto riguarda l'uso della data nel nome file ti posto un esempio

Codice: Seleziona tutto

touch "nome-file-$(date +%y%m%d)"

Inviato: gio 19 lug 2007, 14:02
da albatros
Ecco, ti ha già risposto mauro, basta che inserisca nel nome del file creato con tar $(date +%y%m%d) , visto che la data cambia tutti i giorni, puoi fare il backup sempre con lo stesso comando (eventualmente marca allo stesso modo anche il file di log se ritieni opportuno crearlo).
Per quanto riguarda l'opzione delete, dipende da quello che succede, ma indicativamente direi di no...

Semmai spero che la directory del backup non risieda sullo stesso hd, anzi, meglio sarebbe che stesse proprio su un'altra macchina o su un dispositivo removibile.
Se si tratta di dati di lavoro, io andrei su due backup distinti per maggiore sicurezza, ci vuole leggermente di più a farli, ma ti danno anche tanta sicurezza in più...

Inviato: gio 19 lug 2007, 19:17
da acrive
Perchè usare il delete in rsync? Senza vai ad aggiornare nella directory di destinazione le sole differenze. Successivamente quella potrà essere compattata.

Io mi sono fatto uno scriptino. Solo che ora sto cercando di capire alcuni errori e sopratutto di pulire eventuali messaggi che non servono al fine..
Guarda.. ti posto la bozza.. ma è approssimativa e devo controllare meglio il check per quanto riguarda la rinomina dei file più vecchi..
La soluzione che ho adottato non è la migliore, ma è quella che mi è venuta prima in mente.. ma ora che ci penso.. potrei sostituirla con un find e sfruttare le sue opzioni per la differenziazione in base ai giorni di accesso (ctime&co..)

Molto probabilmente ci sono errori stupidi, ma ho solo 3 ore di sonno e i 35 gradi sò tosti da sopportare... ;)

Codice: Seleziona tutto

#!/bin/bash

BACKUPDIR=$1
DESTDIR=$2
TEMPDIR="/tmp/back/"
DATE=`date`
LOGFILE="/var/log/backup/backup_date_tgz.log"

f1() {
      
	#Ipotizzo che nella dir dove si andra' ad effettuare il backup
	#ci siano solamente questi 3 file
	
	#TEST
	echo Test
	echo "Backupdir=$BACKUPDIR"
	echo "DESTDIR=$DESTDIR"
	echo "TEMPDIR=$TEMPDIR"	

	echo "Backup del giorno $DATE" >> $LOGFILE
	tree -sifaD $1 >> $LOGFILE #rsync synca anche eventuali file nascosti
	DAY3=`ls -lht $2 | tail -1 | grep -v total | awk '{print $8}'` #file giorno 3, più vecchio
	DAY2=`ls -lht $2 | tail -2 | head -1 | grep -v total | awk '{print $8}'`#file giorno 2
	DAY1=`ls -lht $2 | tail -3 | head -1 | grep -v total | awk '{print $8}'`#file giorno 1, più nuovo 

	if [ -e $DAY1 ]
	then
		mv $DESTDIR/$DAY1 $DESTDIR/backup-01.tar.gz
	elif [ -e $DAY2 ]
	then
		mv $DESTDIR/$DAY2 $DESTDIR/backup-02.tar.gz
	elif [ -e $DAY3 ]
	then
		mv $DESTDIR/$DAY3 $DESTDIR/backup-03.tar.gz
	else echo "Non ho trovato nulla!!,Primo avvio?"
	fi
	
	#TEST
	echo TEST
	echo DAY1=$DAY1
	echo DAY2=$DAY2
	echo DAY3=$DAY3
	echo TESDIR=$DESTDIR/$DAY3
	#Facciop una sync della dir da backuppare in una temporanea 
	#da dove successivamente andremo a creare il file di backup
	#PErche' usare il delete? come farò io andrò ad aggiornare le differenze
	#tra le due directory senza cancellare nulla.
	rsync -av --stats $1 $TEMPDIR
	tar -zcvpf $DESTDIR/backup-LAST.tar.gz $BACKUPDIR  #dovro' studiarmi bene le regexp prima o poi...
       
}




if [ -z $1 -a -z $2 ]
then 
	echo "Errore! Usare $0 <BACKUPDIR> <DESTDIR>"
else
	echo "Backup di $1 in corso..."
	sleep 2
	f1
fi




Spero di aver aiutato...

Salut!

Inviato: ven 20 lug 2007, 12:17
da albatros
Perchè usare il delete in rsync?
Perché magari ci sono dei file che hai volutamente cancellato e di cui non ti interessa mantenere una copia di backup che occuperebbe solo spazio inutilmente e fastidiosamente.

Inviato: ven 20 lug 2007, 13:06
da acrive
Si lo sapevo ;) .. Però se ti interessa mantenere i backup fino a 3 giorni fa, credo che un'opzione come delete non è che sia una gran cosa.. E se qualcuno per sbaglio cancella un file? Alla fine andremo a backuppare anche gli errori. E a questo punto il giochillo dei 3 gg va a farsi friggere..