Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- NAS_IP="192.168.1.xx"
- NAS_MAC="xx:xx:xx:xx:xx:xx"
- username="user"
- password="pass"
- workgroup="WORKGROUP"
- PATH_to_NAS='Stockage\ RAID/Sauvegarde/'
- PATH_to_pi="/home/pi/NAS/"
- LOCAL_TMP_PATH="/usbkey/tmp/"
- USBPATH="/usbkey/"
- TIMESTAMP=`date +%Y%m%d`
- function LogToDomoticz { # Usage is LogToDomoticz "Text"
- message="<font color=\"Black\"><b>[Save]</b> ${1}</font>"
- 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 &
- }
- # Basic checks
- [[ "$(id -u)" != "0" ]] && echo "$(date +%Y-%m-%d\ %H:%M:%S) This script must be run as root" 1>&2 && exit 1
- [[ -z $(which wakeonlan) ]] && echo "wakeonlan is required, consider running \"apt-get install wakeonlan\"" 1>&2 && exit 1
- [[ -z $(which gzip) ]] && echo "gzip is required, consider running \"apt-get install gzip\"" 1>&2 && exit 1
- [[ ! -d $PATH_to_pi ]] && echo "$(date +%Y-%m-%d\ %H:%M:%S) $PATH_to_pi doesn't exit, creating it ..." && mkdir $PATH_to_pi
- LogToDomoticz "Démarrage de la sauvegarde, extinction de Domoticz"
- echo "$(date +%Y-%m-%d\ %H:%M:%S) Stopping Domoticz service"
- service domoticz.sh stop
- echo "$(date +%Y-%m-%d\ %H:%M:%S) Starting copy"
- timeexecSD=`(time dd if=/dev/mmcblk0 of=${LOCAL_TMP_PATH}SDCardBackup-$TIMESTAMP.img) 2>&1 | grep real`
- echo "$(date +%Y-%m-%d\ %H:%M:%S) SD Back-up duration: ${timeexecSD:5}"
- timeexecDB=`(time tar zcf ${LOCAL_TMP_PATH}Domoticz-$TIMESTAMP.tar.gz /home/pi --exclude /home/pi/NAS) 2>&1 | grep real`
- echo "$(date +%Y-%m-%d\ %H:%M:%S) /home/pi Back-up duration: ${timeexecDB:5}"
- echo "$(date +%Y-%m-%d\ %H:%M:%S) Copy is over ! Restarting Domoticz"
- service domoticz.sh start
- sleep 20
- LogToDomoticz "Fin de la sauvegarde SD en ${timeexecSD:5} et de la Database en ${timeexecDB:5}, lancement de la compression"
- cp -f ${LOCAL_TMP_PATH}SDCardBackup-$TIMESTAMP.img ${USBPATH}SDCardBackup-last.img
- timeexecZIP=`(time gzip -1 ${LOCAL_TMP_PATH}SDCardBackup-$TIMESTAMP.img) 2>&1 | grep real`
- echo "$(date +%Y-%m-%d\ %H:%M:%S) ZIP compression duration: ${timeexecZIP:5}"
- LogToDomoticz "Compression effectuée en ${timeexecZIP:5}"
- ping -q -c1 -w1 $NAS_IP &>/dev/null
- if [ ! $? -eq 0 ]; then
- wakeonlan $NAS_MAC
- echo "$(date +%Y-%m-%d\ %H:%M:%S) NAS wake-up in progress, waiting 20s"
- sleep 20
- fi
- # Mount remote directory
- 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
- sleep 1
- # Check it is OK start copy
- if [ -d ${PATH_to_pi}Domoticz-SD ]; then
- cp ${LOCAL_TMP_PATH}Domoticz-$TIMESTAMP.tar.gz ${PATH_to_pi}Domoticz-db/
- cp ${LOCAL_TMP_PATH}SDCardBackup-$TIMESTAMP.img.gz ${PATH_to_pi}Domoticz-SD/
- # Remove old backup files
- count="0"
- for i in `ls -t ${PATH_to_pi}Domoticz-SD`; do
- [[ count -gt 9 ]] && rm ${PATH_to_pi}Domoticz-SD/$i
- count=`expr $count + 1`
- done
- count="0"
- for i in `ls -t ${PATH_to_pi}Domoticz-db`; do
- [[ count -gt 19 ]] && rm ${PATH_to_pi}Domoticz-db/$i
- count=`expr $count + 1`
- done
- # Umount directory
- umount $PATH_to_pi
- rm ${LOCAL_TMP_PATH}*
- echo "$(date +%Y-%m-%d\ %H:%M:%S) Copy to NAS successfully achieved"
- LogToDomoticz "Succès de la sauvegarde sur le NAS"
- else
- echo "$(date +%Y-%m-%d\ %H:%M:%S) Copy to NAS failed"
- LogToDomoticz "Erreur de la sauvegarde, pas de copie sur le réseau"
- fi
- exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement