Ü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 |
|
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
Legen Sie einen Ordner
tactoin Ihrem Benutzerverzeichnis an:mkdir -p ~/tacto/skript
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
Alle übrigen Ordner legt das Skript beim ersten Lauf selbst an, Sie müssen dafür nichts vorbereiten:
Ordner unterhalb von | Zweck |
| Sie legen hier ab: die CSV-Dateien aus Ihrem ERP für Tacto |
| Sie legen hier ab: die Zeichnungsdateien |
| Sie legen hier ab: die Metadaten zu den Zeichnungen |
| Das Skript legt hier ab: die von Tacto bereitgestellten Exportdateien |
| lokale Kopie der bereits hochgeladenen CSV-Dateien |
| lokale Kopie der bereits hochgeladenen Zeichnungen |
| Protokoll jedes Laufs |
So verhält sich das Skript mit Ihren Dateien:
Upload: Erfolgreich übertragene Dateien werden aus
data-exportbzw.drawingsentfernt und nachuploaded-files/uploaded-drawingsverschoben. 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/exportdaher, 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 |
| lädt die Dateien aus |
| lädt |
| lädt alle für Sie bereitgestellten Exportdateien nach |
| 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.
