Advertisement
rodolforizzo76

raspi_backup.sh

Jun 22nd, 2018
649
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.65 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. # Descrizione:
  4. # Questo semplice script crea un backup di immagine sd locale di un raspberry pi remoto in una cartella locale
  5. # usando ssh, dd e la pipe unix
  6.  
  7. # Requisiti:
  8.  
  9. # - ssh e sshpass
  10. # - notify-osd
  11.  
  12. RASPBERRY_USER=pi
  13. #sostituire con il nome del tuo utente sul Raspberry Pi
  14. #lo script presume che questo utente sia nel file sudoers del Raspberry
  15.  
  16. RASPBERRY_PASS=tua_password
  17. #sostituire con la tua password sul Raspberry Pi
  18.  
  19. RASPBERRY_ADDR=192.168.1.147
  20. #sostituire con l'indirizzo IP del raspberry (o con il nome dell'host se si sta utilizzando un server DNS dinamico)
  21.  
  22. BACKUP_FOLDER=/home/utente/cartella_backup/
  23. #sostituire con il percorso alla tua cartella di destinazione del backup locale
  24.  
  25. BACKUP_NAME=$(date +"%Y%m%d_%H%M")
  26. #nome del file immagine
  27.  
  28. BACKUP_IMAGE=/home/utente/cartella_backup/$BACKUP_NAME.img
  29. #percorso assoluto dell'immagine generata
  30. # sostituire la parte "/home/utente/cartella_backup/" con il percorso usato per la variabile BACKUP_FOLDER
  31.  
  32. #Notifica all'utente che lo script sta iniziando, utile se si esegue questo script con cron
  33. notify-send "RASPBERRY BACKUP: Avvio del processo di backup, raspberry pi: $RASPBERRY_ADDR"
  34.  
  35. # Prova a pingare il lampone, se non riesce a trovarlo, esce subito
  36. ping -c 3 $RASPBERRY_ADDR > /dev/null 2> /dev/null
  37.  
  38. if [ $? -ne 0 ]; then
  39. notify-send "RASPBERRY BACKUP: Non posso fare il ping al lampone: $RASPBERRY_ADDR esco"
  40. exit 1
  41. fi
  42.  
  43. # Se la cartella di destinazione non esiste, la crea
  44. if [ ! -d "$BACKUP_FOLDER" ]; then
  45. mkdir $BACKUP_FOLDER
  46. fi
  47.  
  48. notify-send "RASPBERRY BACKUP: Avvio del trasferimento SSH, non spegnere il PC!!!"
  49.  
  50. #Questo apre una connessione ssh con il raspberry
  51. #l'uso di dd e del pipe unix crea un'immagine del dispositivo locale
  52. sshpass -p $RASPBERRY_PASS ssh $RASPBERRY_USER@$RASPBERRY_ADDR 'echo $RASPBERRY_PASS | sudo -S dd if=/dev/mmcblk0' | dd of=$BACKUP_IMAGE
  53.  
  54. # Controlla se è tutto ok
  55. if [ $? -ne 0 ]; then
  56. notify-send "RASPBERRY BACKUP: Qualcosa è andato storto con la trasmissione ssh, i file temporanei sono stati cancellati, riprova!"
  57. rm $BACKUP_IMAGE
  58. exit 1
  59. fi
  60.  
  61. notify-send "RASPBERRY BACKUP: Trasferimento completato, compressione dell'immagine..."
  62.  
  63. #Compressione dell'immagine
  64. tar -pczf $BACKUP_FOLDER/$BACKUP_NAME.tar.gz $BACKUP_IMAGE
  65.  
  66. #Controlla il risultato della compressione
  67. #se qualcosa è andato storto restituisce un messaggio
  68. if [ $? -ne 0 ]; then
  69. notify-send "RASPBERRY BACKUP: Backup completato, MA non è stato possibile comprimere l'immagine"
  70. exit 1
  71. fi
  72.  
  73. #Elimina i file non compressi
  74. rm $BACKUP_IMAGE
  75. notify-send "RASPBERRY BACKUP: Backup completato! Il backup è stato salvato in $BACKUP_FOLDER"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement