Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

transferFile

Mit transferFile führen Sie eine Dateiübertragung aus. transferFile startet die Dateiübertragung und wartet innerhalb von ftscript auf das Ende der Dateiübertragung.
Die Dateiübertragung selbst ist wiederanlauffähig.

Wenn Sie remoteSuccessScript (siehe Abschnitt „remoteSuccessScript") oder remoteFailureScript (siehe Abschnitt „remoteFailureScript") angeben, wird anschließend auf dem fernen Rechner das entsprechende Script ausgeführt.
Für die lokalen Scripts sollten Sie faulthandler (siehe Abschnitt „faulthandler") oder executeScript (siehe Abschnitt „executeScript") verwenden (Beispiel siehe "transferFile").

Arten der Dateiübertragung

Mit transferFile können Sie Dateien folgendermaßen übertragen:

  • Dateiübertragungen von „remote“ nach „local“ (fromRemoteFile toLocalFile)

  • Dateiübertragungen von „local“ nach „remote“ (fromLocalFile toRemoteFile)

  • Dateiübertragungen von „remote“ nach „remote“ sind über zwei aufeinander folgende (sequenzielle) transferFile Aktivitäten zu realisieren, z.B. in einer sequence Aktivität:

    • Dateiübertragung von „remote“ nach „localTmp“ (fromRemoteFile toLocalTmpFile)

    • Dateiübertragung von „localTmp“ nach „remote“ (fromLocalTmpFile toRemoteFile)

Einschränkungen

  1. Nach der Dereferenzierung müssen fromRemoteFile und toRemoteFile eine Partnerangabe besitzen.

  2. Die Elemente fromLocalFile und toLocalFile dürfen nach der Dereferenzierung keine Partnerangabe besitzen.

  3. Mit transferFile können Sie keine Dateiübertragungen von „local“ nach „local“ ausführen.

    Für Dateiübertragungen von „local“ nach „local“ verwenden Sie ein entsprechendes Script (copy) oder geben Sie eine der beiden Dateien als „remote“ und den lokalen Rechner als Partner an (transferAdmission angeben).

Format

 <transferFile compress?="none|byteRep|zip" writeMode?=
 "replace|new|extend" transparentMode?="true|false"
 dataEncryption?="yes|no|onlyDataIntegrity">
   comment?
   context?
   ( (fromRemoteFile   toLocalFile)    |
     (fromLocalFile    toRemoteFile)   |
     (fromRemoteFile   toLocalTmpFile) |
     (fromLocalTmpFile toRemoteFile)  )
   remoteSuccessScript?
   remoteFailureScript?
 </transferFile>

Attribute

Name

Wert

Bedeutung

compress?

none | byteRep |
zip

Der Standardwert ist none. Die Datei wird nicht komprimiert.
Bei Angabe von byteRep werden gleiche Zeichen in Folge komprimiert. Bei Angabe von zip wird zipkomprimiert.

writeMode?

replace | new |
extend

Der Standardwert ist replace. Eine existierende Datei wird überschrieben. Existiert die Datei nicht, wird sie angelegt.
Bei Angabe von extend werden die Daten an die angegebene Datei angehängt. Existiert die Datei nicht, wird sie angelegt.
Bei Angabe von new wird eine neue Datei erzeugt.
Existiert bereits eine Datei mit diesem Namen, wird die Aktivität mit dem Fehler ft_exist abgebrochen.

transparentMode?

true | false

Der Standardwert ist false. Die Datei wird standardmäßig übertragen.
Bei Angabe von true wird transparent übertragen (z.B. bei Übertragungen von einem BS2000-System zu einem anderen BS2000-System über Windows-/Unix-System).

dataEncryption?

yes | no |
onlyDataIntegrity

Der Standardwert ist no.
Die Benutzerdaten werden nicht verschlüsselt. Bei Angabe von yes werden die Benutzerdaten verschlüsselt (Einstellungen siehe Handbuch "openFT (Unix- und Windows-Systeme) - Kommandoschnittstelle").
Bei Angabe von onlyDataIntegrity wird nur die Datenintegrität überprüft.

Beispiele

1. Dateiübertragung mit remoteSuccessScript / remoteFailureScript

 <?xml version="1.0" encoding="UTF-8"?>
 <ftscript version="1">
   <context>
     <script id="everything ok">
       <unixScript><![CDATA[echo everything ok
            >frg_eis_15/status.txt]]>
       </unixScript>
       <windowsScript>
          <![CDATA[cmd /c "echo everything ok"
            >frg_eis_15\status.txt]]>
       </windowsScript>
     </script>
     <script id="something failed">
       <unixScript><![CDATA[echo something failed>
            frg_eis_15/status.txt]]>
       </unixScript>
       <windowsScript>
          <![CDATA[cmd /c echo something failed
            >frg_eis_15\status.txt]]>
       </windowsScript>
     </script>
     <partner id="remote" name="UnixP_1" systemType="unix">
       <transferAdmission>
         <ftacAdmission ftacAdmission="FTACADM1"/>
       </transferAdmission>
     </partner>
   </context>
   <sequence>
     <context>
       <faulthandler>
         <default>
           <executeScript ref="something failed"/>
         </default>
       </faulthandler>
     </context>
     <transferFile>
       <fromRemoteFile name="bin.mp3">
         <partner ref="remote"/>
         <directory name="frg_eis_15"/>
       </fromRemoteFile>
       <toLocalFile name="bin.mp3">
         <directory name="frg_eis_15"/>
       </toLocalFile>
       <remoteSuccessScript ref="everything ok"/>
       <remoteFailureScript ref="something failed"/>
     </transferFile>
     <executeScript ref="everything ok"/>
   </sequence>
 <transferFile writeMode="extend">
     <fromRemoteFile name="status.txt" data="char">
       <partner ref="remote"/>
       <directory name="frg_eis_15"/>
     </fromRemoteFile>
     <toLocalFile name="status.txt">
       <directory name="frg_eis_15"/>
     </toLocalFile>
   </transferFile>
 </ftscript>

Es werden die Datei bin.mp3 vom Partner remote in die lokale Datei bin.mp3 übertragen. Anschließend wird die Datei status.txt mit folgendem Inhalt erzeugt:

  • bei korrekter Übertragung

    everything ok
    everything ok

  • im Fehlerfall

    something failed
    something failed

Wenn beim Zusammensetzen der Datei status.txt Fehler auftreten, führt dies zum Abbruch des Scripts.

2. Dateiübertragung von „remote“ nach „remote“

 <?xml version="1.0" encoding="UTF-8"?>
 <ftscript version="1">
   <context>
     <partner id="remote1" name="UnixP_1">
       <transferAdmission>
         <ftacAdmission ftacAdmission="FTACADM1"/>
       </transferAdmission>
     </partner>
     <partner id="remote2" name="WindowsP_1">
       <transferAdmission>
         <ftacAdmission ftacAdmission="FTACADM2"/>
       </transferAdmission>
     </partner>
   </context>
   <transferFile>
     <fromRemoteFile name="data.txt">
       <partner ref="remote1"/>
       <directory name="frg_eis_16"/>
     <autoDataSpec charPattern="*.txt" binPattern="*.dat *.mp3"/>
     </fromRemoteFile>
     <toLocalTmpFile id="tmp"/>
   </transferFile>
   <transferFile>
     <fromLocalTmpFile use="tmp"/>
     <toRemoteFile name="data.txt">
       <partner ref="remote2"/>
       <directory name="frg_eis_16"/>
     </toRemoteFile>
   </transferFile>
 </ftscript>

Im Beispiel wird zuerst die Datei data.txt vom Partner remote1 in eine temporäre Datei kopiert. Die temporäre Datei bekommt einen internen Namen. Die Endung der temporären Datei entspricht der Endung der zugehörigen fromRemoteFile Datei (hier *.txt).

Die Konvertierung erfolgt mit autoDataSpec charPattern für Character-Zeichen, da die Endung der Datei dem Muster .txt entspricht (siehe Abschnitt „autoDataSpec"). Wenn das lokale System ein Windows-System ist, werden die Zeilenenden entsprechend konvertiert.

Bei der Übertragung der temporären Datei in das ferne System remote2 werden die autoDataSpec Einstellungen übernommen, die beim Erzeugen der temporären Datei vorgenommen wurden. Diese werden vererbt, ebenso maxRecSize und Dateneigenschaften des Elements fromRemoteFile. Wenn das lokale System ein Windows-System ist, werden die Daten bei der zweiten Übertragung nicht konvertiert. Bei einem lokalen Unix-System wäre es umgekehrt. Bei der Übertragung in das lokale System werden keine Daten konvertiert, jedoch bei der zweiten Übertragung in das ferne System.

3. Verwendung von faulthandler und executeScript für lokale Scripts

Der faulthandler (siehe Abschnitt „faulthandler") entspricht dem localFailure-Script, das direkt auf transferFile folgende executeScript (siehe Abschnitt „executeScript") entspricht dem localSuccessScript.

Schalten Sie einen transferFile-Auftrag mit local*Script wie im folgenden Beispiel dargestellt:

 ...
 <sequence>
   <context>
    <faulthandler>
       <default>
         <executeScript>
           .... localFailureScript...
         </executeScript>
       </default>
    </faulthandler>
   </context>
   <transferFile>
   .... 
   </transferFile>
   <executeScript>
   ... localSuccessScript...
   </executeScript>
 <sequence>
 ...

Diese sequence kann auch in einer parallel oder foreach - parallel Anweisung stehen.