Page 1 sur 2

[Bash] Backup global Domoticz vers NAS via FTP

Publié : 01 mai 2018, 20:37
par Xeo
Après quelques problèmes de réinstallation RPI :(, J'utilise maintenant un script qui fait la sauvegarde de tout le répertoire domoticz à intervalle régulier avec crontab vers sur mon NAS en ftp.
Ce script pour être aussi utilisé avec quelques modif (nom répertoire et fichier sauvegarde) pour sauvegarder n'importe quoi sur votre rpi, perso je l'utilise pour sauvegarder mes script python autonomes que je range dans Document.

En cas de réinstallation de la SD du rpi il suffit de faire une installation neuve de domoticz et ensuite d'écraser le répertoire domoticz avec celui de la sauvegarde avec Xarchiver et l'on récupère tout ce que l'on avait fait, db domoticz,plan, scripts... comme si rien ne s'était passé.
Pour transférer le fichier de sauvegarde souhaité vers le RPI j'utilise mon PC qui a accès au NAS en tant que volume, et la fonction transfert de fichier de VNC.
Nota : Pour crontab la syntaxe est pénible pour rester poli, je vous conseille d'utiliser la version graphique gnome elle est top.
[sudo apt-get install gnome-schedule]
le log de gnome-schedule est dans "/var/log/syslog" pour voir ce qui se passe...

Utiliser votre éditeur favoris pour créer le fichier le script "à nommer comme vous voulez".sh
et ensuite n'oublier pas de faire [sudo chmod +x <votre nom de fichier script.sh>] en étant dans le répertoire ou vous l'avez créer.

Code : Tout sélectionner

#!/bin/bash
### PARAMETRES
    USERNAME="Utilisateur"            # Nom utilisateur ayant un acces FTP defini sur le NAS
    PASSWORD="Mot de passe"        # Mot de passe FTP de cet utilisateur defini sur le NAS
    TIMESTAMP=`/bin/date +%Y%m%d%H%M%S` # recuperation de la date/hh/mm/ss
    BACKUPFILEDIR="domoticz_DOMO_$TIMESTAMP.tar.gz" # Nom du fichier de sauvegarde, vous pouvez changer "domoticz_DOMO_" par ce que vous voulez
### Creation backup et zip du repertoire domoticz
    tar -zcvf /tmp/$BACKUPFILEDIR /home/pi/domoticz/   # 
     ### envoi du fichier via FTP
    curl -s --disable-epsv -v -T"/tmp/$BACKUPFILEDIR" -u"$USERNAME:$PASSWORD" "ftp://<adresse IP du NAS FTP>/COMMUN/DOMOTICZ/BACKUP/"  # "/COMMUN/DOMOTICZ/BACKUP" Exemple de chemin pour les sauvegardes. A creer dans le NAS avant de faire la première sauvegarde   !!!
                                                    
    ### suppression du fichier temporaire de sauvegarde sur le rpi
    /bin/rm /tmp/$BACKUPFILEDIR

    ### Terminer! les fichiers de sauvegarde seront sur le NAS avec horodatage dans le nom de fichier

Re: Backup global Domoticz vers NAS via FTP

Publié : 02 mai 2018, 15:26
par nickous
merci pour le partage
par contre tu n'arrête pas le service domoticz avant? Parce que dans ce cas, dans la sauvegarde, on est pas vraiment sur de l'état de la BDD (n'est-elle pas corrompue...) !?

Re: Backup global Domoticz vers NAS via FTP

Publié : 03 mai 2018, 16:26
par Xeo
Dans mes essai, je n'ai pas arrêté le service, et la sauvegarde n'était pas corrompu, par contre rien ne t'empêche pour te sécurisé de mettre

sudo service domoticz.sh stop # en début du script
et
sudo service domoticz.sh start # a la fin du script

Par contre dans ce cas choisi une hr d’exécution ou Domoticz ne fait pas quelque chose d'autre :)
Cordialement

Re: Backup global Domoticz vers NAS via FTP

Publié : 19 févr. 2019, 10:01
par titis14
Salut,
merci pour ton script, j'utilise Domoticz sur un Debian 8 et j'ai 2 problèmes.

Le premier je n'arrive pas à faire un stop and start de domoticz, en effet si j'ajoute les commandes que tu donne j'ai une erreur. J'ai fait un petit script uniquement avec les commandes stop start pour tester.

Code : Tout sélectionner

[#!/bin/bash
### Arreter du service domoticz
sudo service domoticz.sh stop
sudo service domoticz.sh start 
Quand je lance la commande il me retourne cette erreur:
sebr@debian:~/script$ ./stop.sh
: Aucun fichier ou dossier de ce type
Usage: /etc/init.d/domoticz {start|stop|status|restart|reload}
[ ok ] Starting domoticz.sh (via systemctl): domoticz.service.
Du coup je test avec l'autre commande avec le script:

Code : Tout sélectionner

[#!/bin/bash
### Arreter du service domoticz
sudo /etc/init.d/domoticz.sh stop
sudo /etc/init.d/domoticz.sh start 
Mais il me dis aussi une erreur:
sebr@debian:~/script$ ./stop.sh
: Aucun fichier ou dossier de ce type
Usage: /etc/init.d/domoticz {start|stop|status|restart|reload}
Je ne vois donc pas comment faire pour stoper le service et le relancer à la fin de ton script.

Seconde erreur il ne trouve pas le fichier à supprimer dans le dossier /tmp hors quand je vais dedans il est bien présent.
/bin/rm: impossible de supprimer « /tmp/domoticz_backup_19-02-2019_10h18.tar.gz\r »: Aucun fichier ou dossier de ce type
J'exécute le script depuis un dossier dans le dossier user est-ce pour cette raison ?
Merci pour ton aide.

Re: Backup global Domoticz vers NAS via FTP

Publié : 19 févr. 2019, 18:42
par denis_brasseur
Voici à quoi ressemble mon script de reboot :

Code : Tout sélectionner

#!/bin/sh

sudo service domoticz.sh stop
echo "please standby... (waiting 8 seconds)"
sleep 8
sudo service domoticz.sh start
pour le tester :

Code : Tout sélectionner

pi@raspberrypi:~ $ sudo /home/pi/domoticz/scripts/restart_domoticz
please standby... (waiting 8 seconds)
pi@raspberrypi:~ $
AVant toute chose, teste les commandes depuis la console

Code : Tout sélectionner

sudo service domoticz.sh stop
puis

Code : Tout sélectionner

sudo service domoticz.sh start

Re: Backup global Domoticz vers NAS via FTP

Publié : 19 févr. 2019, 21:02
par titis14
Merci je vais tester demain, mais les commandes seul dans un terminale fonctionne bien.

Re: Backup global Domoticz vers NAS via FTP

Publié : 22 févr. 2019, 14:57
par titis14
denis_brasseur a écrit : 19 févr. 2019, 18:42 Voici à quoi ressemble mon script de reboot :
C'est pareil avec ton script, je comprends pas.
sebr@debian:~/script$ ./stop.sh
: Aucun fichier ou dossier de ce type
Usage: /etc/init.d/domoticz {start|stop|status|restart|reload}
Patienter 8 secondes
sleep: intervalle de temps « 8\r » incorrect
Saisissez « sleep --help » pour plus d'informations.
Usage: /etc/init.d/domoticz {start|stop|status|restart|reload}

Re: Backup global Domoticz vers NAS via FTP

Publié : 23 févr. 2019, 08:22
par denis_brasseur
Quelle méthode utilise tu pour écrire ton fichier sh ?
Tu travaille depuis un éditeur de texte via la console, ou bien écris tu le fichier avant de le copier ?
sleep: intervalle de temps « 8\r » incorrect
Ça pourrait ressembler à un problème d'encodage.

Re: Backup global Domoticz vers NAS via FTP

Publié : 26 févr. 2019, 08:49
par titis14
denis_brasseur a écrit : 23 févr. 2019, 08:22 Quelle méthode utilise tu pour écrire ton fichier sh ?
Tu travaille depuis un éditeur de texte via la console, ou bien écris tu le fichier avant de le copier ?
sleep: intervalle de temps « 8\r » incorrect
Ça pourrait ressembler à un problème d'encodage.
Je fait le script sous NotePad++ et après je l'exécute en commande en allant dans mon dossier user avec "cd" puis je lance le script par ./backup_domoticz.sh

Je l'ai ajouté dans mon crontab mais il ne c'est pas exécuter lundi à 0h15 et pourtant sans le stop et start en manuel il fonctionne.
sebr@Serveur-debian:~$ crontab -l
*/10 * * * * php /home/sebr/Script/capture_cam.php # JOB_ID_3
15 0 * * * 1 /home/sebr/Script/backup_domoticz.sh

Re: Backup global Domoticz vers NAS via FTP

Publié : 26 févr. 2019, 18:52
par denis_brasseur
Xeo a écrit : 01 mai 2018, 20:37 Utiliser votre éditeur favoris pour créer le fichier le script "à nommer comme vous voulez".sh
et ensuite n'oublier pas de faire [sudo chmod +x <votre nom de fichier script.sh>] en étant dans le répertoire ou vous l'avez créer.
sudo nano /etc/crontab -e
Il me semble qu'il faut indiquer le nom de l’utilisateur qui va exécuter la commande, et n'y a t il pas une étoile de trop ?

mm hh jj MMM JJJ tâche utilisateur commande
Soit la définition suivante :

mm : pour les minutes (de 0 à 59).
hh : pour l’heure (de 0 à 23).
jj : pour le numéro du jour du mois (de 1 à 31).
MMM : pour le nom du mois (jan, feb, …)/le numéro du mois (de 1 à 12).
JJJ : pour le nom du jour/le numéro du jour dans la semaine. (0=Dimanche, 1=Lundi, …)
15 0 * * 1 user /home/sebr/Script/backup_domoticz.sh