RISOLTO systemd timer e script di backup

rebellion

Utente Èlite
1,592
506
CPU
intel i5 9500
Dissipatore
cooler master hyper 212 evo
Scheda Madre
asrock b360 pro4
HDD
samsung 850evo 250GB+samsung 840pro 128GB+seagate barracuda 2TB+seagate barracuda 2TB
RAM
corsair vengeance lpx ddr4 2133MHz 2x4GB CL13
GPU
integrata intel hd graphics 630
Audio
integrata
Monitor
samsung ue55mu6500u
PSU
xfx pro series 550w core edition
Case
mastercooler
OS
archlinux x64 + gnome3.34.1 && windows10 pro x64
@« 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:

« MoMy »

Utente Èlite
1,520
757
@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
 
  • Mi piace
Reazioni: rebellion

rebellion

Utente Èlite
1,592
506
CPU
intel i5 9500
Dissipatore
cooler master hyper 212 evo
Scheda Madre
asrock b360 pro4
HDD
samsung 850evo 250GB+samsung 840pro 128GB+seagate barracuda 2TB+seagate barracuda 2TB
RAM
corsair vengeance lpx ddr4 2133MHz 2x4GB CL13
GPU
integrata intel hd graphics 630
Audio
integrata
Monitor
samsung ue55mu6500u
PSU
xfx pro series 550w core edition
Case
mastercooler
OS
archlinux x64 + gnome3.34.1 && windows10 pro x64
@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]?
 

e_ale92

Utente Èlite
17,011
5,013
CPU
Intel® Core™ i7-920 Processor - @3.33GHz
Dissipatore
Stock Intel
Scheda Madre
Asus P6T - socket LGA 1366
HDD
Samsung 830 128GB + Samsung Spinpoint F4 320GB + Seagate Barracuda 1,5 TB
RAM
Corsair DDR3 1333MHz CL9 XMS3 DHX (3x2GB) - @1674MHz
GPU
MSI R6970 Lightning
Audio
Realtek ALC 1200
Monitor
HP 2310i
PSU
XFX Pro 750W Core Edition
Case
Cooler Master HAF 922
Periferiche
R.A.T. 5 Cyborg Mad Catz - Keycool KC84
OS
Arch Linux + Windows 10 Pro
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!
 

rebellion

Utente Èlite
1,592
506
CPU
intel i5 9500
Dissipatore
cooler master hyper 212 evo
Scheda Madre
asrock b360 pro4
HDD
samsung 850evo 250GB+samsung 840pro 128GB+seagate barracuda 2TB+seagate barracuda 2TB
RAM
corsair vengeance lpx ddr4 2133MHz 2x4GB CL13
GPU
integrata intel hd graphics 630
Audio
integrata
Monitor
samsung ue55mu6500u
PSU
xfx pro series 550w core edition
Case
mastercooler
OS
archlinux x64 + gnome3.34.1 && windows10 pro x64
a sto punto faccio tutto in py, no? peccato che non lo conosco
(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?
 

e_ale92

Utente Èlite
17,011
5,013
CPU
Intel® Core™ i7-920 Processor - @3.33GHz
Dissipatore
Stock Intel
Scheda Madre
Asus P6T - socket LGA 1366
HDD
Samsung 830 128GB + Samsung Spinpoint F4 320GB + Seagate Barracuda 1,5 TB
RAM
Corsair DDR3 1333MHz CL9 XMS3 DHX (3x2GB) - @1674MHz
GPU
MSI R6970 Lightning
Audio
Realtek ALC 1200
Monitor
HP 2310i
PSU
XFX Pro 750W Core Edition
Case
Cooler Master HAF 922
Periferiche
R.A.T. 5 Cyborg Mad Catz - Keycool KC84
OS
Arch Linux + Windows 10 Pro
(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...
 
  • Mi piace
Reazioni: rebellion

rebellion

Utente Èlite
1,592
506
CPU
intel i5 9500
Dissipatore
cooler master hyper 212 evo
Scheda Madre
asrock b360 pro4
HDD
samsung 850evo 250GB+samsung 840pro 128GB+seagate barracuda 2TB+seagate barracuda 2TB
RAM
corsair vengeance lpx ddr4 2133MHz 2x4GB CL13
GPU
integrata intel hd graphics 630
Audio
integrata
Monitor
samsung ue55mu6500u
PSU
xfx pro series 550w core edition
Case
mastercooler
OS
archlinux x64 + gnome3.34.1 && windows10 pro x64
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
 
  • Mi piace
Reazioni: e_ale92

e_ale92

Utente Èlite
17,011
5,013
CPU
Intel® Core™ i7-920 Processor - @3.33GHz
Dissipatore
Stock Intel
Scheda Madre
Asus P6T - socket LGA 1366
HDD
Samsung 830 128GB + Samsung Spinpoint F4 320GB + Seagate Barracuda 1,5 TB
RAM
Corsair DDR3 1333MHz CL9 XMS3 DHX (3x2GB) - @1674MHz
GPU
MSI R6970 Lightning
Audio
Realtek ALC 1200
Monitor
HP 2310i
PSU
XFX Pro 750W Core Edition
Case
Cooler Master HAF 922
Periferiche
R.A.T. 5 Cyborg Mad Catz - Keycool KC84
OS
Arch Linux + Windows 10 Pro
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...
Post unito automaticamente:

@« 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:

« MoMy »

Utente Èlite
1,520
757
Mi sa che OnBootSec fa a cazzotti con OnCalendar e quindi si dovrà lavorare sul service. Altro giro, altra corsa... ti faccio sapere. :P
 

e_ale92

Utente Èlite
17,011
5,013
CPU
Intel® Core™ i7-920 Processor - @3.33GHz
Dissipatore
Stock Intel
Scheda Madre
Asus P6T - socket LGA 1366
HDD
Samsung 830 128GB + Samsung Spinpoint F4 320GB + Seagate Barracuda 1,5 TB
RAM
Corsair DDR3 1333MHz CL9 XMS3 DHX (3x2GB) - @1674MHz
GPU
MSI R6970 Lightning
Audio
Realtek ALC 1200
Monitor
HP 2310i
PSU
XFX Pro 750W Core Edition
Case
Cooler Master HAF 922
Periferiche
R.A.T. 5 Cyborg Mad Catz - Keycool KC84
OS
Arch Linux + Windows 10 Pro
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
 

rebellion

Utente Èlite
1,592
506
CPU
intel i5 9500
Dissipatore
cooler master hyper 212 evo
Scheda Madre
asrock b360 pro4
HDD
samsung 850evo 250GB+samsung 840pro 128GB+seagate barracuda 2TB+seagate barracuda 2TB
RAM
corsair vengeance lpx ddr4 2133MHz 2x4GB CL13
GPU
integrata intel hd graphics 630
Audio
integrata
Monitor
samsung ue55mu6500u
PSU
xfx pro series 550w core edition
Case
mastercooler
OS
archlinux x64 + gnome3.34.1 && windows10 pro x64
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.
 

e_ale92

Utente Èlite
17,011
5,013
CPU
Intel® Core™ i7-920 Processor - @3.33GHz
Dissipatore
Stock Intel
Scheda Madre
Asus P6T - socket LGA 1366
HDD
Samsung 830 128GB + Samsung Spinpoint F4 320GB + Seagate Barracuda 1,5 TB
RAM
Corsair DDR3 1333MHz CL9 XMS3 DHX (3x2GB) - @1674MHz
GPU
MSI R6970 Lightning
Audio
Realtek ALC 1200
Monitor
HP 2310i
PSU
XFX Pro 750W Core Edition
Case
Cooler Master HAF 922
Periferiche
R.A.T. 5 Cyborg Mad Catz - Keycool KC84
OS
Arch Linux + Windows 10 Pro
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
 

« MoMy »

Utente Èlite
1,520
757
Se per eseguire i comandi dello script son sufficienti i privilegi utente, personalmente opterei per systemd-user così mi toglierei qualche impiccio.
 

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!