UFFICIALE L'OT di Linux e altri OS

Pubblicità
@« MoMy » adesso è perfetta, riconosce anche le cartelle nascoste e ho messo qualche miglioria; e adesso lo puoi anche nominare come ti pare e mettere dove ti pare!:luxhello: io l'ho chiamato backup e messo in /usr/bin e in più ne ho fatto un'applicazione*
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 incrementale raccoglie 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 pro-
venienza, 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 e-
strarre 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."

## controllo dipendenze
[ -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="Errore: dipendenze non soddisfatte, installa $dip.
Applicazione terminata."
  exit 0
  ;;
esac

## mostra testo iniziale?
if [ $(sed -e '$!d' $0) = "#info=on" ] ; then
 info=$(zenity --list --width=450 --height=600 --title="GESTIONE BACKUP INCREMENTALI" --text="$testo" --radiolist --column="clicca" --column="opzione" TRUE "Mostra ancora all'avvio" FALSE "Non mostrare più all'avvio")
 case $info in
  "Non mostrare più all'avvio" )
   sed -i '$ d' $0
   echo "#info=off" >> $0
   ;;
  "" )
   zenity --notification --text="gestione backup terminata, ciao."
   exit 0
   ;;
 esac
fi

## menù iniziale
var="mostra info al prossimo riavvio"
while [ "$var" = "mostra info al prossimo riavvio" ]
do
if [ $(sed -e '$!d' $0) = "#info=on" ] ; then
 var=$(zenity --list --width=450 --height=300 --title="GESTIONE BACKUP/RIPRISTINO" --text="Seleziona l'opzione desiderata" --radiolist --column="clicca" --column="opzione" TRUE "script di BACKUP" FALSE "script di RIPRISTINO" FALSE "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
if [ "$var" = "mostra info al prossimo riavvio" ] ; then sed -i '$ d' $0 ; echo "#info=on" >> $0 ; fi
done

## scelte dal menù iniziale
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 $(find $dest -maxdepth 1 -name *.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) 2>&1 | zenity --progress --no-cancel --width=450 --height=120 --title="AVVIO BACKUP" --text="backup in esecuzione, attendere.."
       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 [ "$(find $prov -maxdepth 1 -name *.tar.gz)" = "" ] ; then zenity --notification --window-icon="error" --text="nessun archivio presente nella cartella."
   else
     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=$(find $prov -maxdepth 1 -name *.tar.gz | grep _backup0) ; archivio=${vararch%%_*}"_backup.tar.gz" ; archivio=${archivio##*/}
       val=$(du -sh $prov | awk '{print$1}')
       testo="
cartella dove ripristinare:
$dest

cartella dell'archivio:
$prov

archivio da ripristinare:
$archivio
$val byte"
       zenity --question --height=400 --title="BACKUP INCREMENTALE" --text="$testo"
       if [ $? -eq 0 ] ; then
        count=0 ; for i in $(find $prov -maxdepth 1 -name *.tar.gz) ; do a=$(du -sb $i | awk '{print$1}') ; let count=count+a ; done
        for file in $( find $prov -maxdepth 1 -name *.tar.gz )
        do
         cd $prov
         (pv -n -s $count | tar xzv --listed-incremental=/dev/null --file ${file##*/} -C $dest) 2>&1 | zenity --progress --no-cancel --width=450 --height=120 --title="RIPRISTINO $archivio" --text="ripristino dell'archivio $file 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
    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
  ;;
esac


exit 0

#info=on

* (solo per gnome)
Codice:
#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.6
Name=BackupIncrementale
Comment=Gestione backup incrementale
Icon=/usr/share/icons/Faenza/actions/64/edit-copy.png
Exec=backup
Terminal=false
Type=Application
Categories=Utility;Application;
 
@« MoMy » adesso è perfetta, riconosce anche le cartelle nascoste e ho messo qualche miglioria; e adesso lo puoi anche nominare come ti pare e mettere dove ti pare!:luxhello: io l'ho chiamato backup e messo in /usr/bin e in più ne ho fatto un'applicazione*
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 incrementale raccoglie 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 pro-
venienza, 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 e-
strarre 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."

## controllo dipendenze
[ -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="Errore: dipendenze non soddisfatte, installa $dip.
Applicazione terminata."
  exit 0
  ;;
esac

## mostra testo iniziale?
if [ $(sed -e '$!d' $0) = "#info=on" ] ; then
 info=$(zenity --list --width=450 --height=600 --title="GESTIONE BACKUP INCREMENTALI" --text="$testo" --radiolist --column="clicca" --column="opzione" TRUE "Mostra ancora all'avvio" FALSE "Non mostrare più all'avvio")
 case $info in
  "Non mostrare più all'avvio" )
   sed -i '$ d' $0
   echo "#info=off" >> $0
   ;;
  "" )
   zenity --notification --text="gestione backup terminata, ciao."
   exit 0
   ;;
 esac
fi

## menù iniziale
var="mostra info al prossimo riavvio"
while [ "$var" = "mostra info al prossimo riavvio" ]
do
if [ $(sed -e '$!d' $0) = "#info=on" ] ; then
 var=$(zenity --list --width=450 --height=300 --title="GESTIONE BACKUP/RIPRISTINO" --text="Seleziona l'opzione desiderata" --radiolist --column="clicca" --column="opzione" TRUE "script di BACKUP" FALSE "script di RIPRISTINO" FALSE "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
if [ "$var" = "mostra info al prossimo riavvio" ] ; then sed -i '$ d' $0 ; echo "#info=on" >> $0 ; fi
done

## scelte dal menù iniziale
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 $(find $dest -maxdepth 1 -name *.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) 2>&1 | zenity --progress --no-cancel --width=450 --height=120 --title="AVVIO BACKUP" --text="backup in esecuzione, attendere.."
       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 [ "$(find $prov -maxdepth 1 -name *.tar.gz)" = "" ] ; then zenity --notification --window-icon="error" --text="nessun archivio presente nella cartella."
   else
     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=$(find $prov -maxdepth 1 -name *.tar.gz | grep _backup0) ; archivio=${vararch%%_*}"_backup.tar.gz" ; archivio=${archivio##*/}
       val=$(du -sh $prov | awk '{print$1}')
       testo="
cartella dove ripristinare:
$dest

cartella dell'archivio:
$prov

archivio da ripristinare:
$archivio
$val byte"
       zenity --question --height=400 --title="BACKUP INCREMENTALE" --text="$testo"
       if [ $? -eq 0 ] ; then
        count=0 ; for i in $(find $prov -maxdepth 1 -name *.tar.gz) ; do a=$(du -sb $i | awk '{print$1}') ; let count=count+a ; done
        for file in $( find $prov -maxdepth 1 -name *.tar.gz )
        do
         cd $prov
         (pv -n -s $count | tar xzv --listed-incremental=/dev/null --file ${file##*/} -C $dest) 2>&1 | zenity --progress --no-cancel --width=450 --height=120 --title="RIPRISTINO $archivio" --text="ripristino dell'archivio $file 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
    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
  ;;
esac


exit 0

#info=on

* (solo per gnome)
Codice:
#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.6
Name=BackupIncrementale
Comment=Gestione backup incrementale
Icon=/usr/share/icons/Faenza/actions/64/edit-copy.png
Exec=backup
Terminal=false
Type=Application
Categories=Utility;Application;
GRANDE!!!

p. s. primo posto al campus ST Microelectronics e secondo posto all'HackFest... ho vinto un sacco di cose carine e... HO VINTOOOOO *____*

#stm32
 
Bravo!!!
Con quali progetti hai vinto?? sono curioso...
grazie :)

bracciale guida per persone non vedenti. l'hackfest, invece, per aver dotato il bracciale di un tracker GNSS (la board è ancora un prototipo) e aver fatto l'estrazione dei dati NMEA utili... dato che lui tracka una marea di altre info :)

la challenge era usare una shield di espansione per fare qualcosa di interessante. a me attirava l'idea di usare un prototipo ma soprattutto di mettere le mani su una cosa "avanzata" come il GNSS e quindi... :)

cmq eravamo in tre perché il team era stato formato dagli organizzatori del campus. tre università diverse, tutti elettronici, abbiamo fatto amicizia e lavorato al massimo. 3 giorni per il bracciale, uno e mezzo per il tracker. mi sono spaccato al pc però ne è valsa la pena xD

ieri sera sono ritornato nel mondo normale e ho ripreso "a vivere" ahahahahah
Ekkime dopo un lungo uichend da paura.
@e_ale92 Complimenti ^^ @cdtux mi ha soffiato le parole da sotto le dita, son curioso ''anca mi''.

@rebellion Bravissimo, poi me lo leggo in tranquillità. ^^
grazieeee :)
 
@e_ale92 sembra una buona idea, complimenti a te e al team. Se ci sono sviluppi facci sapere
grazie davide :)

abbiamo vinto uno stand espositivo al technology day che ST e le partner (Micron anche) organizzano a novembre. ora ho qualche esame da fare, ma ho in mente di fare un porting per una nucleo 32 invece della 64. non mi sono ancora documentato, ma anche la 32 dovrebbe andare bene. se funziona, sicuramente ci sarà un miglioramento in termini di dimensioni del bracciale. sicuramente a quel punto ci sarà un evoluzione estetica e del cablaggio. lato software vedremo. devo fare un po' di spesa, prima di rimettermi al pc :asd: :)

cmq sì, vi terrò aggiornati e spero che qualche azienda o altro sia interessata all'idea (per questo lo stand al T-Day)... vedremo :)
 
Pubblicità
Pubblicità
Indietro
Top