script backup personale(suggerimenti)

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Avatar utente
tigerwalk
Linux 3.x
Linux 3.x
Messaggi: 895
Iscritto il: lun 25 feb 2008, 22:08
Nome Cognome: Giuliano della Vecchia
Slackware: 13.37-14.2
Kernel: 3.10.17-tiger / 4.4.88-smp
Desktop: kde4/xfce4
Località: Napoli

script backup personale(suggerimenti)

Messaggio da tigerwalk »

Salve a tutti,
mi sono fatto un piccolo (ed elementarissimo) script per fare un backup di alcuni file e directory su una directory di un disco usb. Vorrei che alcune directory (/pacchetti; /slackbuild; /Sorgenti), venissero copiate solo quando allo script viene passata una particolare opzione. Ovviamente non so come fare e chiedo un aiuto. Si accettano anche suggerimenti e correzioni per renderlo più funzionale, leggibile ed esteticamente più gradevole. Sarebbe oltremodo gradito un commento per le eventuali correzioni (in modo da capirne il significato).
Grazie a chiunque mi dedicherà un pochino del suo tempo!

Codice: Seleziona tutto

##script fileback.sh (Backup personale)
#!/bin/bash
#
#dichiarazione variabili
DOCUM=/home/tigerwalk
BACK=/media/DATISLACK/home/slackware_current
BACK1=/media/DATISLACK/home/slackware_current/"$(uname -r)"
CONF=/usr/src/linux/.config
DATE=`date +%d/%m/%Y-%H:%M`
#
set -e

if [ -e $BACK ]; then
echo "comincia la copia dei file"
else
echo "devi montare directory"
fi
#$(su -)
#$(cd /boot/)
#$(cp /boot/insideslack_lilo.bmp $BACK)
#$(cp /boot/initrd.gz $BACK)
$(cp /etc/fstab $BACK)
$(cp /etc/profile $BACK)
$(cp /etc/profile.d/lang.sh $BACK)
$(cp /etc/profile.d/lang.csh $BACK)
$(cp /etc/inittab $BACK)
$(cp /etc/sudoers $BACK)
$(grep -vE '(^[[:space:]]*($|(#|!|;|//)))' /etc/lilo.conf > $BACK/lilo.conf)

if [ -e /tmp/initrd/ ]; then
$(find /tmp/initrd/ | cpio -o -H newc | gzip -9 -n > $BACK/initrd.gz)
fi

$(cp /etc/rc.d/rc.local $BACK)
$(cp /etc/rc.d/rc.M* $BACK)

if [ -e /etc/rc.d/c.xconf ]; then
$(cp /etc/rc.d/rc.xconf $BACK)
fi

if [ -e /etc/rc.d/rc.autoX ]; then
$(cp /etc/rc.d/rc.autoX $BACK)
fi

$(cp /etc/rc.d/rc.governor $BACK)
$(cp /etc/modprobe.d/blacklist $BACK)

if [ -e /etc/X11/gui.conf ]; then
$(cp /etc/X11/gui.conf $BACK)
fi

$(cp /etc/X11/xorg.conf* $BACK)
$(cp /etc/slackyd/slackyd.conf $BACK)

if [ -e /usr/bin/fileswapon.sh ]; then
$(cp /usr/bin/fileswapon.sh $BACK)
fi

if [ -e $DOCUM/.conkyrc ]; then
$(cp $DOCUM/.conkyrc $BACK/conkyrc)
fi

#$(cp -R $DOCUM/pacchetti/ $BACK)
#$(cp -R $DOCUM/SlackBuild/ $BACK)
#$(cp -R $DOCUM/Sorgenti/ $BACK)

$(cp -R $DOCUM/file_utili/ $BACK)

if [ -e $DOCUM/bin/ ]; then
$(cp -R $DOCUM/bin/ $BACK)
fi

if [ -e $DOCUM/.bashrc ]; then
$(cp $DOCUM/.bashrc $BACK/bashrc)
fi

$(cp $DOCUM/.bash_profile $BACK/bash_profile)
$(cp $DOCUM/comandi_utili $BACK)
$(cp $DOCUM/bookmarks.html $BACK)

if [ -e /etc/cpufreqd.conf ]; then
$(cp /etc/cpufreqd.conf $BACK)
fi

$(grep -vE '(^[[:space:]]*($|(#|!|;|//)))' /etc/X11/xorg.conf > $BACK/xorg.txt)
#
$(cd $BACK)
if [ $BACK1 ]; then
rm -fr $BACK1 && mkdir $BACK1
fi
$(zcat /proc/config.gz > $BACK1/config)
#crea i file date.txt
$(cd $BACK1 && touch date.txt)
echo $DATE > $BACK1/date.txt
$(cd $BACK && touch date.txt)
echo $DATE > $BACK/date.txt
#
echo "copia finita"
exit

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6643
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: script backup personale(suggerimenti)

Messaggio da targzeta »

Stavo cercando una discussione che ho fatto tempo fa, ma non la trovo :(. Comunque anche io ho uno script di backup che accetta delle opzioni, ti lo posto (è molto lungo):

Codice: Seleziona tutto

#!/bin/bash
# 
# Ultimo aggiornamento: 31 Luglio 2007
# by Spina <spina80@freemail.it>

# Crea archivi contenenti file di backup.
# -h per l'help

# Nome dello script
SCRIPT_NAME=backup.sh

# Stampa l'argomento $1 seguito dalle informazioni per eseguire l'help.
# Poi ritorna uno stato di uscita pari a $2
function _exit
{
    echo -e "${1}\n\n${SCRIPT_NAME} -h per maggiori informazioni.\n";
    exit $2;
}

# Stampa l'help dello script
function _help
{
  echo -en "Uso: ${SCRIPT_NAME} [ opzioni ] nome-speciale...\n"\
           "\nCrea archivi compressi .tgz (tar e gzip), contenenti file di backup.\n"\
           "\nnome-speciale può assumere i valori:"\
           "\n   Script\tCrea un archivio della directory \$HOME/Script,"\
           "\n\t\te se esiste, anche uno per la directory \$HOME/Script_\$HOSTNAME"\
           "\n   bin\t\tCrea un archivio della directory \$HOME/bin"\
           "\n   c\t\tCrea un archivio della directory \$HOME/Programmi/c"\
           "\n   clasess\tCrea un archivio della directory \$HOME/Programmi/classes"\
           "\n   cpp\t\tCrea un archivio della directory \$HOME/Programmi/cpp"\
           "\n   php\t\tCrea un archivio della directory \$HOME/Programmi/php"\
           "\n   src\t\tCrea un archivio della directory \$HOME/Programmi/src"\
           "\n   Symbolik\tCrea un archivio contenente tutti i link simbolici presenti"\
           "\n   \t\tnella home directory"\
           "\n   Config\tCrea un archivio dei file di configurazione utente host INDIPENDENT,"\
           "\n   \t\te uno per i file di configurazione utente host DIPENDENT"\
           "\n   System\tCrea un archivio dei file di configurazione di sistema"\
           "\n   \t\t( viene richiesta la password di root )\n"\
           "\nopzioni può assumere i valori:"\
           "\n   -a\t\tFa il backup di tutti i nomi speciali"\
           "\n   -u\t\tFa il backup dei nomi speciali: Script, bin, Config e Symbolik"\
           "\n   -p\t\tFa il backup dei nomi speciali: c, classes, cpp, php, src"\
           "\n   -s\t\tFa il backup del nome speciale System"\
           "\n   -h\t\tMostra questo aiuto ed esce\n\n"\
           "\nIl nome dell'archivio ha la forma generale di:"\
           "\n\t\$USER_nome-speciale_\$HOSTNAME_giorno_mese_anno.tgz\n"\
           "\n\$USER (valore della relativa variabile d'ambiente), viene aggiunta nel caso dei nomi speciali"\
           "\nche fanno parte dell'opzione -u."\
           "\n\$HOSTNAME (valore della relativa variabile d'ambiente), viene aggiunta nel caso di archivi host"\
           "\ndependent.\n"\
           "\nby Spina <spina80@freemail.it>\n"
}

# Controlla l'esistenza di tutti i programmi dati i loro nomi come argomento.
# Se un programma non viene trovato, allora, stampa il nome del o dei programmi mancanti ed esce.
# Si usa il programma which per controllare che esistono i programmi passati. Si assume che
# which sia in /bin/.
function _check_extern_program
{
    local error=0;
    local string_error;

    if [ ! -x /bin/which ]; then
	error=1;
	string_error="which : programma mancante.\n";
    else
	for progr in $@; do
	    if [[ $(which $progr 2>/dev/null) == "" ]];
		then
		let ++error;
		string_error=${string_error}"${progr} : programma mancante.\n";
	    fi
	done
    fi

    if (( $error )); then
	if (( $error == 1 )); then
	    string_error=${string_error}"\nIl programma mancante è necessario ";
	else
	    string_error=${string_error}"\nI programmi mancanti sono necessari ";
	fi
	string_error=${string_error}"per la corretta esecuzione dello script.";
	_exit "$string_error" 1;
    fi
}

# Controllo degli argomenti dello script in cerca di opzioni
enable getopts echo exit;

# Impostazione del separatore di campi al valore di default
IFS=$(echo -e " \n\t");

# Controllo dell'esistenza di tutti i programmi esterni ( quindi non comandi interni alla bash) usati
_check_extern_program tar basename dirname gzip;

while getopts :aupsh opzione; do
    case $opzione in 
	a) ${SCRIPT_NAME} c classes cpp php src bin Config Script System symbolik;;
	u) ${SCRIPT_NAME} bin Script Config symbolik;;
        p) ${SCRIPT_NAME} c classes cpp php src;;
        s) ${SCRIPT_NAME} System;;
	h) _help; exit;; 
	?) _exit "-${OPTARG} : Argomento non valido." 1;
    esac
done

# Shift degli argomenti in modo da avere $1 che punta al primo argomento che non è una opzione
while (( $OPTIND != 1 )); do
    shift;
    let --OPTIND;
done

function tarra
{
    local nome="$1";
    shift;
    
    # Mantengo l'iniziale / se si tratta di un backup di sistema
    [[ $nome == system* ]] && local _OPT=P;
    
    # Devo eseguire una bash o altrimenti non si ha l'espansione delle parentesi graffe
    bash -c "\tar -${_OPT}zcf '${apath}'/'${nome}'_`date +'%d_%m_%y'`.tgz $* 2>/dev/null";
}

# Qui vengono elencati i file di configurazione UTENTE INDIPENDENTI dall'host:
function user_Config_host_independent
{
    echo ".aliases .bash_profile .bashrc .emacs .filezilla/sitemanager.xml "\
        ".gqview/gqviewrc .inputrc .netrc .purple/{accounts.xml,blist.xml,prefs.xml,status.xm}"\
        ".sitecopyrc .ssh/{a,i}* .toprc .xinitrc .xlockrc .xsession";
}

# Qui vengono elencati i file di configurazione UTENTE DIPENDENTI dall'host:
function user_Config_host_dependent
{
    echo ".Xdefaults .aliases_${HOSTNAME} .conkyrc .icewm .mplayer .rhosts "\
         ".ssh/known_hosts .xinitrc_${HOSTNAME}";
}

# Qui vengono elencati i file di configurazione del SISTEMA INDIPENDENTI dall'host
function system_Config_host_independent
{
    echo "/etc/hosts.* /etc/inetd.conf /etc/inittab /etc/login.defs /etc/ntp.conf /etc/profile "\
        "/etc/profile.d/*.sh /etc/securetty";
}

# Qui vengono elencati i file di configurazione del SISTEMA DIPENDENTI dall'host
function system_Config_host_dependent
{
    echo "/etc/acpi/ /etc/aumixrc /etc/exports /etc/fstab /etc/hosts /etc/httpd/httpd.conf /etc/httpd/php.ini "\
         "/etc/HOSTNAME /etc/lilo.conf /etc/resolv.conf /etc/rsyncd.conf /etc/rc.d/rc.* "\
         "/etc/udev/rules.d/*${HOSTNAME}.rules /etc/X11/xorg.conf /etc/modprobe.d/ /etc/sudoers";
}

function symbolik_List
{
    for file in ${HOME}/*;
      do
      [ -L "$file" ] && \tar -rf "${apath}"/"${1}"_`date +"%d_%m_%y"` "${file#$HOME/}";
    done

    gzip -S ".tgz" "${apath}"/"${1}"_`date +"%d_%m_%y"`
}

apath="${PWD}";

for nome_speciale; do
    cd ${HOME};
    case $nome_speciale in
	cpp | classes | php | src | c | C) 
	    tarra "${nome_speciale}" "Programmi/${nome_speciale}"/
	    ;;
	bin) 
	    tarra "${USER}_bin" "${nome_speciale}"/
	    ;;
	Script | script)
	    tarra "${USER}_Script" "${nome_speciale}"/;
	    [ -d "Script_${HOSTNAME}" ] &&\
		tarra "${USER}_Script_${HOSTNAME}" "${nome_speciale}_${HOSTNAME}"/;
	    ;;
	Config | config) 
	    tarra "${USER}_Config" `user_Config_host_independent`;
	    tarra "${USER}_Config_${HOSTNAME}" `user_Config_host_dependent`;
	    ;;
	System | system) 
	    if (( $(id -u) != 0 )); then
		su -c "$0 system";
	    else
		tarra "system" `system_Config_host_independent`;
		tarra "system_${HOSTNAME}" `system_Config_host_dependent`;
	    fi
	    ;;
	Symbolik | symbolik) 
	    symbolik_List "${USER}_Symbolik"
	    ;;
	*) 
	    echo "ATTENZIONE: non posso fare il backup  di ${nome_speciale}/"
	    ;;
    esac
    cd "$apath";
done
te l'ho anche allegato perchè il tag

Codice: Seleziona tutto

 non mantiene bene la formattazione. Ci ho dovuto mettere l'estensione '.txt' perchè se no non me lo faceva allegare. Prova a salvarti l'allegato poi eseguilo con '--help'.

Per qualsiasi chiarimento, chiedi pure,
Spina
Allegati
backup.txt
Script di backup (l'estensione è .sh e non .txt)
(7.13 KiB) Scaricato 89 volte
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Avatar utente
tigerwalk
Linux 3.x
Linux 3.x
Messaggi: 895
Iscritto il: lun 25 feb 2008, 22:08
Nome Cognome: Giuliano della Vecchia
Slackware: 13.37-14.2
Kernel: 3.10.17-tiger / 4.4.88-smp
Desktop: kde4/xfce4
Località: Napoli

Re: script backup personale(suggerimenti)

Messaggio da tigerwalk »

Grazie spina, studierò il tuo script e cercherò di applicare l'uso delle opzioni al mio. Se non ci riuscirò, romperò di nuovo le scatole...!

Mario Vanoni
Iper Master
Iper Master
Messaggi: 3174
Iscritto il: lun 3 set 2007, 21:20
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey
Località: Cuasso al Monte (VA)

Re: script backup personale(suggerimenti)

Messaggio da Mario Vanoni »

Domanda a spina ed a tigerwalk:

come mantenete i programmi _a_ _lunga_ _scadenza_?

Con files/directories hard-coded, aggiungere/togliere una voce?

Uso ASCII flat files diversi, aggiornamenti facilissimi.

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6643
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: script backup personale(suggerimenti)

Messaggio da targzeta »

Mario Vanoni ha scritto:Domanda a spina ed a tigerwalk:

come mantenete i programmi _a_ _lunga_ _scadenza_?

Con files/directories hard-coded, aggiungere/togliere una voce?

Uso ASCII flat files diversi, aggiornamenti facilissimi.
:oops: non ho capito la domanda.

In che senso mantanere programmi a lunga scadenza?

Spina
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Mario Vanoni
Iper Master
Iper Master
Messaggi: 3174
Iscritto il: lun 3 set 2007, 21:20
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey
Località: Cuasso al Monte (VA)

Re: script backup personale(suggerimenti)

Messaggio da Mario Vanoni »

spina ha scritto:
Mario Vanoni ha scritto:Domanda a spina ed a tigerwalk:

come mantenete i programmi _a_ _lunga_ _scadenza_?

Con files/directories hard-coded, aggiungere/togliere una voce?

Uso ASCII flat files diversi, aggiornamenti facilissimi.
:oops: non ho capito la domanda.

In che senso mantanere programmi a lunga scadenza?

Spina
Subentra un file/dir non prevedibile/previsto,
un altro file/dir diventa inutile/nocivo,
aggiorni per questo il programma?

Se hai piu` programmi di backup,
ne ho 3 attivi con 3 files che aggiorno ...

macchina 1 -> macchina 2 (file 1)
macchina 1 -> macchina 3 (file 2)
macchina 1 -> USB stick suo (file 3)
macchina 2 -> USB stick suo (file 3)
macchina 3 -> USB stick suo (file 3)

ovviamente sincronizzati con crontab

1 -> USB
1 -> 2
2 -> USB
1 -> 3
3 -> USB

il programma [123] -> USB e` uno solo,
il file 3 e` per tutte le macchine identico, rescue!

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6643
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: script backup personale(suggerimenti)

Messaggio da targzeta »

Mario Vanoni ha scritto:...
Subentra un file/dir non prevedibile/previsto,
un altro file/dir diventa inutile/nocivo,
aggiorni per questo il programma?
...
Bhé, se devo aggiungere un nuovo file, da qualche parte lo devo pur dire, potrei utilizzare file esterni, ma io utilizzo 4 funzioni diverse per identificare cosa va salvato. Per me vanno salvati:
  • file di configurazione utente, indipendenti dall'host
  • file di configurazione utente, dipendenti dall'host
  • file di configurazione di sistema, indipendenti dall'host
  • file di configurazione di sistema, dipendenti dall'host
lo script contiene 4 funzioni ognuna delle quali ritorna l'elenco dei file da salvare.

Spina
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Mario Vanoni
Iper Master
Iper Master
Messaggi: 3174
Iscritto il: lun 3 set 2007, 21:20
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey
Località: Cuasso al Monte (VA)

Re: script backup personale(suggerimenti)

Messaggio da Mario Vanoni »

spina ha scritto:
Mario Vanoni ha scritto:...
Subentra un file/dir non prevedibile/previsto,
un altro file/dir diventa inutile/nocivo,
aggiorni per questo il programma?
...
Bhé, se devo aggiungere un nuovo file, da qualche parte lo devo pur dire, potrei utilizzare file esterni, ma io utilizzo 4 funzioni diverse per identificare cosa va salvato. Per me vanno salvati:
  • file di configurazione utente, indipendenti dall'host
  • file di configurazione utente, dipendenti dall'host
  • file di configurazione di sistema, indipendenti dall'host
  • file di configurazione di sistema, dipendenti dall'host
lo script contiene 4 funzioni ognuna delle quali ritorna l'elenco dei file da salvare.

Spina
Si`, ma difficile da mantenere senza errori,
oltre ai listings delle funzioni, quelli di _help,
ci sono altre ridondanze, p. e. getopts.

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6643
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: script backup personale(suggerimenti)

Messaggio da targzeta »

Mario Vanoni ha scritto:...
Si`, ma difficile da mantenere senza errori,
oltre ai listings delle funzioni, quelli di _help,
ci sono altre ridondanze, p. e. getopts.
In che senso ridondanze con getopts? Scusami ma non ti sto seguendo.

Spina
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Mario Vanoni
Iper Master
Iper Master
Messaggi: 3174
Iscritto il: lun 3 set 2007, 21:20
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey
Località: Cuasso al Monte (VA)

Re: script backup personale(suggerimenti)

Messaggio da Mario Vanoni »

spina ha scritto:
Mario Vanoni ha scritto:...
Si`, ma difficile da mantenere senza errori,
oltre ai listings delle funzioni, quelli di _help,
ci sono altre ridondanze, p. e. getopts.
In che senso ridondanze con getopts? Scusami ma non ti sto seguendo.

Spina
a) ${SCRIPT_NAME} c classes cpp php src bin Config Script System symbolik;;
u) ${SCRIPT_NAME} bin Script Config symbolik;;
p) ${SCRIPT_NAME} c classes cpp php src;;
s) ${SCRIPT_NAME} System;;

Correggi symbolik in symbolic, altre due voci.

grep -i symbolik backup.txt | wc -l
7

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6643
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: script backup personale(suggerimenti)

Messaggio da targzeta »

Mario Vanoni ha scritto:...
a) ${SCRIPT_NAME} c classes cpp php src bin Config Script System symbolik;;
u) ${SCRIPT_NAME} bin Script Config symbolik;;
p) ${SCRIPT_NAME} c classes cpp php src;;
s) ${SCRIPT_NAME} System;;

Correggi symbolik in symbolic, altre due voci.

grep -i symbolik backup.txt | wc -l
7
il codice che hai postato serve allo script per reinvocarsi sostituendo ad esempio il '-a' con le directory da salvare. Non so se ti è chiaro lo script, le opzioni servono ad identificare una categoria di cose da salvare.

Spina
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Mario Vanoni
Iper Master
Iper Master
Messaggi: 3174
Iscritto il: lun 3 set 2007, 21:20
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey
Località: Cuasso al Monte (VA)

Re: script backup personale(suggerimenti)

Messaggio da Mario Vanoni »

spina ha scritto:
Mario Vanoni ha scritto:...
a) ${SCRIPT_NAME} c classes cpp php src bin Config Script System symbolik;;
u) ${SCRIPT_NAME} bin Script Config symbolik;;
p) ${SCRIPT_NAME} c classes cpp php src;;
s) ${SCRIPT_NAME} System;;

Correggi symbolik in symbolic, altre due voci.

grep -i symbolik backup.txt | wc -l
7
il codice che hai postato serve allo script per reinvocarsi sostituendo ad esempio il '-a' con le directory da salvare. Non so se ti è chiaro lo script, le opzioni servono ad identificare una categoria di cose da salvare.

Spina
OK, ma non e` facile da mantenere se cambi il nome di una opzione.

Come pure "to hard code" /etc/hosts ecc.,
salvare in piu` p. e. /etc/group o /etc/shadow tra 2 anni,
ti sara` ben chiaro subito dove e come aggiungere la voce?

Vecchia regola UNIX "Divide and Conquer".

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6643
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: script backup personale(suggerimenti)

Messaggio da targzeta »

Mario Vanoni ha scritto:.....
Come pure "to hard code" /etc/hosts ecc.,
salvare in piu` p. e. /etc/group o /etc/shadow tra 2 anni,
ti sara` ben chiaro subito dove e come aggiungere la voce?

Vecchia regola UNIX "Divide and Conquer".
Cerco di applicarla sempre :), per questo è fatto le 4 funzioni. Quei file potrebbero essere elencati nella funzione per i file di sistema dipendenti/indipendenti dall'host (lo script è pesantemente commentato apposta).

Dalla data capirai che sono quasi due anni che lo uso, e mi serve anche per sincronizzare il PC fisso con il portatile quando torno a casa mia a Lecce. Generalmente a Pisa installo vari programmi e quindi per avere le stesse configurazioni sul pc di Lecce uso questo script, nonché per mantenere i file di configurazione aggiornati.
Se ci sono file specifici per la macchina uso un estenzione tipo _hostname, ad esempio ho:

Codice: Seleziona tutto

.xinitrc 
.xinitrc_kathrine
il primo va nella funzione dei file di configurazione utente indipendenti dalla macchina, il secondo nella funzione dei file di configurazione utenti dipendenti dalla macchina.

A Pasqua ho eliminato la Slamd64 per reinstallare tutto (una cosa che non andrebbe fatta), con questo script, e con un altro che mi generava la lista dei pacchetti da installare:
  • ho fatto l'avvio dal DVD
  • ho lanciato installpkg per ogni pacchetto da installare
  • poi ho sovrascritto alcuni file di sistema con quelli che stavano nelle funzioni dei file di sistema
  • ho riavviato
ed ecco la mia Slamd64 com'era mezz'ora prima senza usare nessun frontend grafico (non chiedermi perchè l'ho formattata :) ).

Spina
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Avatar utente
zoros
Linux 4.x
Linux 4.x
Messaggi: 1362
Iscritto il: lun 28 mag 2007, 22:51
Nome Cognome: Fabio`Zorba`
Slackware: 15.0
Kernel: 5.15.19smp
Desktop: Trinity R14.0.11
Località: Gorizia

Re: script backup personale(suggerimenti)

Messaggio da zoros »

Oh, ragazzi (vale anche per Mario ... con simpatia, tra "ragazzi" appunto) ...

tigerwalk aveva chiesto:
... Si accettano anche suggerimenti e correzioni per renderlo più funzionale, leggibile ed esteticamente più gradevole. Sarebbe oltremodo gradito un commento per le eventuali correzioni (in modo da capirne il significato).
Grazie a chiunque mi dedicherà un pochino del suo tempo!
... però nessuno ha risposto veramente

1)
##script fileback.sh (Backup personale)
#!/bin/bash
di solito l'interprete dei comandi è citato nella prima riga ... cioè "#!/bin/bash" all'inizio-inizio dello script ... poi è bene mettere un paio di commenti con il n. di revisone, la data, un nome o una sigla ad individuare l'autore

2) visto che i comandi sono richiamati su un percorso relativo (cp e non /bin/cp) è bene definire (o esportare) la variabile PATH ...

3) a volte i comandi sono dentro $(comando) altre volte sono senza il $ ... perché (cioè sfugge anche a me la differenza) ?

Codice: Seleziona tutto

#crea i file date.txt
$(cd $BACK1 && touch date.txt)
echo $DATE > $BACK1/date.txt
4) un errore di sintassi:

Codice: Seleziona tutto

if [ -e /etc/rc.d/c.xconf ]; then
$(cp /etc/rc.d/rc.xconf $BACK)
fi
e adesso: in slacky.eu ci sono tanti esperti in linguaggi di scripting, perché nessuno ha replicato in modo diretto alla semplice richiesta fatta ?
vorrei riavere le mie firme ...

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6643
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: script backup personale(suggerimenti)

Messaggio da targzeta »

zoros ha scritto:...
tigerwalk aveva chiesto:
... Si accettano anche suggerimenti e correzioni per renderlo più funzionale, leggibile ed esteticamente più gradevole. Sarebbe oltremodo gradito un commento per le eventuali correzioni (in modo da capirne il significato).
Grazie a chiunque mi dedicherà un pochino del suo tempo!
... però nessuno ha risposto veramente
Ma veramente io avevo capito che aveva un problema anche con le opzioni, ecco perchè gli ho postato lo script che uso, perchè, oltre a fargli vedere un modo diverso per fare il backup (non mi piace vedere tutti quei cp), quello script usa le opzioni. Di estetica ne capisco poco :)

Spina
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Rispondi