FtpCopy

Gruppe

Zeitgesteuerte eigene Klassen

Klassenname

com.ebd.hub.datawizard.util.FtpCopy

Funktion

Diese Klasse holt Massendaten per FTP ab und legt diese lokal, oder auf einem anderen FTP-Server ab. Alternativ kann auch von einem Netzlaufwerk, oder einem lokalen Verzeichnis abgeholt werden.

Konfigurationsdatei

sample_ftp_copy.xml

Beschreibung

Diese Klasse holt Massendaten per FTP ab und legt diese lokal, oder auf einem anderen FTP-Server ab. Alternativ kann auch von einem Netzlaufwerk, oder einem lokalen Verzeichnis abgeholt werden (siehe Hinweis zu Parameter channel des Elements account). Alle Einstellungen werden in einer XML-Konfigurationsdatei vorgenommen.

1. Element <account>:

Übergeordnetes Element. Allgemeine Angaben zum Übertragungsvorgang. Attribute des Elements:

host

Adresse des FTP-Servers. Dieses Attribut entfernen, wenn von einem lokalen Verzeichnis, oder Netzlaufwerk übertragen werden soll.

port

Port des FTP-Servers.

delete_files

Falls true, werden übertragene Dateien gelöscht.

source_dir

Das Quell-Verzeichnis (muss vorhanden sein). Selbst wenn die Option delete_dir=true verwendet wird, wird dieses Verzeichnis nicht gelöscht.

destination_dir

Das Ziel-Verzeichnis (muss vorhanden sein). Selbst wenn die Option delete_dir=true verwendet wird, wird dieses Verzeichnis nicht gelöscht.

mode

active oder passive. Der FTP-Transfermodus.

pattern

Das Datei-Muster der zu übertragenden Dateien.

force_uppercase

Falls true, werden die Dateinamen im Zielverzeichnis in Großschrift angegeben.

force_lowercase

Falls true, werden die Dateinamen im Zielverzeichnis in Kleinschrift angegeben.

extract_zip

Wird hier true gesetzt, dann werden ZIP-Dateien beim Kopiervorgang entpackt.

destination_host

Adresse des FTP-Servers, falls das Übertragungsziel ein FTP-Server ist.

destination_port

Port des FTP-Servers, falls das Übertragungsziel ein FTP-Server ist.

verbose

Achtung: Gilt für FTP und SFTP. Bei true werden Debug-Meldungen auf der Konsole ausgegeben. Wenn der Integration Server unter Windows als Service läuft, werden die Meldungen an die Datei logs/wrapper.log weitergeleitet. Sollte der Integration Server unter Unix/Linux im Hintergrund laufen, dann wird weitergeleitet an die Datei hub.txt.

delete_dir

Löscht bei true auch ein übertragenes Verzeichnis. Funktioniert, vor allem bei lokalen Verzeichnissen, nur, wenn das Verzeichnis leer ist.

delete_target_dir

Bei true wird versucht das Zielverzeichniss vor dem Einfügen zu löschen, falls es vorhanden ist. Dies ist nur möglich wenn das Zielverzeichnis ein FTP-Verzeichnis ist. Wird nicht beim Root-Verzeichnis angewendet.

binary

Falls true, wird der Binärmodus für die Übertragung verwendet.

sftp

true, falls der Server von dem abgeholt wird ein SFTP-Server ist. Default: false.

destination_sftp

true, falls der Server auf den übertragen wird ein SFTP-Server ist. Default: false.

channel

ID des Kanals aus der Partnerverwaltung. Benutzer, Passwort und die Verschlüsselung werden aus dem SSH- oder FTP-Kanal übernommen (Eigene Kennung).

Achtung: Der Parameter darf nicht verwendet werden, wenn von einem Netzlaufwerk oder lokalen Verzeichnis abgeholt wird.

destination_channel

ID des anderen Kanals aus der Partnerverwaltung. Benutzer, Passwort und die Verschlüsselung werden aus dem SSH- oder FTP-Kanal übernommen (Partner Kennung).

2. Element <exclude_dir>, oder wahlweise Element <include_dir>:

Mit <exclude_dir> kann man Verzeichnisse angeben, die explizit ausgeschlossen werden beim Kopiervorgang. Alternativ kann man mit <include_dir> Verzeichnisse angeben, die explizit eingeschlossen werden. Attribute der beiden Elemente:

delete

true oder false. Gibt an, ob gelöscht werden soll.

3. Element <exclude_file>:

Mit <exclude_file> kann man Dateien angeben, die explizit ausgeschlossen werden beim Kopiervorgang. Attribute des Elements:

delete

true oder false. Gibt an, ob gelöscht werden soll.

4. Element <replace>:

Hiermit kann man Ersetzungen in Dateinamen vornehmen. Diese Ersetzungen funktionieren jedoch nicht bei Verzeichnisnamen. Attribute des Elements:

old_value

Zu ersetzende Zeichen.

new_value

Ersetzungszeichen.

Beispiel

sample_ftp_copy.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<config>
<!-- force_lowercase="true" forces the destination file name to be written in lower case; force_uppercase="true" for upper case -->
<account host="localhost" port="21" user="ftp" passwd="ftp" delete_files="false" source_dir="/" destination_dir="archiv" mode="passive" pattern="*" force_uppercase="false" force_lowercase="true" extract_zip = "true" destination_host="localhost" destination_port="21" destination_user="lobster" destination_passwd="secret" verbose="false" delete_dir="true" delete_target_dir="true" binary="true">
<!-- do not copy folders with the following names -->
<exclude_dir>archiv</exclude_dir>
<!-- here are replacements instructions -->
<replace old_value="ä" new_value="ae"/>
<!-- here is an exclude list of file pattern and whether to delete it or not -->
<exclude_file delete="true">~*</exclude_file> <!-- do not copy ~files and remove them locally -->
<exclude_file delete="false">*.tmp</exclude_file> <!-- do not copy *.tmp files and do not delete them locally -->
<!-- <include_dir>invoices</include_dir> -->
<!-- <include_dir>orders</include_dir> -->
</account>
</config>

Beispiel ab Version 3.5.0 oder bei Verwendung von patch_ftp_copy_with_channel.zip


sample_ftp_copy_3.5.0_patch.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<config>
<!-- force_lowercase="true" forces the destination file name to be written in lower case; force_uppercase="true" for upper case -->
<account host="localhost" port="22" channel="1443778549792012" sftp="true" delete_files="false" source_dir="/" destination_dir="archiv" pattern="*"
force_uppercase="false" force_lowercase="true" extract_zip = "true" verbose="false" delete_dir="true" binary="true">
<!-- do not copy folders with the following names -->
<exclude_dir>archiv</exclude_dir>
<!-- here are replacements instructions -->
<replace old_value="ä" new_value="ae"/>
<!-- here is an exclude list of file pattern and whether to delete it or not -->
<exclude_file delete="true">~*</exclude_file>
<!-- do not copy ~files and remove them locally -->
<exclude_file delete="false">*.tmp</exclude_file>
<!-- do not copy *.tmp files and do not delete them locally -->
<!-- <include_dir>invoices</include_dir> -->
<!-- <include_dir>orders</include_dir> -->
</account>
</config>

Ausgabe

Die Ausgabe erfolgt im CSV-Format, in der Kodierung 8859_1. Für jedes <account>-Element wird im Lobster_data ein Datenblatt erzeugt. Im Folgenden ein Beispiel des Ausgabe-Formats.

HOST;localhost;a_user;/
OK;/fäle1.txt;/tmp/ftp/faele1.txt
OK;/dir1/file2.txt;/tmp/ftp/dir1/file2.txt
ERR;/file3.txt;some error messages
OK;/file_4.txt;/tmp/ftp/file_4.txt

Jedes Datenblatt beginnt mit einer HOST-Zeile, die den Hostnamen, den Benutzernamen und das Start-Verzeichnis enthält. Danach folgen n Zeilen, beginnend mit OK, oder ERR, abhängig vom Erfolg, oder Misserfolg des Kopiervorgangs, gefolgt vom Dateinamen. Die OK-Zeile enthält den Quell-Dateinamen und den Ziel-Dateinamen. Die ERR-Zeile enthält den Dateinamen und die Fehler-Meldung.