Schnittstellen

Einführung

Dieses Dokument beschreibt die Einrichtung und Konfiguration eines automatisierten Dienstes zur Übertragung von Dateien zwischen einem FTP-Server und einem lokalen Dateisystem. Mit Hilfe des bereitgestellten Skripts können Dateien in regelmäßigen Abständen automatisch:

  • Vom FTP-Server auf das lokale Dateisystem heruntergeladen und dort abgelegt werden.
  • Vom lokalen Dateisystem auf den FTP-Server hochgeladen werden.

Diese automatisierten Dateiübertragungen können beispielsweise verwendet werden, um Bestandsdaten von einem FTP-Server zu importieren oder exportierte Daten an einen FTP-Server zu senden. Der Dienst kann nahtlos in bestehende Prozesse integriert werden, um die Datenübertragung effizient und zuverlässig zu gestalten.

Sicherstellung der Datenintegrität

Um die Datenintegrität zu gewährleisten, überprüft der Dienst beim Herunterladen von Dateien vom FTP-Server, ob die Datei über einen definierten Zeitraum (standardmäßig 1 Minute) unverändert bleibt. Erst nachdem sichergestellt wurde, dass die Datei nicht mehr verändert wird, wird sie auf das lokale System kopiert. Dies verhindert das Risiko, unvollständige oder noch in Bearbeitung befindliche Dateien zu übertragen.

Starten des Import/Export-Dienstes mit systemd

systemd ist die gängigste Methode zur Verwaltung von Diensten auf modernen Linux-Distributionen. Im Folgenden wird beschrieben, wie Sie einen systemd-Dienst erstellen, um das Skript auszuführen.

  1. Erstellen einer systemd Service Unit Datei

Erstellen Sie eine Service-Unit-Datei, z.B. sftp_popper.service, für Ihr Skript. Diese Datei informiert systemd darüber, wie der Dienst gestartet, gestoppt und verwaltet werden soll.

[Unit]
Description=Unibas Stock Import
After=network.target

[Service]
Type=simple
User=lambdaroyal-anon
WorkingDirectory=/home/lambdaroyal-anon/werner
ExecStart=/bin/bash -c './werner-backend/scripts/sftp_popper.sh <FTP-SERVER> <FTP-USERNAME> <FTP-PASSWORD> /live/in /home/lambdaroyal-anon/werner/tmp-unibas/werner/interface/unibas-stock-import/in /live/out /home/lambdaroyal-anon/werner/tmp-unibas/werner/interface/unibas-stock-import/out'
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target
  • User=lambdaroyal-anon: Ersetzen Sie lambdaroyal-anon durch den Benutzernamen, unter dem das Skript ausgeführt werden soll.
  • ExecStart=Passen Sie diesen Befehl bei Bedarf an, um sicherzustellen, dass das Skript mit den richtigen Parametern gestartet wird.
  • Restart=on-failure: Der Dienst wird automatisch neu gestartet, wenn er fehlschlägt.
  • RestartSec=10: Der Dienst wartet 10 Sekunden, bevor er nach einem Fehler neu gestartet wird.
  1. systemd neu laden und den Dienst starten

Nachdem Sie die Unit-Datei erstellt haben, laden Sie den systemd-Daemon neu, um die Änderungen zu übernehmen:

sudo systemctl daemon-reload

Starten Sie den Dienst:

sudo systemctl start sftp_popper.service

Aktivieren Sie den Dienst, damit er beim Systemstart automatisch startet:

sudo systemctl enable sftp_popper.service

Den Status Ihres Dienstes können Sie mit folgendem Befehl überprüfen:

sudo systemctl status sftp_popper.service
Previous
Bestandsimport durch eine Filesystemüberwachung