Dateibasierte RSync-Datensicherung auf externen Datenträger oder RSync kompatiblen Server/Suchscriptvarianten: Unterschied zwischen den Versionen

Aus
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 40: Zeile 40:
   fi
   fi
   # Durchsuche volumeSATA
   # Durchsuche volumeSATA
   if [ -f /volumeSATA/usbshare/$SCRIPT ]; then
   if [ -f /volumeSATA/satashare/$SCRIPT ]; then
     sh /volumeSATA/usbshare/$SCRIPT
     sh /volumeSATA/satashare/$SCRIPT
   fi
   fi
done
done

Version vom 19. Mai 2016, 18:24 Uhr

Variante 1: Scripte anhand ihrer vollständigen Script-Dateinamen auf extern angeschlossenen Datenträgern suchen und ausführen

#!/bin/sh

# Kurze Funktionsbeschreibung
# ------------------------------------------------------------------------
# Das Script kann manuell oder automatisiert über den Aufgabenplaner     |
# als "root" ausgeführt werden, je nachdem ob der externe Datenträger    |
# temporär oder permanent mit der DS verbunden wird.                     |
# Nach dem Start des Scriptes werden alle USB- sowie SATA Anschlüsse der |
# DS nach extern angeschlossenen Datenträgern durchsucht um im jeweiligen|
# Wurzelverzeichnis ein oder mehrere abgelegte Scripte zu lokalisieren.  |
# Es besteht also die Möglichkeit mehrere Scripte auszuführen, die dazu  |
# noch auf unterschiedlichen Datenträgern liegen. Dabei ist es auch nicht|
# zwingend erforderlich, das alle Script permanent verfügbar sein müssen.|
# Wird ein Script oder mehrere Scripte gefunden, werden diese            |
# ausgeführt und somit das eigentliche Backupsystem angestoßen.          |
# Im Vorfeld muß natürlich noch das rsync.sh Script den jeweiligen       |
# Bedürfnissen angepasst werden.                                         |
# ------------------------------------------------------------------------
SCRIPTNAME="Diskstation-Backup.sh"

# ------------------------------------------------------------------------
# Ab hier bitte nichts mehr ändern                                       |
# ------------------------------------------------------------------------
for SCRIPT in $SCRIPTNAME
  do  
  # Durchsuche volumeUSB1
  if [ -f /volumeUSB1/usbshare/$SCRIPT ]; then
    sh /volumeUSB1/usbshare/$SCRIPT
  fi
  # Durchsuche volumeUSB2
  if [ -f /volumeUSB2/usbshare/$SCRIPT ]; then
    sh /volumeUSB2/usbshare/$SCRIPT
  fi
  # Durchsuche volumeUSB3
  if [ -f /volumeUSB3/usbshare/$SCRIPT ]; then
    sh /volumeUSB3/usbshare/$SCRIPT
  fi
  # Durchsuche volumeSATA
  if [ -f /volumeSATA/satashare/$SCRIPT ]; then
    sh /volumeSATA/satashare/$SCRIPT
  fi
done




Variante 2: Scripte anhand einer Zeichenkette auf extern angeschlossenen Datenträgern sowie auf der Diskstation selber suchen, ausschließen oder ausführen


#!/bin/sh

# Zeichenkette auf der DS sowie angeschlossenen Datenträgern suchen
# ------------------------------------------------------------------------
# Hierbei werden nicht nur extern angeschlossene USB- und SATA           |
# Datenträger, sondern auch alle Volume innerhalb der Diskstation        |
#                                                                        |
# Es ist nicht erforderlich, den kompletten Script-Dateinamen anzugeben. |
# Es reicht die Eingabe einer Zeichenkette, die in jedem auszuführenden  |
# Script-Dateinamen enthalten sein muss.                                 |
# Beispiele für die Zeichenkette: "start" = start_Backup_Filme.sh        |
# start_Filme.sh oder auch _start_Filme_sichern.sh                       |
#                                                                        |
# Soll eine Scriptausführung bei einer bestimmten Zeichenkette verhindert|
# werden, weil sich ein Script z.B. noch im Testbetrieb befindet, kann   |
# dies über die Variable EXCLUDE_STRING gesteuert werden.                | 
# Beispiel: start_Backup_Filme.sh wird ausgeführt test_Backup_Filme.sh   |
# jedoch nicht.                                                          |
#-------------------------------------------------------------------------
SCRIPT_STRING="start"
EXCLUDE_STRING="test"


if [ "$EXCLUDE_STRING" ]
  then
    find /volume*/ -type f -name "*$SCRIPT_STRING*.sh" ! -name "*$EXCLUDE_STRING*" -exec sh {} \;
  else
    find /volume*/ -type f -name "*$SCRIPT_STRING*.sh" -exec sh {} \;
fi