Advertisement
Guest User

rsync-4

a guest
Jan 17th, 2022
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.69 KB | None | 0 0
  1. #/bin/bash
  2. #=====================================================
  3. # customize SRC, DSTDIR, HTMLLOGDIR, PREFIX:
  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-* 2> /dev/null | 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. if test ! -d $HTMLLOGDIR
  47. then
  48. mkdir $HTMLLOGDIR
  49. fi
  50.  
  51. #=====================================================
  52. # prüfen, ob rsync mit --link-dest laufen soll
  53. #=====================================================
  54. if test -z "$PREV"
  55. then
  56. HARDLINK=""
  57. else
  58. HARDLINK=--link-dest=$PREV
  59. fi
  60.  
  61. #=====================================================
  62. # Kopf der Logdate erzeugen
  63. #=====================================================
  64. CURRENTTIME=`date -u`
  65. echo "================================================" > $LOG
  66. echo "Started at " $CURRENTTIME >> $LOG
  67. echo "================================================" >> $LOG
  68. echo "Fetching from " $SRC >> $LOG
  69. echo "Storing at " $DST >> $LOG
  70. echo "Hardlinking from " $PREV >> $LOG
  71. echo "================================================" >> $LOG
  72.  
  73. #=====================================================
  74. # rsync aufrufen und bei Fehler neu starten
  75. # die Sicherung wird hier erstmal in ein temporäres
  76. # Verzeichnis geschrieben
  77. #=====================================================
  78. while ! \
  79. rsync -av $HARDLINK $SRC $BUS >> $LOG 2>&1
  80. do
  81. sleep 60
  82. done
  83.  
  84. #=====================================================
  85. # Sicherungsverzechnis in endgültigen Namen umbenennen
  86. # und mit touch auf die aktuelle Uhrzeit setzen
  87. #=====================================================
  88. mv $BUS $DST
  89. touch $DST
  90.  
  91. #=====================================================
  92. # Ende der Logdate erzeugen
  93. #=====================================================
  94. CURRENTTIME=`date -u`
  95. echo "================================================" >> $LOG
  96. echo "Finished at " $CURRENTTIME >> $LOG
  97. echo "================================================" >> $LOG
  98.  
  99. #=====================================================
  100. # Logdate HTML umsetzen, damit man sie leichter in
  101. # einem Browser lesen kann.
  102. #=====================================================
  103. awk '
  104. BEGIN {
  105. print "<!DOCTYPE html>"
  106. print "<html>"
  107. print " <head>"
  108. print " <meta charset="UTF-8">"
  109. print " <title>TimAchine Backup Log</title>"
  110. print " </head>"
  111. print " <body>"
  112. }
  113. {
  114. print " "$0"<br>"
  115. }
  116. END{
  117. print " </body>"
  118. print "</html>"
  119. }' $LOG > $HTMLLOG
  120.  
  121. #=====================================================
  122. # originale Logdate komprimieren, um Platz zu sparen
  123. #=====================================================
  124. gzip -9 $LOG
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement