Kopieren Sie die Datei auf SFTP in ein anderes Verzeichnis ohne hin -

Ich habe das versucht, aber natürlich funktioniert es nicht:

sftp> cp baz.txt foo/bar/
Invalid command.

Gibt es eine Möglichkeit, dies mit einer sftp Verbindung zu tun?


Natürlich ist mir klar, dass dies trivial ist, wenn ich stattdessen eine Verbindung zu ssh herstelle. Ich habe jedoch einen SFTP-Server, auf dem ich das nicht wirklich tun kann, da ssh - ing mir ein anderes Startverzeichnis gibt und ich keine Macht über (oder sogar Kenntnis) der absoluten Pfade auf der Fernbedienung habe; Ich brauche alles, um relativ zum Startverzeichnis zu arbeiten, wenn ich verbinde dich mit sftp.

 3
Author: Martin Prikryl, 2017-01-12

4 answers

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

There ' s draft of the copy-file erweiterung des Protokolls, das jedoch nur von wenigen SFTP-Servern (z. B.ProFTPD/mod_sftp und Bitvise SFTP-Server) und wenigen SFTP-Clients (z. B.WinSCP) unterstützt wird.

Es wird definitiv nicht vom am weitesten verbreiteten OpenSSH SFTP-Server unterstützt. Noch durch OpenSSH SFTP Client (sftp), dh es gibt keinen cp Befehl oder einen anderen funktional gleichwertig.


Alternative (die Sie scheinen zu wissen und Ihnen nicht helfen):

  • Wenn Sie SSH / Terminal-Zugriff auf den Server haben, verwenden Sie den Befehl shell cp .
  • Wenn Ihr SFTP-Server die Erweiterung copy-file unterstützt, verwenden Sie einen SFTP-Client, der sie ebenfalls unterstützt.
  • Andernfalls können Sie die Datei nur an einen lokalen temporären Speicherort herunterladen und ihre Kopie wieder in ein anderes/Ziel-Remote-Verzeichnis hochladen.
    Einige SFTP-clients kann dies für Sie sogar transparent auf einmal tun (zB in WinSCP, siehe Duplizieren über lokale temporäre Kopie Option auf Duplizieren Dialog).

(ich bin der Autor von WinSCP)

 8
Author: Martin Prikryl,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-09-12 15:56:16

sftp protokoll hat keine Befehle zum Kopieren von Dateien auf Remote-Server. Siehe manuelle Seite für sftp zur Liste der verfügbaren Befehle.

 0
Author: Jakuje,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-01-12 11:47:40

Es ist möglich, ich mache das die ganze Zeit mit dem Befehl scp über Terminal in mac.

Scp [Optionen] username1@source_host:directory1/filename1 username2@destination_host:directory2/filename2

 0
Author: Nico,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-08-26 07:44:00

Sie können die FTP-Befehle wie

sftp> put baz.txt /foo/bar/baz.txt
 -1
Author: Nicolas Perraut,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-01-12 11:30:04