SHARE
TWEET

sincro3

mirkop1988 Sep 8th, 2011 71 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
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top