NoPaste

rsync Skript

von MSfree

SNIPPET_TEXT:
  1. #/bin/bash
  2. #=====================================================
  3. # anpassen:
  4. #=====================================================
  5. #  SRC = Hostname und Freigabename der Quelle
  6. SRC=quellrechner::pub
  7.  
  8. #  DSTDIR = Vereichnis, unter dem die Backups auf dem Ziel angelegt werden
  9. DSTDIR=/volume1/backup
  10.  
  11. #  HTMLLOGDIR = Vereichnis, unter dem die Logs auf dem Ziel angelegt werden
  12. HTMLLOGDIR=/volume1/RSyncLog
  13.  
  14. #  PREFIX: "Vorsilbe", die den täglichen Unterverzeichnisnamen vorgehängt wird
  15. PREFIX=daily
  16.  
  17. #=====================================================
  18. # automatische Variablen, keine Anpssung nötig
  19. #=====================================================
  20. # aktuelles Datum
  21. DATE=`date +%d.%m.%y`
  22. # Zielverzeichnis
  23. DST=$DSTDIR/$PREFIX-$DATE
  24. # temporäres Verzeichnis
  25. BUS=$DSTDIR/.running-$DATE
  26. # Logdateiname
  27. LOG=$DSTDIR/log/log-$DATE.log
  28. # HTML-Logdatei
  29. HTMLLOG=$HTMLLOGDIR/log-$DATE.html
  30. # gestriges Verzeichnis
  31. PREV=`ls -rtd $DSTDIR/$PREFIX-* | tail -1`
  32.  
  33. #=====================================================
  34. # anlegen der Ausgabeverzeichnisse
  35. #=====================================================
  36. if test ! -d $DSTDIR
  37. then
  38. mkdir $DSTDIR
  39. fi
  40.  
  41. if test ! -d $DSTDIR/log
  42. then
  43. mkdir $DSTDIR/log
  44. fi
  45.  
  46. #=====================================================
  47. # Kopf der Logdate erzeugen
  48. #=====================================================
  49. CURRENTTIME=`date -u`
  50. echo "================================================" > $LOG
  51. echo "Started at " $CURRENTTIME >> $LOG
  52. echo "================================================" >> $LOG
  53. echo "Fetching from " $SRC >> $LOG
  54. echo "Storing at " $DST >> $LOG
  55. echo "Hardlinking from " $PREV >> $LOG
  56. echo "================================================" >> $LOG
  57.  
  58. #=====================================================
  59. # rsync aufrufen und bei Fehler neu starten
  60. # die Sicherung wird hier erstmal in ein temporäres
  61. # Verzeichnis geschrieben
  62. #=====================================================
  63. while ! \
  64. rsync -av --link-dest=$PREV $SRC $BUS >> $LOG 2>&1
  65. do
  66. done
  67.  
  68. #=====================================================
  69. # Sicherungsverzechnis in endgültigen Namen umbenennen
  70. # und mit touch auf die aktuelle Uhrzeit setzen
  71. #=====================================================
  72. mv $BUS $DST
  73. touch $DST
  74.  
  75. #=====================================================
  76. # Ende der Logdate erzeugen
  77. #=====================================================
  78. CURRENTTIME=`date -u`
  79. echo "================================================" >> $LOG
  80. echo "Finished at " $CURRENTTIME >> $LOG
  81. echo "================================================" >> $LOG
  82.  
  83. #=====================================================
  84. # Logdate HTML umsetzen, damit man sie leichter in
  85. # einem Browser lesen kann.
  86. #=====================================================
  87. awk '
  88. BEGIN {
  89. print "<!DOCTYPE html>"
  90. print "<html>"
  91. print " <head>"
  92. print " <meta charset="UTF-8">"
  93. print " <title>TimAchine Backup Log</title>"
  94. print " </head>"
  95. print " <body>"
  96. }
  97. {
  98. print " "$0"<br>"
  99. }
  100. END{
  101. print " </body>"
  102. print "</html>"
  103. }' $LOG > $HTMLLOG
  104.  
  105. #=====================================================
  106. # originale Logdate komprimieren, um Platz zu sparen
  107. #=====================================================
  108. gzip -9 $LOG

Quellcode

Hier kannst du den Code kopieren und ihn in deinen bevorzugten Editor einfügen. PASTEBIN_DOWNLOAD_SNIPPET_EXPLAIN