mirkop1988

sincro3

Sep 8th, 2011
80
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #!/bin/bash
  2.  
  3. # Metodo di connessione
  4. # NOTA DA RIMUOVERE: per ora è e sarà disponibile soltanto ssh. Ma questa variabile verrà comunque utilizzata per le verifiche del caso, semmai successivamente si volesse andare oltre ssh...
  5. METHOD="ssh"
  6. # Server per la connessione
  7. SERVER="localhost"
  8. # Utente per la connessione ssh
  9. # NOTA DA RIMUOVERE: qui (o da qualche altra parte) andrebbe spiegato che prima di lanciare lo script, bisognerebbe sincerarsi che l'utente impostato abbia i permessi per lavorare sulla directory remota (successivamente indicata come RPATH) o comunque integrare nello script un controllo dei permessi sulla stessa
  10. USER="mirko"
  11. # Password per la connessione ssh
  12. # NOTA DA RIMUOVERE: qui (o da qualche altra parte) andrebbe correttamente spiegato che questa variabile può essere utilizzata per comodità, ma è che caldamente sconsigliata. Al contrario, sarebbe meglio lasciarla vuota e digitare manualmente la password o (ancora meglio) impostare l'autenticazione tramite chiave
  13. PWD="beta11"
  14. # Porta per la connessione ssh
  15. PORT="22"
  16. # Directory
  17. RPATH="backup"
  18. # Opzioni per la sincronizzazione di unison
  19. # -auto     automatically accept default (nonconflicting) actions
  20. # -group    synchronize group attributes
  21. # -maxerrors n  maximum number of errors before a directory transfer is aborted
  22. # -owner    synchronize owner
  23. # -retry n  re-try failed synchronizations N times (text ui only)
  24. # -times    synchronize modification times
  25. BOPTIONS="-auto -group -retry 3 -owner -times"
  26.  
  27. #Colori
  28. RED="\e[1;31m" #Rosso
  29. GREEN="\e[1;32m" #Verde
  30. YELLOW="\e[1;33m" #Giallo
  31. RESET="\e[0m" #Reset!
  32.  
  33. # Crea la directory e il file di log
  34. mkdir -p $HOME/.rsyncremote
  35. LOGFILE=$HOME/.rsyncremote/"`date +%d%m%y%H%M%S`.log"
  36. touch $LOGFILE
  37. chmod 744 $LOGFILE
  38.  
  39. printScreen() { echo -e $1$RESET; }  
  40.  
  41. # Verifica la disponibilità di unison
  42. if ! unison -version &> /dev/null; then
  43.     printScreen $RED"Errore: "$RESET"unison non è disponibile";
  44.     exit 1
  45. fi
  46.  
  47. # Verifica la disponibilità di ssh
  48. if [[ $METHOD -eq 'ssh' && `! which ssh &> /dev/null` ]]; then
  49.     printScreen $RED"Errore: "$RESET"ssh non è disponibile";
  50.     exit 1
  51. fi
  52.  
  53. # Verifica la presenza del file source-files.list
  54. if [[ ! -e "source-files.list" ]]; then
  55.     printScreen $RED"Errore: "$RESET"il source-files.list non è presente";
  56.     exit 1
  57. # Se il file esiste...
  58. else
  59.     # Instanzia la variabile e legge il file
  60.     LPATH=" "
  61.     while read line
  62.     do
  63.         # Accoda alla variabile ogni path indicata nel file
  64.         LPATH=$LPATH" -path "${line};
  65.     done < source-files.list
  66. fi
  67.  
  68. # Verifica la disponibilità del server
  69. if ! ping -c 1 $SERVER &> /dev/null; then
  70.     printScreen $RED"Errore: "$RESET"il server non è raggiungibile";
  71.     exit 1
  72. fi
  73.  
  74. # Verifica la disponibilità della connessione ssh
  75. if [[ $METHOD -eq 'ssh' && `! ssh -p $PORT $USER@$SERVER unison -version &> /dev/null` ]]; then
  76.     printScreen $RED"Errore: "$RESET"la connessione ssh non è disponibile. Verifica i parametri di connessione nel file di configurazione";
  77.     exit 1
  78. fi
  79.        
  80. #Sincronizza
  81. unison $HOME ssh://$USER@$SERVER:$PORT/$RPATH $LPATH -logfile $LOGFILE $boptions
RAW Paste Data