[RISOLTO]script bash per backup

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
axr
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1909
Iscrizione: sabato 1 aprile 2006, 16:10
Distribuzione: kubuntu 22.04

[RISOLTO]script bash per backup

Messaggio da axr »

salve a tutti avrei bisogno di aiuto per favore.
eseguo il backup di una cartella di lavoro con areca backup il quale mi da la possibilità di creare uno script per l'avvio del backup da terminale.
il backup avviene su un disco usb che accendo solo quando mi serve. vorrei però automatizzare questa operazione tramite uno script bash richiamato da cron
fin qui tutto semplice, il fatto è che non vorrei lasciare sempre l'hd acceso per tutto il giorno per tutti i giorni, per questo vorrei creare uno script che faccia prima il controllo se l'hd usb è montato, se lo è parte il backup, altrimenti mi avvisa tramite una finestra di kdialog (uso kubuntu 14.04) o un suono magari!
sarebbe possibile?
purtroppo fino alla configurazione di cron riesco da solo ma di programmazione bash non ne capisco molto, c'è modo di farlo?
vi ringrazio molto
Ultima modifica di axr il giovedì 16 febbraio 2017, 18:07, modificato 1 volta in totale.
Avatar utente
DoctorStrange
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2926
Iscrizione: mercoledì 14 ottobre 2015, 9:33
Desktop: Gnome3
Distribuzione: Ubuntu 22.04 LTS Jammy Jellyfish
Sesso: Maschile
Località: Roma, Italia

Re: script bash per backup

Messaggio da DoctorStrange »

Certo, basta fare un controlla sulla directory dove, di solito viene montato il tuo hard disk.

Nel mio caso per esempio, la directory dove, di solito viene montata la mia pen drive è: /media/$USER/MICRODRIVE.

Quindi basta fare un:

Codice: Seleziona tutto

if [ -f /media/$USER/MICRODRIVE ]; then
;Qui dentro l'if fai eseguire il tuo script di backup
fi
In questo modo sei certo che ad intervalli regolari, tramite cron puoi richiamare questo script che, prima di ogni cosa controlla che il disco sia montato, e poi puoi fare quello che vuoi.

In base alla presenza o meno del disco, puoi far comparire un pop-up per esempio.

Io ad esempio, uso spesso:

Codice: Seleziona tutto

notify-send 'Titolo del popup' 'Messaggio popup'
Avatar utente
giulux
Amministratore
Amministratore
Messaggi: 25440
Iscrizione: domenica 10 gennaio 2010, 12:17
Desktop: ubuntu 18.04
Distribuzione: Ubuntu 18.04.3 LTS x86_64
Sesso: Maschile
Località: Roma

Re: script bash per backup

Messaggio da giulux »

Sposto in programmazione.
"Non è una segno di buona salute l'essere ben adattato ad una società malata". (Jiddu Krishnarmurti)
axr
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1909
Iscrizione: sabato 1 aprile 2006, 16:10
Distribuzione: kubuntu 22.04

Re: script bash per backup

Messaggio da axr »

ti ringrazio,
ho scritto questo:

Codice: Seleziona tutto

libsmount="/media/axenx/Alessandro-Back/";
mountpoint $libsmount
if [ $? -eq 0 ] ; then
aplay /usr/share/sounds/speech-dispatcher/test.wav
xterm -e ./backup_1577714777.sh
read
#echo "already mounted"
else
aplay /usr/share/sounds/KDE-Im-Cant-Connect.ogg
#echo "not mounted do it now"
fi
mi invia un suono se montato e mi apre xterm dove vedo l'output, il fatto è che vorrei lasciare il terminale aperto per vedere se è andato a buon fine il backup, per questo ho inserito il comando read ma non funziona, il termiale si chiude da solo. ottima l'idea di notify-osd, vedo di adattarla a kubuntu, non ci avevo pensato grazie
Avatar utente
DoctorStrange
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2926
Iscrizione: mercoledì 14 ottobre 2015, 9:33
Desktop: Gnome3
Distribuzione: Ubuntu 22.04 LTS Jammy Jellyfish
Sesso: Maschile
Località: Roma, Italia

Re: script bash per backup

Messaggio da DoctorStrange »

Non hai necessità di lasciare un terminale aperto per vedere l'esito di un semplice backup.

Dai il comando di backup e lo lasci lavorare.

Poi una volta che il backup ha terminato, intercetti l'exit status con " $? " e, in base all'exit status, generi un popup per esito positivo o fallimento.

In questo modo, in base alla lettura dell'exit status del comando di backup, hai anche un indicazione di massima di cosa potrebbe essere andato storto.

Cosa usi per fare il backup, cp, scp, rsync, o qualche applicazione particolare?
axr
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1909
Iscrizione: sabato 1 aprile 2006, 16:10
Distribuzione: kubuntu 22.04

Re: script bash per backup

Messaggio da axr »

uso areca backup
questo è l'output sda shell che vorrei leggere prima di chiudere il terminale:

Codice: Seleziona tutto

axenx@axenx:~$ ./backup_1577714777.sh
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
INFO -  - Configuration path : /home/axenx/.areca/workspace/1577714777.bcfg
INFO -  - Target : Laboratorio
INFO -  - Backup in progress ...
INFO -  - 0%
INFO -  - 10%
INFO -  - 20%
INFO -  - 30%
INFO -  - 40%
INFO -  - 50%
INFO -  - 60%
INFO -  - 70%
INFO -  - Committing backup ...
INFO -  - Creating a copy of the target's XML configuration ...
INFO -  - Commit completed.
INFO -  - Backup completed.
axenx@axenx:~$ 
Avatar utente
DoctorStrange
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2926
Iscrizione: mercoledì 14 ottobre 2015, 9:33
Desktop: Gnome3
Distribuzione: Ubuntu 22.04 LTS Jammy Jellyfish
Sesso: Maschile
Località: Roma, Italia

Re: script bash per backup

Messaggio da DoctorStrange »

Probabilmente intercettando lo STDOUT e lo STDERR di quell'applicazione e "dirottandola" nel tuo script puoi intercettare tutti quegli eventi.

Però non ne sono sicuro, dovresti fare qualche prova.
axr
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1909
Iscrizione: sabato 1 aprile 2006, 16:10
Distribuzione: kubuntu 22.04

Re: script bash per backup

Messaggio da axr »

controllando nella pianificazione del programma, posso far eseguire uno script che mi salva il risultato in un file, perfetto!
allora ho pensato di inserire alla fine del mio script di backup un comando che mi apre il file in questione.
i file vengono nominati così: rapporto_backup_2017_02_16_16h57_1 e quello che cambia è questa parte 2017_02_16_16h57 che rappresenta la data e l'ora.
come posso fare a scegliere l'ultimo file creato nella cartella? cioè quello con l'ultima data?
puoi aiutarmi?
grazie
Avatar utente
thece
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 13164
Iscrizione: lunedì 23 aprile 2007, 14:16
Distribuzione: Debian 12 (Bookworm) - KDE

Re: script bash per backup

Messaggio da thece »

:ciao:

prova un qualcosa tipo

Codice: Seleziona tutto

VARIABILE=$(ls -1 rapporto_backup_* | sort -r | head -n 1)
axr
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1909
Iscrizione: sabato 1 aprile 2006, 16:10
Distribuzione: kubuntu 22.04

Re: script bash per backup

Messaggio da axr »

Ciao e grazie del tuo aiut, ma....scusa la mia ignoranza, questo è lo script:

Codice: Seleziona tutto

#/bin/bash
libsmount="/media/axenx/Alessandro-Back/";
mountpoint $libsmount
if [ $? -eq 0 ] ; then
aplay /usr/share/sounds/speech-dispatcher/test.wav
konsole -e "/home/axenx/.areca/bin/areca_cl.sh" backup -c -wdir "/tmp/tmp-axenx" -config "/home/axenx/.areca/workspace/1577714777.bcfg" 
VARIABILE=$(ls -1 | sort -r | head -n 1)
#echo "already mounted"
exit
else
aplay /usr/share/sounds/KDE-Im-Cant-Connect.ogg
#echo "not mounted do it now"
fi
la carte dove sono i file è questa: /home/axenx/rapporto backup al cui interno ci sono questi file:
rapporto_backup_2017_02_16, 16h52, 1
rapporto_backup_2017_02_16, 16h53, 1
rapporto_backup_2017_02_16_16h57_1

Non è che voglio la pappa pronta è che non so dove mettere le mani!!! :muro: :muro: :muro:
axr
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1909
Iscrizione: sabato 1 aprile 2006, 16:10
Distribuzione: kubuntu 22.04

Re: script bash per backup

Messaggio da axr »

VARIABILE=$(ls -1 rapporto_backup_* | sort -r | head -n 1)
non trova i file nella cartella
ho fatto una cosa tipo questa:

Codice: Seleziona tutto

#/bin/bash
VARIABILE=$(ls -1 /home/axenx/rapporto_backup/rapporto_backup_* | sort -r | head -n 1)
kate $VARIABILE
e mi apre kate ma vuoto perche non trova i file pur ricontrollando tutti i percorsi. ho anche eliminato gli spazi nel nome della cartella, come vedi ho inserito gli under score
Ultima modifica di axr il giovedì 16 febbraio 2017, 17:25, modificato 1 volta in totale.
Avatar utente
thece
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 13164
Iscrizione: lunedì 23 aprile 2007, 14:16
Distribuzione: Debian 12 (Bookworm) - KDE

Re: script bash per backup

Messaggio da thece »

Codice: Seleziona tutto

#/bin/bash

LIBSMOUNT="/media/axenx/Alessandro-Back/"

mountpoint $LIBSMOUNT

if [ $? -eq 0 ]; then
	aplay /usr/share/sounds/speech-dispatcher/test.wav
	konsole -e "/home/axenx/.areca/bin/areca_cl.sh" backup -c -wdir "/tmp/tmp-axenx" -config "/home/axenx/.areca/workspace/1577714777.bcfg"

	VARIABILE=$(ls -1 "/home/axenx/rapporto backup/rapporto_backup_*" | sort -r | head -n 1)

	# Qui inizi ad usare $VARIABILE per farci quello che vuoi
	
	#echo "already mounted"
else
	aplay /usr/share/sounds/KDE-Im-Cant-Connect.ogg
	#echo "not mounted do it now"
fi

exit 0
Due osservazioni:

- non è obbligatorio, ma negli script Bash le variabili in genere si scrivono tutte in MAIUSCOLO
- indenta il codice
Ultima modifica di thece il giovedì 16 febbraio 2017, 17:27, modificato 1 volta in totale.
Avatar utente
thece
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 13164
Iscrizione: lunedì 23 aprile 2007, 14:16
Distribuzione: Debian 12 (Bookworm) - KDE

Re: script bash per backup

Messaggio da thece »

axr [url=http://forum.ubuntu-it.org/viewtopic.php?p=4959304#p4959304][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:VARIABILE=$(ls -1 rapporto_backup_* | sort -r | head -n 1)
non trova i file nella cartella
Era solo un'indicazione, andava adattato ... il software va scritto in modo esatto altrimenti è normale che non funzioni
Avatar utente
thece
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 13164
Iscrizione: lunedì 23 aprile 2007, 14:16
Distribuzione: Debian 12 (Bookworm) - KDE

Re: script bash per backup

Messaggio da thece »

Banale ...

Codice: Seleziona tutto

kate $VARIABILE
Supponiamo che $VARIABILE contenga il valore pippo.txt

Domanda: qual'è la working directory dello script, ossia da quale directory Kate sta aprendo il file? In quale directory è contenuto il file pippo.txt?

Meglio usare

Codice: Seleziona tutto

kate "/PATH/ASSOLUTO/$VARIABILE"
che dici?



Riguardati i concetti di percorso assoluto, percorso relativo e working directory (directory corrente)
axr
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1909
Iscrizione: sabato 1 aprile 2006, 16:10
Distribuzione: kubuntu 22.04

Re: script bash per backup

Messaggio da axr »

ho fatto come mi hai scritto tu:

Codice: Seleziona tutto

#/bin/bash
cd /home/axenx/rapporto_backup
VARIABILE=$(ls -1 /home/axenx/rapporto_backup/rapporto_backup_* | sort -r | head -n 1)
kate $VARIABILE
ma è lo stesso.
se entro nella cartella e passo il tuo comando senza percorso assoluto, trova il file:

Codice: Seleziona tutto

axenx@axenx:~/rapporto_backup $ ls -1 rapporto_backup_* | sort -r | head -n 1
rapporto_backup_2017_02_16_16h57_1
axenx@axenx:~/rapporto_backup $ ls -1 /home/axenx/rapporto_backup/rapporto_backup_* | sort -r | head -n 1
ls: impossibile accedere a /home/axenx/rapporto_backup/rapporto_backup_*: File o directory non esistente
axenx@axenx:~/rapporto_backup $ 
axr
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1909
Iscrizione: sabato 1 aprile 2006, 16:10
Distribuzione: kubuntu 22.04

Re: script bash per backup

Messaggio da axr »

ho capito il problema, c'era uno spazio alla fine del nome della cartella!!!! :muro: :muro: :muro: :muro: :muro:
axr
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1909
Iscrizione: sabato 1 aprile 2006, 16:10
Distribuzione: kubuntu 22.04

Re: script bash per backup

Messaggio da axr »

risolto:

Codice: Seleziona tutto

#/bin/bash

libsmount="/media/axenx/Alessandro-Back/";

mountpoint $libsmount
if [ $? -eq 0 ] ; then
 aplay /usr/share/sounds/speech-dispatcher/test.wav
  xterm -e /home/axenx/backup_1577714777.sh
   sleep 10s
    VARIABILE=$(ls -1 /home/axenx/rapporto_backup/rapporto_backup_* | sort -r | head -n 1)
    kate $VARIABILE
     #echo "already mounted"
   exit
else
 aplay /usr/share/sounds/KDE-Im-Cant-Connect.ogg
 #echo "not mounted do it now"
fi
grazie infine del vostro aiuto
axr
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1909
Iscrizione: sabato 1 aprile 2006, 16:10
Distribuzione: kubuntu 22.04

Re: [RISOLTO]script bash per backup

Messaggio da axr »

non capisco prchè cron mi esegue solo la prima parte dello script. si ferma prima di avviare il backup!!!
Avatar utente
thece
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 13164
Iscrizione: lunedì 23 aprile 2007, 14:16
Distribuzione: Debian 12 (Bookworm) - KDE

Re: [RISOLTO]script bash per backup

Messaggio da thece »

axr [url=http://forum.ubuntu-it.org/viewtopic.php?p=4959330#p4959330][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:non capisco prchè cron mi esegue solo la prima parte dello script. si ferma prima di avviare il backup!!!
E' sempre un problema di percorsi: leggi bene la documentazione di cron e di come è settata la sua variabile di ambiente PATH
axr
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1909
Iscrizione: sabato 1 aprile 2006, 16:10
Distribuzione: kubuntu 22.04

Re: [RISOLTO]script bash per backup

Messaggio da axr »

Ho controllato l'indentazione dello script e il backup è partito ma kate non è partito
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 3 ospiti