[Risolto] Migliorare script bash Backup

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Scrivi risposta
Il_Meglio
Prode Principiante
Messaggi: 41
Iscrizione: sabato 28 giugno 2008, 11:17

[Risolto] Migliorare script bash Backup

Messaggio da Il_Meglio »

Allora... visto che mi ero stancato di scrivere lunghi comandi da terminale per fare backup (cosa che faccio molto frequentemente per ovvi motivi di sicurezza  ;D), ho deciso di fare un bel scriptino bash.
L'ho anche commentato molto in modo che sia il più chiaro possibile. Questo però è solo la prima bozza, quindi, se potete, sareste così gentili da aiutarmi a migliorarlo??
Grazie anticipatamente.

Codice: Seleziona tutto

#!/bin/bash
# Questa frase di benvenuto chiede se si vuole creare o recuperare un archivio.
echo -n "Vuoi creare o recuperare un archivio? (c/r) " 
# Alla risposta, c o r, viene assegnata la variabile cr.
read cr
# Se questa variabile, quindi quello che hai risposto, corrisponde a c...
if [ $cr = c ]
then
# Si attiva questa parte dello script.
# Innanzitutto qusta frase avverte che eliminerà un eventuale file backup.tgz
# presente in / in modo da far spazio al futuro backup.
echo "Adesso verrà eliminato un eventuale file backup.tgz che si trova in / per poterlo sostituire con quello del backup"
# Quindi ci spostiamo in /
cd /
# ed eliminamo il presunto file.
sudo rm -rf /backup.tgz
# Quest'altra frase ci dice che il processo sta per iniziare.
echo "Adesso inizierà il processo di backup!"
# Ed ecco il vero comando che eseguirà il backup.
sudo tar cvpzf backup.tgz --exclude=/proc --exclude=t+found --exclude /var/spool --exclude /var/log --exclude=/backup.tgz --exclude=/mnt --exclude=/sys /
# Al termine, veniamio avvertiti che il backup è finito e non dobbiamo preoccuparci
# se escono messaggi come tar: uscita per errore ritardata dall'errore precedente.
echo "Il processo di backup è finito, puoi anche evitare di preoccuparti per messaggi di errori come: tar: uscita per errore ritardata dall'errore precedente, considerali semplicemente dei warning."
# Adesso, per comodità, questa frase ci dice che il file contenente
# il backup verrà trasferito sulla Scriviania.
echo "Adesso il file di backup varrà spostato sulla Scrivania"
# Ed ecco che ciò viene fatto.
sudo mv /backup.tgz /home/nicola/Scrivania/
# Adesso veramente è tutto finito, e questa frase lo dimostra.
echo "Tutto è finito, il file contenente il backup si trova sulla Scrivania"
# Ora non resta che chiudere lo script
exit 0
# Se invece di aver scritto all'inizio c, avessimo scritto r...
elif [ $cr = r ]
then
# ... questa frase ci chiede dove si trova il file che contiene il backup,
echo -n "Scrivi qui il percorso del file contenente il backup " 
# e a quello che scriviamo viene assegnata la variabile per (sta per percorso).
read per
# Ora veniamo avvertiti che sta iniziando il recupero,
echo "Adesso inizierà il processo di recupero!"
# ed ecco che inizia.
sudo tar xvpfz $per -C /
# Queste due frasi ci dicono che il recupero è completato e che non 
# dobbiamo preoccuparci se visualizziamo messaggi di errore come, 
# tar: uscita per errore ritardata dall'errore precedente.
echo "Tutto è finito, Ubuntu è tornato come prima!!"
echo "Aspetta, non allarmarti! Se visualizzi messaggi di errore come, tar: uscita per errore ritardata dall'errore precedente, considerali come dei warning, cioè fai finta che non esistono."
# Non resta che chiudere lo script.
exit 0
# Lo script potrebbe finire qui, ma poniamo il caso che invece di c o r, 
# avessimo scritto qualcos'altro, cosa sarebbe successo? Che lo script si
# sarebbe chiuso senza dirci niente, ed ecco che entra in gioco else.
else
# Questa frase ci dice cosa abbiamo scritto e ci avverte che se vogliamo
# ottenere qualche risultato, dobbiamo rispondere con c o r.
echo "Hai risposto con $cr!! Devi rispondere con c o r, a seconda se vuoi creare o recuperare un backup!!"
# Lo script, quindi si chiude.
exit 0
# Ora non ci resta che mettere fi per chiudere if, elif e else.
fi
# E lo script è veramente finito!
exit 0
Ultima modifica di Il_Meglio il lunedì 21 luglio 2008, 14:04, modificato 1 volta in totale.
Avatar utente
steff
Moderatore Globale
Moderatore Globale
Messaggi: 40345
Iscrizione: domenica 18 febbraio 2007, 19:48
Desktop: LXQt+labwc
Distribuzione: Arch; Debian; Ubuntu Server
Sesso: Maschile
Località: Toscana
Contatti:

Re: Migliorare script bash Backup

Messaggio da steff »

Bellino, mi chiedo solo se è necessario usare tar (cioè buttare via e rifare il backup dove avrà cambiato il 3% del contenuto) invece di rsync:

Codice: Seleziona tutto

# Questo script  il sincronizza in contenuto della home con il backup su harddisk usb, montato in /media/backup
#-exclude=cartella da escludere
dpkg --get-selections > ~/Documents/backups/pacchetti_installati.txt &&
rsync -auv --exclude=.local    --exclude=.thumbnails --exclude=video/xguardare --delete --stats /home/NOMELOGIN/ /media/backup/backup_LOGIN
I pacchetti installati si recuperano ad una eventuale reinstallazione con

Codice: Seleziona tutto

sudo bash
dpkg --set-selections < ./pacchetti_installati.txt && apt-get dselect-upgrade
In più ho salvati tre o quattro file modificati in /usr/lib e /etc.
Hai fatto un backup oggi? Ieri?? Quando???
La Documentazione da consultare e la FAQ sul uso del forum
Sistemi: LXQt - semplice, modulare e configurabile + *ubuntu in Vbox
Il_Meglio
Prode Principiante
Messaggi: 41
Iscrizione: sabato 28 giugno 2008, 11:17

Re: Migliorare script bash Backup

Messaggio da Il_Meglio »

bhè... penso che farò come dici tu, perchè il file finale con tar è di 2 giga....
Però se io non ho montato in media un gingillo di nome backup, cosa devo cambiare?
e poi si recuperano anche i pacchetti installati con apt-get e con synaptic??
Avatar utente
steff
Moderatore Globale
Moderatore Globale
Messaggi: 40345
Iscrizione: domenica 18 febbraio 2007, 19:48
Desktop: LXQt+labwc
Distribuzione: Arch; Debian; Ubuntu Server
Sesso: Maschile
Località: Toscana
Contatti:

Re: Migliorare script bash Backup

Messaggio da steff »

Devi adattare il nome del percorso nello script. I pacchetti gli reinstalli con la riga di comando che ho segnalato in una botta tutti.
Hai fatto un backup oggi? Ieri?? Quando???
La Documentazione da consultare e la FAQ sul uso del forum
Sistemi: LXQt - semplice, modulare e configurabile + *ubuntu in Vbox
Il_Meglio
Prode Principiante
Messaggi: 41
Iscrizione: sabato 28 giugno 2008, 11:17

Re: Migliorare script bash Backup

Messaggio da Il_Meglio »

Quindi qualcosa come questo dovrebbe funzionare, giusto?

Codice: Seleziona tutto

#!/bin/bash
dpkg --get-selections > ~/Scrivania/pacchetti_installati.txt &&
sudo rsync -auv --exclude=.local --exclude=.thumbnails --exclude=video/xguardare --delete --stats /home/nicola/ /home/nicola/Scrivania/backup`date +%d`.`date +%m`.`date +%y`
Ultima modifica di Il_Meglio il venerdì 18 luglio 2008, 17:13, modificato 1 volta in totale.
Avatar utente
steff
Moderatore Globale
Moderatore Globale
Messaggi: 40345
Iscrizione: domenica 18 febbraio 2007, 19:48
Desktop: LXQt+labwc
Distribuzione: Arch; Debian; Ubuntu Server
Sesso: Maschile
Località: Toscana
Contatti:

Re: Migliorare script bash Backup

Messaggio da steff »

No perché scrivi il backup sulla scrivania che stai anche backuppando...è un loop!
.local è il cestino, togli anche xguardare che non l'hai, penso. Un backup che ha senso deve essere almeno su un altra partizione, meglio su un altro disco. O salva in /mnt/backup per ora, ma devi poter scrivere nella cartella.
Hai fatto un backup oggi? Ieri?? Quando???
La Documentazione da consultare e la FAQ sul uso del forum
Sistemi: LXQt - semplice, modulare e configurabile + *ubuntu in Vbox
Avatar utente
steff
Moderatore Globale
Moderatore Globale
Messaggi: 40345
Iscrizione: domenica 18 febbraio 2007, 19:48
Desktop: LXQt+labwc
Distribuzione: Arch; Debian; Ubuntu Server
Sesso: Maschile
Località: Toscana
Contatti:

Re: Migliorare script bash Backup

Messaggio da steff »

PS: Se cambia il nome ogni backup (date) perdi il vantaggio di rsync: la prossima volta copia solo i file modificati e cancella sul backup i file che non esistono più in /home, quindi è molto veloce. Per questo la cartella del backup deve avere sempre lo stesso nome. Ovviamente il backup è delle stesse dimensione di /home meno il cestino e le cartelle escluse
Hai fatto un backup oggi? Ieri?? Quando???
La Documentazione da consultare e la FAQ sul uso del forum
Sistemi: LXQt - semplice, modulare e configurabile + *ubuntu in Vbox
Il_Meglio
Prode Principiante
Messaggi: 41
Iscrizione: sabato 28 giugno 2008, 11:17

Re: Migliorare script bash Backup

Messaggio da Il_Meglio »

Credo di aver capito... quindi, visto che sullo stesso hd ho sia windows che ubuntu, potrei salvare il backup di rsync nella partizione di windows, e quindi verrebbe una casa del genere, giusto?

Codice: Seleziona tutto

#!/bin/bash
dpkg --get-selections > /media/ACER/backup_ubuntu/pacchetti_installati.txt &&
sudo rsync -auv --exclude=.local --exclude=.thumbnails --delete --stats /home/nicola/ /media/ACER/backup_ubuntu/backup
P.S.: a cosa servono i && ?
Ultima modifica di Il_Meglio il sabato 19 luglio 2008, 10:33, modificato 1 volta in totale.
Avatar utente
steff
Moderatore Globale
Moderatore Globale
Messaggi: 40345
Iscrizione: domenica 18 febbraio 2007, 19:48
Desktop: LXQt+labwc
Distribuzione: Arch; Debian; Ubuntu Server
Sesso: Maschile
Località: Toscana
Contatti:

Re: Migliorare script bash Backup

Messaggio da steff »

&& = prima esegue il comando che fa la lista attuale dei pacchetti installati poi esegue la sincronizzazione. Io avevo problemi a salvare su FAT, ma su ntfs ho mai provato, magari fai una piccola prova con una cartella sola prima, non so se conserva bene i permessi dei file, ne dubito. Io uso un disco USB da 160 formattato in ext3.
Hai fatto un backup oggi? Ieri?? Quando???
La Documentazione da consultare e la FAQ sul uso del forum
Sistemi: LXQt - semplice, modulare e configurabile + *ubuntu in Vbox
Il_Meglio
Prode Principiante
Messaggi: 41
Iscrizione: sabato 28 giugno 2008, 11:17

Re: Migliorare script bash Backup

Messaggio da Il_Meglio »

Uhmmm... io il disco usb più grande che ho è di 1 giga (rotfl) (rotfl) (rotfl). Comunque ho provato con una sola cartella presente sulla scrivania, e mi sembra che non mi abbia dato problemi...
Però, per ogni file mi dice:

Codice: Seleziona tutto

rsync error: nomefile failed: Operation not permitted (1)
Magari posso provare a salvarlo in /mnt/backup ??
Avatar utente
steff
Moderatore Globale
Moderatore Globale
Messaggi: 40345
Iscrizione: domenica 18 febbraio 2007, 19:48
Desktop: LXQt+labwc
Distribuzione: Arch; Debian; Ubuntu Server
Sesso: Maschile
Località: Toscana
Contatti:

Re: Migliorare script bash Backup

Messaggio da steff »

Non si dovrebbero vedere errori. Da

Codice: Seleziona tutto

man rsync

EXIT VALUES
       0      Success

       1      Syntax or usage error
quindi la sintassi non va bene. Sudo non ci vuole se lavori in /home
Hai fatto un backup oggi? Ieri?? Quando???
La Documentazione da consultare e la FAQ sul uso del forum
Sistemi: LXQt - semplice, modulare e configurabile + *ubuntu in Vbox
Il_Meglio
Prode Principiante
Messaggi: 41
Iscrizione: sabato 28 giugno 2008, 11:17

Re: Migliorare script bash Backup

Messaggio da Il_Meglio »

Scusa per la mia assenza...
Comunque è vero, non dovevo mettere sudo !!
Però per poter scrivere in mnt devo avere i permessi, quindi ho pensato che un

Codice: Seleziona tutto

sudo chmod 777 /mnt/backup/*
dovrebbe bastare, giusto?
Avatar utente
steff
Moderatore Globale
Moderatore Globale
Messaggi: 40345
Iscrizione: domenica 18 febbraio 2007, 19:48
Desktop: LXQt+labwc
Distribuzione: Arch; Debian; Ubuntu Server
Sesso: Maschile
Località: Toscana
Contatti:

Re: Migliorare script bash Backup

Messaggio da steff »

meglio

Codice: Seleziona tutto

chown nomelogin
(cambia proprietario, permessi 755). Intanto prova.
Hai fatto un backup oggi? Ieri?? Quando???
La Documentazione da consultare e la FAQ sul uso del forum
Sistemi: LXQt - semplice, modulare e configurabile + *ubuntu in Vbox
Il_Meglio
Prode Principiante
Messaggi: 41
Iscrizione: sabato 28 giugno 2008, 11:17

Re: Migliorare script bash Backup

Messaggio da Il_Meglio »

devo fare

Codice: Seleziona tutto

chown nomelogin /mnt/backup/*
??
Avatar utente
steff
Moderatore Globale
Moderatore Globale
Messaggi: 40345
Iscrizione: domenica 18 febbraio 2007, 19:48
Desktop: LXQt+labwc
Distribuzione: Arch; Debian; Ubuntu Server
Sesso: Maschile
Località: Toscana
Contatti:

Re: Migliorare script bash Backup

Messaggio da steff »

Codice: Seleziona tutto

sudo chown nomelogin /mnt/backup
Ma ripeto: un backup sullo stesso disco non è un backup perfetto  8)
Hai fatto un backup oggi? Ieri?? Quando???
La Documentazione da consultare e la FAQ sul uso del forum
Sistemi: LXQt - semplice, modulare e configurabile + *ubuntu in Vbox
Il_Meglio
Prode Principiante
Messaggi: 41
Iscrizione: sabato 28 giugno 2008, 11:17

Re: Migliorare script bash Backup

Messaggio da Il_Meglio »

Comunque funziona, grazie di tutto.
Purtroppo non ho a disposizione dischi esterni e mi devo adattare :).
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 5 ospiti