Zum Hauptinhalt springen

Datenupload und -download für Unix-basierte Systeme

Überblick

Sie erhalten von Ihrem Tacto-Ansprechpartner genau ein Skript: Tacto_<Ihr-Kürzel>_Azure_Script.sh. Es deckt beide Richtungen des Datenaustauschs ab:

  • Upload: Ihre ERP-Exportdateien und – falls vereinbart – Zeichnungen werden in die Tacto-Cloud übertragen.

  • Download: Von Tacto bereitgestellte Exportdateien werden auf Ihr System geholt.

Alle Kunden erhalten dasselbe, vollständige Skript – auch wenn zunächst nur eine Richtung genutzt wird. Ein Schritt, der für Sie noch nicht eingerichtet ist, meldet im Protokoll lediglich, dass es nichts zu tun gibt, und der Lauf gilt weiterhin als erfolgreich. Sie müssen das Skript dafür nicht anpassen und keine Schritte auskommentieren. Sobald Tacto eine weitere Richtung für Sie freischaltet, greift Ihr bestehendes Skript automatisch.

Schritt 1: Voraussetzungen

Bitte installieren Sie das folgende Programm und stellen Sie sicher, dass es über den PATH auffindbar ist.

Tool

Version

Befehl

>= 10.20.1

azcopy --version

Das Skript authentifiziert sich direkt über AzCopy.

Unter Linux installieren Sie AzCopy am besten über den Paketmanager Ihrer Distribution. Alternativ laden Sie das Binary herunter und legen es in einem Verzeichnis ab, das im PATH liegt:

sudo cp azcopy /usr/local/bin/sudo chmod +x /usr/local/bin/azcopy

Prüfen Sie anschließend, dass das Tool gefunden wird:

which azcopyazcopy --version

Schritt 2: Skript ablegen und Ordnerstruktur aufsetzen

  1. Legen Sie einen Ordner tacto in Ihrem Benutzerverzeichnis an:

    mkdir -p ~/tacto/skript
  2. Speichern Sie das erhaltene Skript unter ~/tacto/skript/ ab und machen Sie es ausführbar. Das Skript enthält Ihre Zugangsdaten, beschränken Sie die Rechte daher auf Ihren Benutzer:

    chmod 700 ~/tacto/skript/Tacto_<Ihr-Kürzel>_Azure_Script.sh
  3. Alle übrigen Ordner legt das Skript beim ersten Lauf selbst an, Sie müssen dafür nichts vorbereiten:

Ordner unterhalb von ~/tacto/

Zweck

data-export/

Sie legen hier ab: die CSV-Dateien aus Ihrem ERP für Tacto

drawings/files/

Sie legen hier ab: die Zeichnungsdateien

drawings/metadata/

Sie legen hier ab: die Metadaten zu den Zeichnungen

export/

Das Skript legt hier ab: die von Tacto bereitgestellten Exportdateien

uploaded-files/<Datum>/

lokale Kopie der bereits hochgeladenen CSV-Dateien

uploaded-drawings/<Datum>/

lokale Kopie der bereits hochgeladenen Zeichnungen

logs/scheduled-task.log

Protokoll jedes Laufs

So verhält sich das Skript mit Ihren Dateien:

  • Upload: Erfolgreich übertragene Dateien werden aus data-export bzw. drawings entfernt und nach uploaded-files / uploaded-drawings verschoben. Der Eingangsordner enthält also immer nur das, was noch nicht bei Tacto ist. Dateien, die während eines laufenden Uploads dazukommen, bleiben liegen und gehen beim nächsten Lauf mit.

  • Download: Heruntergeladene Dateien werden in der Tacto-Cloud in ein Archiv verschoben und aus der Warteschlange entfernt. Jede Datei wird somit genau einmal ausgeliefert. Verarbeiten Sie die Dateien in ~/tacto/export daher, bevor Sie sie verschieben oder löschen. Je Exportstrecke legt das Skript einen eigenen Unterordner an.

Wichtig ❗

Wenn Sie einen anderen Speicherort verwenden möchten, ändern Sie im Skript ausschließlich den Wert von TACTO_ROOT im Abschnitt „only modify the values below“ – alle Unterordner und die Logdatei ziehen automatisch mit. Die Werte im Abschnitt SETTINGS am Anfang des Skripts (APP_ID, CLIENT_SECRET, TENANT_ID, DESTINATION_FOLDER, LOCAL_EXPORT_ROOT) dürfen nicht verändert werden.

Schritt 3: Die Betriebsarten des Skripts

Das Skript nimmt optional einen Modus als Argument entgegen:

./Tacto_<Ihr-Kürzel>_Azure_Script.sh [MODUS]

Modus

Was passiert

standard

lädt die Dateien aus ~/tacto/data-export hoch

drawings

lädt ~/tacto/drawings/files und ~/tacto/drawings/metadata hoch

export

lädt alle für Sie bereitgestellten Exportdateien nach ~/tacto/export herunter

all

führt alle oben genannten Schritte nacheinander aus

Ohne Argument läuft all. Das ist auch unsere Empfehlung, selbst wenn Sie aktuell nur eine Richtung nutzen: Nicht eingerichtete Schritte überspringt das Skript folgenlos. Einzelne Modi sind nur dann sinnvoll, wenn Sie bewusst unterschiedliche Zeitpläne brauchen – etwa einen täglichen Lauf für standard und einen seltenen für drawings.

Es läuft immer nur eine Instanz gleichzeitig. Startet ein Lauf, während ein vorheriger noch aktiv ist, beendet er sich mit INFO: Another run (PID …) is still in progress, skipping this run. Auch das ist kein Fehler.

Schritt 4: Erster Testlauf

Führen Sie das Skript einmal manuell aus:

~/tacto/skript/Tacto_<Ihr-Kürzel>_Azure_Script.sh

Dabei legt es alle Ordner aus Schritt 2 an. Anschließend können Sie Ihr erstes Bündel an Exportdateien in ~/tacto/data-export ablegen und das Skript ein zweites Mal starten. Eine erfolgreiche Ausgabe sieht zum Beispiel so aus:

INFO: Authentication successfulINFO: Starting standard files uploadINFO: standard files upload successfulINFO: Starting drawing files uploadINFO: No drawing files to upload, skippingINFO: No export queues found under <Ihr-Kürzel>/export

Zeilen wie „No … to upload, skipping“ oder „No export queues found under …“ sind kein Fehler. Sie bedeuten nur, dass für diesen Schritt nichts anliegt oder er für Sie noch nicht eingerichtet ist.

Echte Fehler beginnen immer mit ERROR:, erscheinen im Terminal und stehen zusätzlich in ~/tacto/logs/scheduled-task.log.

Schritt 5: Planung des automatisierten Datentransfers mit cron

Öffnen Sie die Crontab des Benutzers, unter dem das Skript laufen soll:

crontab -e

Ergänzen Sie einen Eintrag. Das folgende Beispiel führt jeden Werktag um 5:00 Uhr alle Schritte aus:

PATH=/usr/local/bin:/usr/bin:/bin0 5 * * 1-5 $HOME/tacto/skript/Tacto_<Ihr-Kürzel>_Azure_Script.sh

Wichtig ❗ cron startet mit einer sehr kurzen PATH-Variable. Ohne die PATH-Zeile oben (oder einen absoluten Pfad zu AzCopy) bricht der Lauf mit ERROR: azcopy not found ab, obwohl der manuelle Test funktioniert hat. Prüfen Sie mit which azcopy, in welchem Verzeichnis AzCopy liegt, und nehmen Sie dieses Verzeichnis in die PATH-Zeile auf.

Der Zeitplan sollte hinter dem mit Tacto vereinbarten Bereitstellungszeitpunkt liegen. Wenn Sie getrennte Zeitpläne brauchen, legen Sie mehrere Einträge mit dem jeweiligen Modus aus Schritt 3 an:

0 5 * * 1-5 $HOME/tacto/skript/Tacto_<Ihr-Kürzel>_Azure_Script.sh standard0 6 * * 0   $HOME/tacto/skript/Tacto_<Ihr-Kürzel>_Azure_Script.sh drawings

Das Skript schreibt sein Protokoll selbst, eine Umleitung der Ausgabe in eine Datei ist nicht nötig.

Hinweis zum Benutzerkontext ❗

Wenn Sie das Skript über eine System-Crontab (/etc/crontab) oder unter einem technischen Benutzer ausführen, zeigt $HOME auf dessen Benutzerverzeichnis. Die Dateien landen dann nicht im erwarteten Ordner. Tragen Sie in diesem Fall bei TACTO_ROOT einen absoluten Pfad ein, zum Beispiel /srv/tacto, und stellen Sie sicher, dass der ausführende Benutzer dort Schreibrechte hat.

🏁 Damit haben Sie den automatischen Datenaustausch mit der Tacto-Cloud erfolgreich eingerichtet!

Überwachung des Tasks

Jeder Lauf hängt seine Ausgabe an ~/tacto/logs/scheduled-task.log an, inklusive Zeitstempel und verwendetem Modus. Die letzten Zeilen sehen Sie mit:

tail -n 50 ~/tacto/logs/scheduled-task.log

Nach Fehlern suchen Sie gezielt mit:

grep ERROR ~/tacto/logs/scheduled-task.log

Bei Problemen schicken Sie diese Datei bitte an Ihren Tacto-Ansprechpartner.

Hat dies deine Frage beantwortet?