RISOLTO systemd timer e script di backup

Pubblicità
@« MoMy »
non funziona nemmeno zenity :(
altrimenti ci infili questo python script:asd::
Codice:
#!/usr/bin/python

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk,GLib

def main():
    def destroying_dialog():
        dialog.destroy()
        Gtk.main_quit()
        return False
    dialog = Gtk.MessageDialog()
    dialog.set_decorated(False)
    dialog.set_opacity(0.8)
    dialog.format_secondary_text("BACKUP SUCCESSFULLY DONE!")
    dialog.show_all()

    GLib.timeout_add_seconds(3, destroying_dialog)

    Gtk.main()

if __name__ == "__main__":
    main()
 
Ultima modifica:
@rebellion Bisogna comunque dirgli dove altrimeti crasha perché non vede alcun server (Unable to init server: Could not connect: Connection refused).
@e_ale92, prova così esportando il display in uso:
Codice:
export DISPLAY=:0 && zenity --info --width=150 --height=80 \
       --title "duplicity" \
       --text "backup completato" \
       --timeout=6 2> /dev/null
 
@rebellion Bisogna comunque dirgli dove altrimeti crasha perché non vede alcun server (Unable to init server: Could not connect: Connection refused).
@e_ale92, prova così esportando il display in uso:
Codice:
export DISPLAY=:0 && zenity --info --width=150 --height=80 \
       --title "duplicity" \
       --text "backup completato" \
       --timeout=6 2> /dev/null
nel foo.service non ci vuole anche la sezione [Install]?
 
altrimenti ci infili questo python script:asd::
Codice:
#!/usr/bin/python

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk,GLib

def main():
def destroying_dialog():
dialog.destroy()
Gtk.main_quit()
return False
dialog = Gtk.MessageDialog()
dialog.set_decorated(False)
dialog.set_opacity(0.8)
dialog.format_secondary_text("BACKUP SUCCESSFULLY DONE!")
dialog.show_all()

GLib.timeout_add_seconds(3, destroying_dialog)

Gtk.main()

if __name__ == "__main__":
main()

a sto punto faccio tutto in py, no? peccato che non lo conosco :(

@rebellion Bisogna comunque dirgli dove altrimeti crasha perché non vede alcun server (Unable to init server: Could not connect: Connection refused).
@e_ale92, prova così esportando il display in uso:
Codice:
export DISPLAY=:0 && zenity --info --width=150 --height=80 \
--title "duplicity" \
--text "backup completato" \
--timeout=6 2> /dev/null

dici che non vede il display? mmm domani provo!
 
(dal bash script) ho visto che lanceresti l'avviso di backup eseguito a prescindere che abbia avuto effettivamente successo, e se ci fosse un errore qualsiasi come te ne accorgeresti?

in realtà quella era una prima versione dello script... ora dovrebbe essere più o meno così:

Codice:
#!/bin/bash

# mega #
# check connection #
if (ping -q -c 1 -W 1 8.8.8.8 >/dev/null || ping -q -c 1 -W 1 google.com >/dev/null) ; then

   # setting the confidential variables #
   export PASSPHRASE="insert here your passphrase"
   USER="insert here your account id"
   PASS="insert here your master application key"
   HOST="mega.nz"
   NAME="insert here the name of the backup"
   DIR="set the directory that you would to backup"
   MDIR="set the mega directory"

   # doing a monthly full backup (1M) #
   duplicity --full-if-older-than 1M --name=$NAME $DIR mega://$USER:$PASS@$HOST/$MDIR

   # deleting full backups older than 2 months (2) #
   duplicity remove-all-but-n-full 2 --force mega://$USER:$PASS@$HOST/$MDIR

   # to restore a folder from your backup #
   # comment the previuos command and set the directory
   #RESTORE_DIR=
   #duplicity restore mega://$USER:$PASS@$HOST/$MDIR $RESTORE_DIR

   # unsetting the confidential variables #
   unset PASSPHRASE

   # notify #
   export DISPLAY=:0 && zenity --info --width=150 --height=80 \
          --title "duplicity" \
          --text "backup completato" \
          --timeout=6 2> /dev/null

# get error #
else
    export DISPLAY=:0 && zenity --warning --width=180 --height=80 \
           --title "assenza connessione" \
           --text "il backup verrà rimandato" \
           --timeout=6 2> /dev/null
fi

################################################
##                                bcclsn v1.4 ##
################################################

altre cause di fallimento non ne ho implementate tuttavia non credo servano...
 
in realtà quella era una prima versione dello script... ora dovrebbe essere più o meno così:
[ ... ]
altre cause di fallimento non ne ho implementate tuttavia non credo servano...
i comandi duplicity potrebbero terminare con errori? se così fosse puoi usare il costrutto
Codice:
if >command< 
then
   echo successfully
else
   echo unsuccessfully
fi
 
i comandi duplicity potrebbero terminare con errori? se così fosse puoi usare il costrutto
Codice:
if >command< 
then
echo successfully
else
echo unsuccessfully
fi
mmm ora che mi ci fai pensare sì... potrei implementarli appena ho tempo :)

cmq la soluzione di MoMy si è rivelata corretta (come al solito!).
oggi ho acceso il pc fuori casa e mi ha dato il warning previsto per mancanza di connessione. poi quando ha backuppato, mi ha dato il messaggio di success...
--- i due messaggi sono stati uniti ---
@« MoMy »: sistemo una cosa e se ne sfascia un'altra. non so perché ma ora esegue lo script ad ogni accensione. se listo il timer mi dice che mancano 22h ma è la seconda volta che accendo il pc oggi e mi ha già fatto due backup.
linko i file aggiornati...

script:
https://github.com/bcclsn/xiaomi-mi-air/blob/master/.script/backup_public_mega.sh

service:
https://github.com/bcclsn/xiaomi-mi-air/blob/master/.script/systemd/backup.service

timer:
https://github.com/bcclsn/xiaomi-mi-air/blob/master/.script/systemd/backup.timer
 
Ultima modifica:
Mi sa che OnBootSec fa a cazzotti con OnCalendar e quindi si dovrà lavorare sul service. Altro giro, altra corsa... ti faccio sapere. :P
 
Mi sa che OnBootSec fa a cazzotti con OnCalendar e quindi si dovrà lavorare sul service. Altro giro, altra corsa... ti faccio sapere. :P
dici? però mi pare che prima di introdurre il check sulla connessione, su mega mi ritrovavo uno solo backup al giorno... o forse accendevo il pc una sola volta? oddio non ricordo xD
 
Mi sa che OnBootSec fa a cazzotti con OnCalendar e quindi si dovrà lavorare sul service. Altro giro, altra corsa... ti faccio sapere. :P
bèh sembra di sì, onbootsec e simili sono 'monotonic', oncalendar invece è 'realtime'.
@e_ale92 potrebbe impostare monotonic come timer e allo script in bash far fare un controllo su quanto tempo è trascorso dall'ultimo backup facendo uso di un file nel quale viene specificato il giorno dell'ultimo backup.
 
bèh sembra di sì, onbootsec e simili sono 'monotonic', oncalendar invece è 'realtime'.
@e_ale92 potrebbe impostare monotonic come timer e allo script in bash far fare un controllo su quanto tempo è trascorso dall'ultimo backup facendo uso di un file nel quale viene specificato il giorno dell'ultimo backup.
e se invece volessi usare oncalendar? onboot lho introdotto perché non partiva al boot
 
Se per eseguire i comandi dello script son sufficienti i privilegi utente, personalmente opterei per systemd-user così mi toglierei qualche impiccio.
 
Pubblicità
Pubblicità
Indietro
Top