Advertisement
Damien-V

Domoticz Raspberry pi SD card Back up

Aug 19th, 2017
10,999
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.44 KB | None | 0 0
  1. #!/bin/bash
  2. NAS_IP="192.168.1.xx"
  3. NAS_MAC="xx:xx:xx:xx:xx:xx"
  4. username="user"
  5. password="pass"
  6. workgroup="WORKGROUP"
  7. PATH_to_NAS='Stockage\ RAID/Sauvegarde/'
  8. PATH_to_pi="/home/pi/NAS/"
  9. LOCAL_TMP_PATH="/usbkey/tmp/"
  10. USBPATH="/usbkey/"
  11. TIMESTAMP=`date +%Y%m%d`
  12.  
  13. function LogToDomoticz { # Usage is LogToDomoticz "Text"
  14.     message="<font color=\"Black\"><b>[Save]</b> ${1}</font>"
  15.     curl -Gs 'http://192.168.1.18:8080/json.htm' --data-urlencode "type=command" --data-urlencode "param=addlogmessage" --data-urlencode "message=${0##*/} ${message}" --max-time 15 &>/dev/null &
  16. }
  17.  
  18.  
  19. # Basic checks
  20.  
  21. [[ "$(id -u)" != "0" ]] && echo "$(date +%Y-%m-%d\ %H:%M:%S) This script must be run as root" 1>&2 && exit 1
  22. [[ -z $(which wakeonlan) ]] && echo "wakeonlan is required, consider running \"apt-get install wakeonlan\"" 1>&2 && exit 1
  23. [[ -z $(which gzip) ]] && echo "gzip is required, consider running \"apt-get install gzip\"" 1>&2 && exit 1
  24. [[ ! -d $PATH_to_pi ]] && echo "$(date +%Y-%m-%d\ %H:%M:%S) $PATH_to_pi doesn't exit, creating it ..." && mkdir $PATH_to_pi
  25.  
  26. LogToDomoticz "Démarrage de la sauvegarde, extinction de Domoticz"
  27.  
  28. echo "$(date +%Y-%m-%d\ %H:%M:%S) Stopping Domoticz service"
  29.  
  30. service domoticz.sh stop
  31.  
  32. echo "$(date +%Y-%m-%d\ %H:%M:%S) Starting copy"
  33. timeexecSD=`(time dd if=/dev/mmcblk0 of=${LOCAL_TMP_PATH}SDCardBackup-$TIMESTAMP.img) 2>&1 | grep real`
  34.  
  35. echo "$(date +%Y-%m-%d\ %H:%M:%S) SD Back-up duration: ${timeexecSD:5}"
  36. timeexecDB=`(time tar zcf ${LOCAL_TMP_PATH}Domoticz-$TIMESTAMP.tar.gz /home/pi --exclude /home/pi/NAS) 2>&1 | grep real`
  37. echo "$(date +%Y-%m-%d\ %H:%M:%S) /home/pi Back-up duration: ${timeexecDB:5}"
  38.    
  39. echo "$(date +%Y-%m-%d\ %H:%M:%S) Copy is over ! Restarting Domoticz"
  40. service domoticz.sh start
  41.  
  42. sleep 20
  43. LogToDomoticz "Fin de la sauvegarde SD en ${timeexecSD:5} et de la Database en ${timeexecDB:5}, lancement de la compression"
  44.  
  45. cp -f ${LOCAL_TMP_PATH}SDCardBackup-$TIMESTAMP.img ${USBPATH}SDCardBackup-last.img 
  46. timeexecZIP=`(time gzip -1 ${LOCAL_TMP_PATH}SDCardBackup-$TIMESTAMP.img) 2>&1 | grep real`
  47. echo "$(date +%Y-%m-%d\ %H:%M:%S) ZIP compression duration: ${timeexecZIP:5}"
  48. LogToDomoticz "Compression effectuée en ${timeexecZIP:5}"
  49.  
  50. ping -q -c1 -w1 $NAS_IP &>/dev/null
  51. if  [ ! $? -eq 0 ]; then
  52.     wakeonlan $NAS_MAC
  53.     echo "$(date +%Y-%m-%d\ %H:%M:%S) NAS wake-up in progress, waiting 20s"
  54.     sleep 20
  55. fi
  56.  
  57. # Mount remote directory
  58.  
  59. mount -t cifs -o username=$username,password=$password,workgroup=$workgroup,rw,iocharset=utf8,file_mode=0777,dir_mode=0777 //$NAS_IP/Stockage\ RAID/Sauvegarde/ $PATH_to_pi
  60. sleep 1
  61.  
  62. # Check it is OK start copy
  63.  
  64. if  [ -d ${PATH_to_pi}Domoticz-SD ]; then
  65.     cp ${LOCAL_TMP_PATH}Domoticz-$TIMESTAMP.tar.gz ${PATH_to_pi}Domoticz-db/
  66.     cp ${LOCAL_TMP_PATH}SDCardBackup-$TIMESTAMP.img.gz ${PATH_to_pi}Domoticz-SD/
  67.  
  68.     # Remove old backup files
  69.  
  70.     count="0"
  71.     for i in `ls -t ${PATH_to_pi}Domoticz-SD`; do
  72.         [[ count -gt 9 ]] && rm ${PATH_to_pi}Domoticz-SD/$i
  73.         count=`expr $count + 1`
  74.     done
  75.  
  76.     count="0"
  77.     for i in `ls -t ${PATH_to_pi}Domoticz-db`; do
  78.         [[ count -gt 19 ]] && rm ${PATH_to_pi}Domoticz-db/$i
  79.         count=`expr $count + 1`
  80.     done
  81.    
  82.     # Umount directory
  83.     umount $PATH_to_pi
  84.     rm ${LOCAL_TMP_PATH}*
  85.     echo "$(date +%Y-%m-%d\ %H:%M:%S) Copy to NAS successfully achieved"   
  86.     LogToDomoticz "Succès de la sauvegarde sur le NAS"
  87. else
  88.     echo "$(date +%Y-%m-%d\ %H:%M:%S) Copy to NAS failed"      
  89.     LogToDomoticz "Erreur de la sauvegarde, pas de copie sur le réseau"
  90. fi
  91.  
  92. exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement