Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- ###########################################
- # Backup a Raspberry Pi to CIFS share
- ###########################################
- # autor : Neives
- VERSION="2017.12.13"
- # licence type : Creative Commons Attribution-NoDerivatives 4.0 (International)
- # licence info : http://creativecommons.org/licenses/by-nd/4.0/
- ###########################################
- ### VARIAVEIS ###
- DESTINO="//10.0.0.245/NAS/Backup_HA"
- DESTINOMNT="/mnt/cifs/synology"
- DESTINONOME="CIFS NAS Synology"
- USERNAME="admin"
- PASSWORD="n2311984"
- ### FIM DAS VARIAVEIS ###
- # __________________ NAO MODIFICAR NADA ABAIXO DESTA LINHA __________________ #
- DATE=$(date +%Y-%m-%d_%Hh%M)
- TAR=$(hostname -s)"-${DATE}.tar.gz"
- ipserver=`ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | cut -f1 -d'/'`
- locpath=`dirname "${BASH_SOURCE[0]}"` # caminho do script
- scriptpath=`basename $0` # script.sh
- bold=$(tput bold)
- underline=$(tput sgr 0 1)
- reset=$(tput sgr0)
- rouge=$( tput setaf 1)
- vert=$( tput setaf 2)
- jaune=$( tput setaf 3)
- bleu=$( tput setaf 4)
- violet=$( tput setaf 5)
- cyan=$( tput setaf 6)
- gris=$( tput setaf 7)
- # Funcoes
- shw_norm () { echo -en "${bold}$(tput setaf 9)${@}${reset}"; }
- shw_info () { echo -en "${bold}${cyan}${@}${reset}"; }
- shw_OK () { echo -en "${bold}${vert}OK!${@}${reset}"; }
- shw_warn () { echo -en "${bold}${violet}${@}${reset}"; }
- shw_err () { echo -en "${bold}${rouge}${@}${reset}"; }
- gris() { echo -en "${bold}${gris}${@}${reset}"; }
- header() { echo -e "${bold}${jaune}$*${reset}"; }
- headerU() { echo -e "${underline}${bold}${jaune}$*${reset}"; }
- # Inicio do script
- clear && echo -e "\n\n"
- header "****************************************************************************"
- header "*** bm-PiBackup by @xhark - Creative Commons BY-ND 4.0 (v${VERSION}) ***"
- headerU "****************************************************************************"
- shw_info "\n\n=== Arranque do backup Raspberry Pi em $(date +'%d/%m/%Y a %Hh%M'):\n\n"
- # Verificacao de execucao como 'root'
- shw_norm "\t::: A executar como root... "
- if [[ $EUID -ne 0 ]]; then
- sudo "$0" "$@" || (shw_err "Este script deve ser executado com permissoes 'root'. A parar o script.\n" ; exit 1)
- else
- shw_OK
- fi
- # Verificacao do destino
- shw_norm "\n\t::: Verificacao do destino ($DESTINONOME)... "
- if grep -qs $DESTINOMNT /proc/mounts; then
- shw_OK
- else
- # Mount drive de rede se não existir
- [ -d $DESTINOMNT ] || mkdir -p $DESTINOMNT
- # Ligacao ao DESTINO Syno
- mount.cifs $DESTINO $DESTINOMNT -o user=${USERNAME},pass="${PASSWORD}" && shw_OK
- if [[ $? -ne 0 ]]; then
- shw_err "\n\t ERRO: Ligação impossivel $DESTINO -- A parar o script \n"
- exit 1
- fi
- fi
- # Listagem do backup cron
- for user in $(cut -f1 -d: /etc/passwd); do echo -e "\n\n==> $user:" ; crontab -u $user -l ; done > /tmp/crontab 2>&1
- cd $DESTINOMNT || (shw_err "\n\t ERRO: cd impossivel"; exit 1)
- # criacao do arquivo
- shw_norm "\n\t::: Criacao do arquivo ${TAR}... "
- # Listagem de pastas para efectuar backup. Uma linha por ficheiro/pasta.
- tar zcf "$TAR" \
- /boot/*.txt \
- /etc/cron.daily \
- /etc/cron.hourly \
- /etc/cron.monthly \
- /etc/fstab \
- /etc/init.d \
- /etc/network/interfaces \
- /etc/modules \
- /etc/modprobe.d/ \
- /etc/ssh/sshd_config \
- /etc/udev \
- /etc/wpa_supplicant \
- /home/pi \
- /home/homeassistant \
- /root/*.sh* \
- /root/.bash* \
- /root/bash_xhark \
- /var/www \
- /tmp/crontab \
- --exclude '/home/pi/.node-*' \
- > /dev/null 2>&1
- tarsize=$(du -sh "$TAR")
- if [[ $? -ne 0 ]]; then
- shw_err "\n\t ERRO: Impossivel criar ficheiro $TAR \n"
- umount -l $DESTINOMNT && shw_warn "\n\t Desligar DESTINO e parar o script!"
- exit 1
- fi
- shw_OK
- # Desligar drive rede
- shw_norm "\n\t::: Desligar DESTINO... "
- if umount -l $DESTINOMNT; then
- shw_OK
- else
- shw_err "IMPOSSIVEL!"
- fi
- gris "\n\n\t=> Tamanho do backup: $tarsize"
- shw_info "\n\n=== Fim do Backup de $(date +'%d/%m/%Y as %Hh%M')"
- shw_info "\n=== Script executado a partir de ${ipserver}:${locpath}/${scriptpath}\n\n"
- # Limpeza de ficheiros temporarios
- rm -f /tmp/crontab
- #Criacao de ficheiro com data
- cd /home/pi/backup/
- rm last_backup_date.txt
- echo $(date +'%d-%m-%Y, %H:%M') > last_backup_date.txt
- #rm last_backup_hour.txt
- #echo $(date +%H:%M) > last_backup_hour.txt
- #rm last_backup_size.txt
- #echo "$tarsize" > last_backup_size.txt
- exit 0
Add Comment
Please, Sign In to add comment