Ergebnis 1 bis 4 von 4
  1. #1

    Standard HowTo: 3rdparty Apps in DSM Sicherung & Replication integrieren

    Mit Einführung von DSM 5.1 hat Synology das Feature "Backup und Restore" für Pakete integriert. Damit kann jedes Paket so präpariert werden, dass es in der Liste der Anwendungen für Sicherung & Replication als Auswahl erscheint.
    Ich zeige euch hier, wie man mit wenig Aufwand sein Paket um diese Funktion erweitert, um z.B. die Konfigurationsdateien seiner Anwendung mittels DSM Sicherung & Replication zu Sichern und Wiederherzustellen.

    Voraussetzungen
    • Euer gewünschtes Paket
    • Erfahrungen mit der Erstellung von Scripten auf der Shell

    Vorbereitungen
    • meldet euch per Telnet oder SSH auf eurer Diskstation als root mit dem Passwort vom admin an
    • wechselt in das Verzeichnis "/var/packages"

    Damit wir das Script nicht von Grund auf neu erstellten müssen, besorgen wir uns von einer bestehenden Anwendung das Verzeichnis "backup" aus dem Verzeichnis "scripts". Noch nicht alle Anwendungen benutzen dieses Feature, deshalb enthält auch nicht jedes Paket das Verzeichnis "scripts/backup". Solltet ihr keine Anwendung mit diesem Feature installiert haben, dann empfehle ich den "DDNS Updater 2" als gute Ausgangsbasis. Installiert euch das Paket, aber nicht Starten, und wechselt in das Verzeichnis "ddnsupdater2/scripts". Nun kopiert das Verzeichnis "backup" in das script Verzeichnis eurer gewünschten Anwendung. Die Anwendung "DDNS Updater 2" konnt ihr bei Bedarf wieder deinstallieren.

    Inhalt des Verzeichnisses "backup"
    Die folgenden Dateien müssen sich im Verzeichnis befinden, damit das Feature überhaupt funktioniert, andernfalls erscheint die Anwendung nicht unter Applikationen in Sicherung & Replication.
    • export - hier kommen die Befehle für das Backup rein
    • import - hier kommen die Befehle für das Restore rein
    • version - Textdatei mit Versionsnummer

    Optionale Dateien
    • can_export - kann für eine Prüfung der Vorraussetzungen für das Aktivieren des Backup's benutzt werden (z.B. Versionsprüfung)
    • can_import - kann für eine Prüfung der Vorraussetzungen für das Aktivieren des Restore's benutzt werden (z.B. Versionsprüfung)
    • info - Konfigurationsdatei im JSON-Format

    jsoncmd und jq
    Zum Parsen von JSON-Daten im CLI benutzt Synology das CMDline Tool jq. jq ist wie sed, nur eben für JSON-Daten. Einige Funktionen, welche das Arbeiten mit jq ein wenig erleichtern, hat Synology in der Datei "jsoncmd" zusammengefasst. jq kann auch direkt benutzt werden, es befindet sich in /bin.

    Aufbau der Dateien
    export
    Beim Start des Scriptes wird der Inhalt von "/usr/syno/bin/jsoncmd (siehe jsoncmd und jq)" mit dem Befehl "source" (kurz .) eingelesen und evaluiert. Im Anschluss wird der Variable "DDUCONF" der Pfad der Anwendung (in diesem Fall "/var/packages/ddnsupdater2") plus /etc zugewiesen, dort befinden sich die Konfigurationsdateien vom DDNS Updater 2. Jetzt folgt eine Stelle aus einer Synology Anwendung, von der ich diese Infos für das HowTo bezogen habe. Es wird der Zielpfad für das Backup ermittelt und der Variable "EXPPATH" zugewiesen. "SYNOPKG_BKP_INPUT" ist eine Synology-interne Variable, die uns nicht weiter interessieren soll. Dieser Scriptschnippsel, also von "EXPPATH bis fi", war in jeder "Backup/Restore-aktivierten" Anwendung vorhanden, weshalb ich ihn direkt übernommen habe.
    Nun folgt noch eine Prüfung, ob das Konfigurationsverzeichnis überhaupt existiert und der eigentliche Kopierbefehl. Am Schluss werden noch JSON-Daten an die Backup-Anwendung gesendet, bzw. in einer Variable abgelegt (Block von jout_begin bis jout_end) und das Script mit exit 0 beendet.
    Code:
    . /usr/syno/bin/jsoncmd
    
    DDUCONF="${SYNOPKG_PKGPATH}/etc"
    
    EXPPATH=$(jget "${SYNOPKG_BKP_INPUT}" ".temp_path")
    if [ $? -ne 0 ]; then
        jerr "Failed to get export path"
        exit 1
    fi
    
    if [ -d "${DDUCONF}" ]; then
        /bin/cp -rf ${DDUCONF}/* ${EXPPATH}
    fi
    
    jout_begin
    joutstr "app_data_version" "1.0"
    jout_end
    exit 0
    import
    Der Start für den Import entspricht im Grossteil dem export-Script, nur das diesmal der Importpfad ermittelt wird, welches aber mit dem Verzeichnis des export-Scripts identisch ist (Exportziel = Importquelle).
    Code:
    . /usr/syno/bin/jsoncmd
    
    DDUCONF="${SYNOPKG_PKGPATH}/etc"
    
    IMPPATH=$(jget "${SYNOPKG_BKP_INPUT}" ".temp_path")
    if [ $? -ne 0 ]; then
        jerr "Failed to get import path"
        exit 1
    fi
    
    if [ -d "${IMPPATH}" ]; then
        /bin/cp -rf ${IMPPATH}/* ${DDUCONF}
    fi
    
    jout_begin
    joutstr "app_data_version" "1.0"
    jout_end
    exit 0
    version
    Eine einfache Textdatei mit einer dezimalen Versionsnummer im Format xx.xx, Beispiel: 1.0
    Über die Anzahl der Stellen vor und nach dem Komma kann ich keine Aussage machen.

    Im Grunde unterscheiden sich die beiden Scripte "export" und "import" in diesem einfachen Backup/Restore nur im Teil zum Kopieren der Daten von A->B oder B->A.

    Anpassen der Scripte an eure Bedürfnisse
    Zwischen dem Kopfteil, in dem das Backupziel bzw. die Restorequelle überprüft und übergeben wird und dem Fussteil "jout_begin..." können eure notwendigen Befehle eingefügt werden.
    Zum Testen der Kopierabschnitte eignet sich ein extra Script, in diesem ihr zuvor Alles mit statischen Daten für Ex- und Importpfad verseht. Wenn eure Routinen fertig sind, kopiert den Scripteil zum Kopieren in das entsprechende Script und tauscht die statischen Daten gegen die Variablen "EXPPATH" und "IMPPATH" aus.

    Anpassen der optionalen Dateien
    Die folgenden Dateien sind, wie schon erwähnt, optionale Dateien. Sind sie vorhanden, müssen diese mit gültigen Daten gefüllt sein, damit das Backup bzw. das Restore funktioniert. Fehlen diese Dateien, dann gilt das hinter "default" genannte.

    info
    default: online_backup: true, external_data: []

    Dies ist eine Konfigurationsdatei im JSON-Format. Ich selbst benutze sie derzeit in keinem meiner Backupscripte, weshalb ich damit noch keine Erfahrungen gesammelt habe. Ein paar Dinge sind aber selbsterklärend, welche ich hier nun vorstellen möchte. Da wäre zum einen die Möglichkeit mit dem Property "online_backup" und dem Value "true oder false" zu bestimmen, ob die Anwendung zum Zeitpunkt des Backup's/Restore's gestoppt und im Anschluss wieder gestartet wird (Value = false). Dann gibt es da noch das Property "external_data", dem ein Array mit weiteren Properties und Values folgt. Hiermit können ein oder mehrere abhängige Freigaben und auch DB-Tabellen angegeben werden, die zwingend mitgesichert werden müssen.
    Erklärung: Wird bei Erstellung einer Backup oder Restoreaufgabe z.B. die Freigabe nach Auswahl der Anwendung wieder abgewählt, erscheint eine Meldung über die Verknüpfung mit dieser Anwendung. Schaut euch für weitere Informatioen die anderen Anwendungen mit backup-Verzeichnis an.

    Als Beispiel der Inhalt der Datei "info" der PhotoStation (Copyright Synology):
    PHP-Code:
    {
              
    "online_backup"true,
              
    "external_data": [
                        {
                              
    "handler_type""built-in",
                              
    "handler""share",
                              
    "data": [
                                  {
    "share_name""photo"}
                              ]
                        },
                        {
                              
    "handler_type""built-in",
                              
    "handler""pgsql",
                              
    "data": [
                                  {
                                       
    "db""photo"
                                  
    }
                              ]
                        }
              ]

    can_export und can_import
    default: keine Prüfung

    Wie ich oben schon schrieb, können hier vorab Prüfungen durchgeführt werden, welche das Aktivieren/Deaktivieren des Features erlauben. Synology benutzt dies meistens zur Versionsabfrage, um Backup- und Restoreinkompatibilitäten entgegenzuwirken. Diese beiden Scripte können auch ohne weitere Prüfungen vorhanden sein, dann muss aber der folgende Teil als Minimum enthalten sein.
    Code:
    . /usr/syno/bin/jsoncmd
    
    jdone
    exit 0
    Nun viel Spass beim Erstellen der eigenen Backup/Restore Scripte für eure Anwendung.

    Alle Angaben wie immer ohne Gewähr!
    Geändert von QTip (02.09.2015 um 10:39 Uhr) Grund: Typo
    Diskstation: DS916+ 6.1.7-15284-2 8GB 15TB|DS1512+ 3GB 5.2-5967 12TB|DS214play 6.2.1-23824 2TB
    Workstation: i7-6700 32GB|34" IPS|Windows 10 64bit Pro
    UPS: APC Back CS 650
    Netzwerk: RT1900ac 1.1.7-6941-3 SD 64GB|2x TP-Link SG1008D|TP-Link SG2008|VKBD 100Mbit
    Smartclients: BQ Aquaris A4.5|ASUS TF101
    Mediaclients: EasyVDR 2.5/Kodi 16.1|Sony KDL-60W855|Samsung BD-C5500
    Projekte: CPH DDNS Updater RK Hunter Notification Forwarder Notification Messenger Growler iPKGui EBI

  2. #2
    Anwender Avatar von dil88
    Registriert seit
    03.09.2012
    Beiträge
    28.573

    Standard

    Vielen Dank, QTip!
    DS214+ mit DSM 5.2 5967-9 (1x WD RED 4TB), VU+ Solo2 SAT-Receiver, Fritzbox 7580 - Ultimate Backup

  3. #3
    Anwender Avatar von Puppetmaster
    Registriert seit
    03.02.2012
    Beiträge
    16.421

    Standard

    Das klingt wirklich vielversprechend!
    Tolle Arbeit, danke dafür!
    DS415+ DSM 6.2.1-23824 U1 | 2x2TB BTRFS RAID1 + 8TB EXT4 (Basis) WD Red 24/7
    DS214+ DSM 6.2.1-23824 U1 | 3TB WD Red (Basis) + 6TB Seagate Archive (Basis)
    Media Logitech Media-Server 7.7.2 | Squeezebox Classic | Squeezebox Transporter | VU+ Uno | Raspberry Pi - OpenELEC 6.0.1 Kodi v15
    USV APC Back-UPS RS550GI


    Reset einer DiskStation | Migration zwischen DiskStations | Festplattenzugriff mittels Knoppix-DVD

  4. #4
    Anwender
    Registriert seit
    16.07.2015
    Beiträge
    462

    Standard

    Danke, gleich mal eingebaut
    DiskStations: DS415+ | DSM 6.0.1-7393 | 4x6TB WD60EFRX (SHR1) | 2GB RAM
    Projekte: JDownloader 2 BETA, RSScrawler

Ähnliche Themen

  1. Backup Basis: 'Backup & Replication' oder Time Backup für Reset der DS
    Von frankyst72 im Forum Backup / Restore / Data Replicator Allgemein
    Antworten: 6
    Letzter Beitrag: 17.06.2015, 14:34
  2. Backup & Replication: Liste der übertragenen Dateien
    Von Hafer im Forum Backup / Restore / Data Replicator Allgemein
    Antworten: 4
    Letzter Beitrag: 16.02.2015, 14:57
  3. Datensicherung & replication löscht nicht
    Von skykay im Forum Backup / Restore / Data Replicator Allgemein
    Antworten: 0
    Letzter Beitrag: 22.11.2014, 23:40
  4. 3rdparty apps / Zugriff absichern
    Von GNaschenweng im Forum Andere 3rd Party Anwendungen
    Antworten: 14
    Letzter Beitrag: 28.03.2014, 14:19
  5. Workaround für Community 3rdparty Apps Problem
    Von QTip im Forum Synology Beta Programm
    Antworten: 18
    Letzter Beitrag: 14.09.2011, 10:05

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •