UFFICIALE L'OT di Linux e altri OS

Pubblicità
quante vite servono per leggerlo? LOL
non basta leggerlo, si deve provare provare provare eppoi provare l'ho detto?:chupachup:

@« MoMy » ecco l'incipit dello script per renderlo unico:
Codice:
#!/bin/bash

##script di backup/ripristino
##by rebellion 
##and thanks to MoMy

var="Backup:Ripristino"
while [ "$var" == "Backup:Ripristino" ]
do
var=$(zenity  --list  --title="GESTIONE BACKUP INCREMENTALE" --text "" --checklist  --column "Clicca" --column "Opzioni" TRUE "Backup" FALSE "Ripristino" --separator=":")
done

case $var in
 "Backup" )

##mettere lo script di backup al quale togliere 'exit 0'

;;

"Ripristino" )
##mettere lo script di ripristino al quale togliere 'exit 0'

;;
esac

exit 0
MoMy, ma mi dici come diavolo si fanno i simboli del tuo nick?:cav:
 
@rebellion Non ho capito il perché del ciclo. Se io faccio così (v. sotto) risparmio al sistema una procedura che posso tranquillamente farne a meno...
Codice:
#!/bin/bash
/* Non mi serve un ciclo per assegnare un valore alla variabile */
/* Userei --radiolist invece di --checklist, così facendo se seleziono una, disabilito l' altra opzione */
var=`zenity  --list  --title="GESTIONE BACKUP INCREMENTALE" --text "" --radiolist  --column "Clicca" --column "Opzioni" TRUE "Backup" FALSE "Ripristino" 2> /dev/null`

case $var in
"Backup" )
echo -e '\E[1;32m==>\E[0m' Ho selezionato Backup.;;

"Ripristino" )
echo -e '\E[1;33m==>\E[0m' Ho selezionato Ripristino.;;

"" )
echo -e '\E[1;31m==>\E[0m' Ho Annullato.;;
esac
exit 0

@Stefano Novelli Senza aprire un topic per una cosettina così (ammetto di non aver controllato l' eventuale esistenza), non sarebbe possibile inserire un ''copia codice'' nel tag Code?

Bye^^
 
Ultima modifica:
@« MoMy » alla fine avevo risolto così:
Codice:
var=$(zenity --width=450 --height=250 --list --title="GESTIONE BACKUP/RIPRISTINO" --column="" "script di BACKUP" "script di RIPRISTINO")
case $var in
 "script di BACKUP" )
......
 ;
 "script di RIPRISTINO" )
......
 ;
esac
c'è la possibilità nella mia zenity di dare true e false senza ricorrere a --checklist?
 
Usando --radiolist al posto di --checklist come l' esempio sopra.
Apri un terminale e lancialo così com'è, i check non si scambiano selezionando questo o quello?
Codice:
zenity  --list  --title="GESTIONE BACKUP INCREMENTALE" --text "" --radiolist  --column "Clicca" --column "Opzioni" TRUE "Backup" FALSE "Ripristino" 2> /dev/null

Per i simboli:« 'alt-gr + <' e per » 'alt-gr + shift + >'
 
@e_ale92 @« MoMy » versione definitiva, ti dice anche se hai le dipendenze installate trallà!:chupachup: provatelo e ditemi se è migliorabile!:suicidio: mettetelo in /home/$user:
Codice:
#!/bin/bash

testo="*************************************************************************
INFORMATIVA ALL’UTENTE.
*************************************************************************
Free license software by rebellion and thanks to «MoMy»
*************************************************************************
ATTENZIONE dipendenze da installare:
- pv
- zenity
*************************************************************************
Script di gestione backup incrementali e loro ripristino. Il backup incrementaleraccoglie in
una cartella (di destinazione)il primo backup completo di una cartella (di provenienza); in
seguito vengono creati ulteriori archivi con le sole modifiche apportate alla cartella di
provenienza, il tutto gestito da un file .idx presente nella cartella dell’archivio.

Se però si desidera compiere un backup di una cartella non incrementale basterà, dopo aver
creato per la prima volta l’archivio, eliminare il file .idx mediante l’opzione di 'gestione
files' di questo script; fate attenzione a non cancellare il file .idx quando sono presenti
più di un backup incrementali altrimenti non sarà più possibile ripristinare il backup a meno
di non estrarre il file ‘cartella’_backup0-gg-mm-aa.tar.gz relativo alla data gg-mm-aa.

Per estrarre un backup completo basta cliccare sul file .tar.gz col tasto sn o dx a seconda
della distribuzione/DE in uso. Tutti gli archivi creati sono compressi con gzip."
if [ $(sed -e '$!d' /home/$USER/backup) = "#info=on" ] ; then
 test=$(zenity --list --width=450 --height=600 --title="GESTIONE BACKUP INCREMENTALI" --text="$testo" --radiolist --column="clicca" --column="opzione" TRUE "Non mostrare più all'avvio" FALSE "Mostra ancora all'avvio")
 case $test in
  "Non mostrare più all'avvio" )
  sed -i '$ d' /home/$USER/backup
  echo "#info=off" >> /home/$USER/backup
  ;;
 esac
fi
[ -e "/usr/bin/pv" ] && [ -e "/usr/bin/zenity" ]
case $? in
 1 )
 if [ ! -e "/usr/bin/pv" ] ; then dip="pv" ; fi
 if [ ! -e "/usr/bin/zenity" ] ; then [ -e "/usr/bin/pv" ] && dip="zenity" || dip=$dip" e zenity" ; fi
 zenity --error --width=500 --height=100 --text="dipendenze non soddisfatte: installa $dip."
 zenity --notification --text="gestione backup terminata, ciao."
 ;;
 0 )
if [ $(sed -e '$!d' /home/$USER/backup) = "#info=on" ] ; then var=$(zenity --width=450 --height=300 --list --title="GESTIONE BACKUP/RIPRISTINO" --text="Seleziona l'opzione desiderata" --column="" "script di BACKUP" "script di RIPRISTINO" "GESTIONE FILES")
else var=$(zenity --width=450 --height=300 --list --title="GESTIONE BACKUP/RIPRISTINO" --text="Seleziona l'opzione desiderata" --column="" "script di BACKUP" "script di RIPRISTINO" "GESTIONE FILES" "MOSTRA INFO AL PROSSIMO RIAVVIO")
fi
case $var in
 "script di BACKUP" )
dest=$(zenity --file-selection --directory --title="Seleziona la cartella di backup" 2> /dev/null)
case $? in
 0 )
 prov=$(zenity --file-selection --directory --title="Seleziona la cartella da copiare" 2> /dev/null)
 if [[ $? -eq 0 ]]; then
  [ $(du -s $prov | awk '{print $1}') -gt $(df $dest | tr "\n" ' ' | awk '{print $12}') ]
  if [[ $? -eq 1 ]]; then
   cartella=${prov##*/}
   count=0
   for i in $(ls $dest/*.tar.gz) ; do let count=count+1 ; done
   backupfile=$cartella"_backup"$count"-"$(date +%d-%m-%Y).tar.gz
   testo="cartella di destinazione:
$dest

cartella di provenienza:
$prov

file di backup:
$backupfile"
   zenity --question --title="BACKUP INCREMENTALE" --text="$testo"
   if [ $? -eq 0 ]; then
    log="backup_"$cartella.idx
    if [ -e $dest/$backupfile ]; then
     zenity --notification --window-icon="info" --text="c'è già un backup, non più di un backup al giorno"
    else
     (tar c --listed-incremental=$dest/$log f - $prov | pv -n -s $(du -sb $prov | awk '{print$1}') | gzip > $dest/$backupfile.tar.gz) 2>&1 | zenity --progress --no-cancel --width=450 --height=120 --title="AVVIO BACKUP" --text="backup in esecuzione, attendere.."
#     tar zcvf $dest/$backupfile --listed-incremental=$dest/$log $prov/ | zenity --progress --percentage=0 --auto-close
     zenity --notification --window-icon="info" --text="backup eseguito con successo."
    fi
   else
    zenity --notification --text="gestione backup terminata, ciao."
   fi
  else
  zenity --notification --window-icon="error" --text="backup non eseguito: spazio su disco non sufficiente."
  fi
 else
  zenity --notification --text="gestione backup terminata, ciao."
 fi
 ;;
 1 )
 zenity --notification --text="gestione backup terminata, ciao."
 ;;
esac
[ "$(ls -A $dest)" ] && echo "" || rm -r $dest
 ;;
 "script di RIPRISTINO" )
prov=$(zenity --file-selection --directory --title="Seleziona la cartella dell'archivio" 2> /dev/null)
case $? in
 0 )
 if `ls $prov/*.tar.gz &> /dev/null`; then
  dest=$(zenity --file-selection --directory --title="Seleziona la cartella dove ripristinare" 2> /dev/null)
  if [[ $? -eq 0 ]]; then
   [ $(du -s $prov | awk '{print $1}') -gt $(df $dest | tr "\n" ' ' | awk '{print $12}') ]
   if [[ $? -eq 1 ]]; then
    vararch=$(ls *.tar.gz | grep _backup0) ; archivio=${vararch%%_*}"_backup.tar.gz"
    val=$(du -sh $prov | awk '{print$1}')
    testo="
cartella dove ripristinare:
$dest

cartella ddell'archivio:
$prov

archivio da ripristinare:
$archivio
$val byte"
    zenity --question --height=400 --title="BACKUP INCREMENTALE" --text="$testo"
    if [ $? -eq 0 ] ; then
     for file in $( ls $prov/*.tar.gz )
     do
      cd $prov
      (pv pv -n -s $(du -sb $prov/*.tar.gz | awk '{print$1}') | tar xzv --listed-incremental=/dev/null --file ${file##*/} -C $dest) 2>&1 | zenity --progress --no-cancel --width=450 --height=120 --title="AVVIO RIPRISTINO IN CORSO" --text="ripristino dell'archivio $archivio in esecuzione, attendere.."
     done
     zenity --notification --window-icon="info" --text="ripristino eseguito con successo."
    else
     zenity --notification --text="gestione backup terminata, ciao."
    fi
   else
    zenity --notification --window-icon="error" --text="ripristino non eseguito: spazio su disco non sufficiente."
   fi
  else
   zenity --notification --text="gestione backup terminata, ciao."
  fi
 else
  zenity --notification --window-icon="error" --text="nessun archivio presente nella cartella."
 fi
 ;;
 "" )
 zenity --notification --text="gestione backup terminata, ciao."
 ;;
esac
 ;;
 "" )
 zenity --notification --text="gestione backup terminata, ciao."
 ;;
 "GESTIONE FILES" )
 file=$(zenity --file-selection --title="Seleziona il file da elimnare" 2> /dev/null)
 if [[ $? -eq 0 ]]; then
  [ zenity --question --height=400 --title="BACKUP INCREMENTALE" --text="eliminare $file?" ] && echo "" || (rm $file && zenity --notification --text="file '${file##*/}' eliminato.")
 else
  zenity --notification --text="gestione backup terminata, ciao."
 fi
 ;;
 "MOSTRA INFO AL PROSSIMO RIAVVIO" )
 sed -i '$ d' /home/$USER/backup
 echo "#info=on" >> /home/$USER/backup
 ;;
esac
 ;;
esac

exit 0

#info=on
 
@Rebel Yell Come mai pv?
A proposito, questa forma ''ls $dest/*.tar.gz'' crea noia in presenza di un indirizzo di una cartella nascosta per via del punto iniziale nel nome. Es. se faccio il backup della cartella nascosta /home/momy/.config, il nome del file tar.gz sarà .config_backup etcetc e succede che secondo ls dentro la cartella di destinazione non c'è nessun file config_backup etcetc. Opterei per un ''ls -a $dest/.*.gz''. A occhio mi sembra così, comunque verifica.
C' era un' altra cosa ma... mi è andata via. :P

EDIT: Sì, avevo pensato che si potrebbe metterci un vestitino, magari usando Dialog, Gdialog o Kdialog oppure Xdialog o tutti e tre, tanto basta un alias. :P

EDIT: Corretto ls.
 
Ultima modifica:
Te ne sei accorto che al primo avvio se non trova il file sgancia un error. :asd:
Intanto è sempre così, cominci con due righe tanto per... poi ti ritrovi decine di righe di codice, la veste grafica etcetc. :lol:
 
Te ne sei accorto che al primo avvio se non trova il file sgancia un error. :asd:
Intanto è sempre così, cominci con due righe tanto per... poi ti ritrovi decine di righe di codice, la veste grafica etcetc. :lol:
Che c'ha dialog che zenity non ha?
Cazzabubbola ai files nascosti, domani verifico, non c'avevo pensato:suicidio:
Cos'è la storia del file col primo avvio? :oogle:
 
Pubblicità
Pubblicità
Indietro
Top