2016-06-06 3 views
0

Ich frage mich, ob es eine Möglichkeit gibt, Dateien auf einem SFTP-Server in ein anderes Verzeichnis auf dem gleichen SFTP-Server zu kopieren. Ich möchte dies tun, ohne die Datei in einen Client zu bekommen und sie dann in den anderen Ordner zu setzen. Natürlich würde das gut funktionieren, aber ich denke, das würde mehr Overhead erzeugen, also möchte ich das, wenn überhaupt möglich, vermeiden. Ich arbeite zur Zeit mit Spring Integration, die auf JCraft JSch basiert.Kopieren von Dateien intern auf einem SFTP-Server mit Spring Integration/JCraft JSch

Bis jetzt konnte ich keinen Weg finden, dies ohne einen Vermittler zu tun.

Ein anderer Ansatz wäre, einen SSH-Kanal zu öffnen und einfach den Befehl cp zu verwenden, aber das ist meiner Meinung nach auch nicht zu schön.

Vielen Dank im Voraus!

+0

Sie können dieses Verhalten möglicherweise erhalten, indem Sie eine Site-zu-Site-Übertragung (_a.k.a.. "FXP") _mit demselben Server selbst_ verwenden. _I.e._ Ihr FTP-Client öffnet zwei FTP-Sitzungen auf dem Server. Eine Sitzung weist den Server an, eine passive Datenübertragung zu verwenden (z. B. zum Empfangen der Datei), die andere Sitzung weist den Server an, eine aktive Datenübertragung durchzuführen (z. B. zum Senden der Datei), und Sie verwenden die Adresse/den Port aus der passiven Datenantwort im aktiven Datenbefehl. – Castaglia

Antwort

1

Ein Core-SFTP-Protokoll unterstützt das Duplizieren einer Remote-Datei nicht.

Es gibt einen Entwurf von copy-file extension to the protocol, aber das wird von nur wenigen SFTP-Servern (ProFTPD/mod_sftp und Bitvise SFTP-Server zum Beispiel) unterstützt.

Es wird definitiv nicht von dem am weitesten verbreiteten OpenSSH SFTP Server unterstützt.

Und es wird auch nicht von der JSch Bibliothek unterstützt.


Siehe auch meine Antwort auf How can I copy/duplicate a file to another directory using SFTP?


Also eigentlich mit dem cp Shell-Befehl über einen "exec" Kanal (ChannelExec) ist leider der beste verfügbare Ansatz (vorausgesetzt, Sie zu einem * nix-Verbindung Server und Sie haben einen Shell-Zugriff).

+0

Danke für Ihre Aufmerksamkeit. Es ist eine Schande, dass es nicht unterstützt wird. Es scheint so eine triviale Aufgabe :) – user3157264

Verwandte Themen