UFFICIALE L'OT di Linux e altri OS

Pubblicità
Bene. :ok:
Se via terminale lanci il comando
Codice:
zenity --file-selection --directory --title="Backup: Cartella Destinazione"
Ti chiede la pass?
Personalmente qui (read -p "Procedo (s/n)? " var2) aggiungerei un elif (anche un case esac tornerebbe utile) perché tu dai la possibilità di scegliere tra s/n, quindi se premo s, ok, ma se premo n oppure un tasto qualsiasi?
Per esempio:
Codice:
read -p "BACKUP automatico (S/n)? " var1
echo ""

# Se premo s oppure invio... Backup automatico, else (premendo n o qualsiasi altro tasto) backup manuale

if [[ $var1 = @(s|"") ]]; then
echo Si è scelto BACKUP automatico!
dest=/home/$USER/BACKUP
backup=backup
prov=/home/$USER/Immagini
else
clear && echo "#############   IMMISSIONE DATI   ###############"
echo ""
echo Si è scelto BACKUP Manuale
codice codice
bla bla
bla bla

# Anche qui stessa cosa, se premi invio o s... continua, else interrompi e avvisa che lo fai.

read -p "Procedo (S/n)? " var2
if [[ $var2 = @(s|"") ]]; then
 backupfile=$backup$(date +%d-%m-%Y).tar.gz
 log=$backup$(date +%d-%m-%Y).idx
 if [ ! -d $dest ]; then
  mkdir $dest
 fi
 if [ -e $dest/$backupfile ]; then
  echo ""
  echo "c'è già un backup, non più di un backup al giorno."
 else
  tar zcvf $dest/$backupfile --listed-incremental=$dest/$log /$prov/
 fi
 echo ""
 read -p "FINE! premi un tasto.."
 
# Aggiunto un else che avvisa...
 else
 echo Esecuzione interrotta.
 read -p "FINE! premi un tasto.."
 exit 0
fi

exit 0

Questa soluzione è ''figherrima'' :asd:
Codice:
#!/bin/bash
select i in a b c exit
do
  case $i in
    a) echo "Backup Automatico";;
    b) echo "Backup manuale";;
    c) echo "Backup selettivo";;
    exit) exit;;
  esac
  break
done
exit 0
I tasti selezione sono 1, 2, 3 oppure exit. :P

Spè perché le cose mi vengono in mente a rate o in seconda lettura...
Codice:
 return_code_3=$?
if [[ $return_code_3 -eq 1 ]]; then
/* la variabile return_code_3 in realtà non serve, l' esempio sotto funziona sempre e comunque. */
if [[ $? -eq 1 ]]; then
Lo dimentico spesso -.-' , creare una variabile quando già esiste, non serve.
C' era un' altra cosa, ma l' ho dimenticata mentre scrivevo. :|

Al solito, poi fai come vuoi... ^^

EDIT: M'è venuta in mente...
Le varibili $dest e $prov se le dichiari all' inizio dello script, lo fai una volta per tutte e manterranno il valore sino a quando termina lo script o il valore viene cambiato.

Certo che bla bla nell' esempio è molto professionale. :asd:

Edit: Ultima cosa... giuro. :P
Se alla variabile prov imposti un percorso con tanto di slah (/), non serve aggiungela quando la richiami:
tar zcvf $dest/$backupfile --listed-incremental=$dest/$log /$prov/ (nel valore di /$prov/ c'è una barra di troppo), altrimenti esce una cosa tipo //home/<utente>/Immagini/
 
Ultima modifica:
@« MoMy » certo lo script deve essere ottimizzato, ci sto lavorando nei ritagli di tempo..:caffe: ho tempo fino a lunedì quando mi arrivano 2TB di storage.
ho pensato di riscriverlo daccapo senza uso del terminale e già sto mettendo qualche case-esac, danno più eleganza sono d'accordo.:fumato:il terminale l'avevo scelto perchè con l'opzione v (di tar) m'era sembrato l'unico ambiente per avere info sul progresso; adesso sto pensando a una pipe tipo
Codice:
tar xyzeccetera | zenity --progress
, dovrebbe funzionare.
PS l'autenticazione non me la chiede sul desktop, stesso arch+gnome+wayland del portatile. avevo notato la doppia slash, quando ho lanciato lo script stranamente ha funzionato lo stesso..:asd:
 
@« MoMy » @rebellion ditemi che tutto questo lavoro finisce su github insieme ai vostri altri script... vi prego, ditemelo :cry: è troppo bello per andare perso nelle pagine di questo thread.

cmq, avrei piacere di provare e vedere come funziona questo script per il backup, quando sarà pronto :)
 
@« MoMy » @rebellion ditemi che tutto questo lavoro finisce su github insieme ai vostri altri script... vi prego, ditemelo :cry:
oh davvero? su github?:blush: bisognerebbe farci un paio di aggiunte allora, tipo controllare che non si selezionino cartelle di destinazione non user e fare l'opzione per un backup selettivo.

@« MoMy » allora, per quanto riguarda le domande si/no, ho volutamente lasciato che ogni risposta diversa da si fosse interpretata come un no, perchè l'importante è essere sicuri di voler andare avanti col programma, qualsiasi errore di battitura lo interpreto per sicurezza come uno stop. si potrebbe forzare le sole risposte si o no ma per velocità ho optato per la prima opzione.
$dest e $prov non le avevo dichiarate all'inizio perchè le avrei dovuto riassegnare quando annullavo 'zenity --file-selection' che mi avrebbe restituito una stringa vuota per dest e prov.
 
oh davvero? su github?:blush: bisognerebbe farci un paio di aggiunte allora, tipo controllare che non si selezionino cartelle di destinazione non user e fare l'opzione per un backup selettivo.

@« MoMy » allora, per quanto riguarda le domande si/no, ho volutamente lasciato che ogni risposta diversa da si fosse interpretata come un no, perchè l'importante è essere sicuri di voler andare avanti col programma, qualsiasi errore di battitura lo interpreto per sicurezza come uno stop. si potrebbe forzare le sole risposte si o no ma per velocità ho optato per la prima opzione.
$dest e $prov non le avevo dichiarate all'inizio perchè le avrei dovuto riassegnare quando annullavo 'zenity --file-selection' che mi avrebbe restituito una stringa vuota per dest e prov.
non githubbi i tuoi script/codici? io da quando ho scoperto git, ho iniziato a caricare scriptini e robe varie che uso sulle installazione Linux. git è una manna dal cielo anche per nabbi come me :sisi: quando formatto o ho problemi sul server, non mi preoccupo di andare a pescare gli script etc. chissà dove perché ho tutto online :)
 
non githubbi i tuoi script/codici? io da quando ho scoperto git, ho iniziato a caricare scriptini e robe varie che uso sulle installazione Linux. git è una manna dal cielo anche per nabbi come me :sisi: quando formatto o ho problemi sul server, non mi preoccupo di andare a pescare gli script etc. chissà dove perché ho tutto online :)
Segnalo a tal proposito l'ottimo git server "gogs", è completamente scritto in linguaggio GO, è self-hosted ed ha praticamente tutte le funzionalità di github :) .

https://gogs.io/
 
@e_ale92 Molti lo fanno infatti. Personalmente tengo tutto archiviato in dischi vari :P ho ancora un disco ide che usavo al tempo con xp con tutte le caSSatine, configurazioni, programmini vari...

@rebellion Per il Si/no infatti avevo portato l' esempio di if [[ $var1 = @(s|"") ]]; estensibile con un if [[ $var1 = @(s|S|"") ]] che tradotto sarebbe s minuscola/maiuscola oppure nulla (cioè invio), tutto il resto... picche.
Per il resto, importante è non attorcigliarsi attorno a if, else e if e ancora else quando basterebbe un if e un else. Semplice, lineare.
Prima che me ne dimentichi, un' alternativa al testo iniziale sarebbe printf, tipo un echo ma meno potente (provalo così com'è):
Codice:
#!/bin/bash
printf "  ###############################################
             #### Semplice script di backup incrementale con tar #####
             ## Premere ctrl+c in qualsiasi momento per terminare ####
             ###############################################

             Cartella di destinazione di default: /home/$USER/BACKUP
             Cartella da copiare di default: /home/$USER/Immagini
             Nome file di backup di default: backup"
exit 0
Forse c'è da allinearlo 'nattimo e attento alle virgolette di troppo, una apre e una chiude.
 
@« MoMy » @e_ale92 ho modificato lo script e reso definitivo:
1. ho eliminato il backup automatico
2. il backup selettivo non ha senso secondo me perchè trattasi di backup incrementale
3. il nome del backup è automatico secondo lo schema: "directory di provenienza"+"_backup"+"-data"+".tar.gz"
4. così com'è non si possono archiviare cartelle di root, basterebbe lanciare 'tar' tramite sudo imponendo in più l'opzione
5. ho eliminato la creazione della cartella di destinazione se non è presente: si può creare quando si apre la finestra con nautilus (in alto a destra c'è il simbolo dell'opzione crea cartella).

script di lancio:
Codice:
#!/bin/bash

gnome-terminal -e 'sh /home/crivi/bin/backup.sh' --hide-menubar --title="SCRIPT DI BACKUP INCREMENTALE"

exit 0
script di backup: backup.sh:
Codice:
#!/bin/bash

printf "
#########################################################
    Semplice script di backup incrementale con tar
Per copiare cartelle root lanciare tar con sudo e imporre
    in più l'opzione per preservare i permessi
Premere ctrl+c in qualsiasi momento per terminare
#########################################################


"
echo "###################  IMMISSIONE DATI  ###################"
echo ""
dest=$(zenity --file-selection --directory --title="Backup: Cartella Destinazione" 2> /dev/null)
case $? in
0)
 echo "Cartella selezionata di destinazione: "$dest
 prov=$(zenity --file-selection --directory --title="Backup: Cartella Di Provenienza" 2> /dev/null)
 if [[ $? -eq 0 ]]; then
  echo "Cartella selezionata di provenienza: "$prov
  cartella=${prov##*/}
  backupfile=$cartella"_backup"-$(date +%d-%m-%Y).tar.gz
  echo "Nome file di backup--> "$backupfile
  echo ""
  read -p "Procedo (s/n)? " var2
  if [ "$var2" == "s" ]; then
   log=$backup$(date +%d-%m-%Y).idx
   if [ -e $dest/$backupfile ]; then
    echo ""
    echo "c'è già un backup, non più di un backup al giorno."
   else
    tar zcvf $dest/$backupfile --listed-incremental=$dest/$log $prov/
   fi
   echo ""
   read -p "FINE! premi invio.."
  fi
 fi
;;
esac

exit 0
 
Ultima modifica:
@« MoMy » @e_ale92 ho modificato lo script e reso definitivo:
1. ho eliminato il backup automatico
2. il backup selettivo non ha senso secondo me perchè trattasi di backup incrementale
3. il nome del backup è automatico secondo lo schema: "directory di provenienza"+"_backup"+"-data"+".tar.gz"
4. così com'è non si possono archiviare cartelle di root, basterebbe lanciare 'tar' tramite sudo imponendo in più l'opzione

script di lancio:
Codice:
#!/bin/bash

gnome-terminal -e 'sh /home/crivi/bin/backup.sh' --hide-menubar --title="SCRIPT DI BACKUP INCREMENTALE"

exit 0
script di backup: backup.sh:
Codice:
#!/bin/bash

printf "
#########################################################
    Semplice script di backup incrementale con tar
Per copiare cartelle root lanciare tar con sudo e imporre 
    in più l'opzione per preservare i permessi
Premere ctrl+c in qualsiasi momento per terminare
#########################################################


"
echo "###################  IMMISSIONE DATI  ###################"
echo ""
dest=$(zenity --file-selection --directory --title="Backup: Cartella Destinazione" 2> /dev/null)
case $? in
0)
 echo "Cartella selezionata di destinazione: "$dest
 prov=$(zenity --file-selection --directory --title="Backup: Cartella Di Provenienza" 2> /dev/null)
 if [[ $? -eq 0 ]]; then
  echo "Cartella selezionata di provenienza: "$prov
  cartella=${prov##*/}
  backupfile=$cartella"_backup"-$(date +%d-%m-%Y).tar.gz
  echo "Nome file di backup--> "$backupfile
  echo ""
  read -p "Procedo (s/n)? " var2
  if [ "$var2" == "s" ]; then 
   log=$backup$(date +%d-%m-%Y).idx
   if [ -e $dest/$backupfile ]; then
    echo ""
    echo "c'è già un backup, non più di un backup al giorno."
   else
    tar zcvf $dest/$backupfile --listed-incremental=$dest/$log $prov/
   fi
   echo ""
   read -p "FINE! premi invio.."
  fi
 fi
;;
esac

exit 0
dopo me lo leggo per bene e appena ho tempo lo provo *_*
 
dopo me lo leggo per bene e appena ho tempo lo provo *_*
ora che ci penso manca un'ultimo dettaglio: eliminare la fastidiosa tendenza acchè lo script esegua in maniera random rm -r *.*..:asd:
scherso, bisognerebbe solo valutare lo spazio sul disco della cartella di destinazione e compararlo con quello del file di partenza per impedire che manchi memoria per l'archiviazione; e cancellare l'archivio appena prodotto qualora si volesse forzare il tar perchè si ritenesse che gzip potesse comprimere in modo da far memoorizzare tutto l'archivio compresso. devo valutare il comando du, ci sono altri metodi?
 
ora che ci penso manca un'ultimo dettaglio: eliminare la fastidiosa tendenza acchè lo script esegua in maniera random rm -r *.*..:asd:
scherso, bisognerebbe solo valutare lo spazio sul disco della cartella di destinazione e compararlo con quello del file di partenza per impedire che manchi memoria per l'archiviazione; e cancellare l'archivio appena prodotto qualora si volesse forzare il tar perchè si ritenesse che gzip potesse comprimere in modo da far memoorizzare tutto l'archivio compresso. devo valutare il comando du, ci sono altri metodi?
 
Pubblicità
Pubblicità
Indietro
Top