it-swarm.com.de

FTP Kopieren Sie eine Datei an einen anderen Ort auf demselben FTP

Ich muss dieselbe Datei an zwei verschiedene Stellen im selben FTP hochladen. Gibt es eine Möglichkeit, die Datei vom FTP-Server an den anderen Ort zu kopieren, anstatt sie erneut hochzuladen? Vielen Dank.

16
Stan

Ich glaube nicht, dass es eine Möglichkeit gibt, Dateien ohne Herunterladen und erneutes Hochladen zu kopieren. Zumindest habe ich nichts dergleichen in der Liste der FTP-Befehle gefunden und kein Client, den ich bisher gesehen habe, hat so etwas unterstützt.

10
schnaader

Es gibt keine Standardmethode zum Kopieren einer Remote-Datei über das FTP-Protokoll. Einige FTP-Server unterstützen jedoch proprietäre oder nicht standardmäßige Erweiterungen. 


Einige FTP-Clients unterstützen die Remote-Dateiduplizierung. Entweder über die Erweiterungen oder über eine temporäre lokale Kopie der Remote-Datei.

Zum Beispiel unterstützt WinSCP FTP-Client do die Duplizierung sowohl mit Drag & Drop als auch mit Menü-/Tastaturbefehl:

  • Es unterstützt die SITE CPFR/CPTO FTP-Erweiterung (wird beispielsweise vom ProFTPD mod_copy-Modul unterstützt)
  • Es wird auf eine automatische Vervielfältigung über eine lokale temporäre Kopie zurückgegriffen, wenn die oben genannte Erweiterung nicht verfügbar ist.

(Ich bin der Autor von WinSCP)


Eine andere Problemumgehung besteht darin, eine zweite Verbindung zum FTP-Server zu öffnen und den Server dazu zu veranlassen, die Datei auf sich selbst hochzuladen, indem eine Passivmodus-Datenverbindung an eine Aktivmodus-Datenverbindung geleitet wird. Diese Lösung wird in der antwort von @SaadAchemlal angezeigt.


Randnotiz: Menschen verwechseln oft move mit copy . Falls Sie tatsächlich verschieben wollen, ist das eine ganz andere Frage. Das Verschieben von Dateien auf FTP wird weitgehend unterstützt.

20
Martin Prikryl

Ja, das FTP-Protokoll selbst kann dies theoretisch unterstützen. Der FTP RFC 959 erläutert dies in Abschnitt 5.2 (siehe Abschnitt "Wenn Daten zwischen zwei Servern übertragen werden sollen, A und B ..."). Ich kenne jedoch keinen Client, der diese Art der Steuerung von zwei Servern bietet.

Beachten Sie, dass diese Methode die Datei mithilfe eines eigenen Netzwerks vom FTP-Server auf sich selbst übertragen kann. Dies ist nicht so schnell wie bei einer lokalen Dateikopie, aber es wäre fast sicher schneller als das Herunterladen und das erneute Laden der Datei.

9
Greg Hewgill

Der nachstehende Code veranlasst den FTP-Server, die Datei auf sich selbst hochzuladen (unter Verwendung einer Loopback-Verbindung). Der FTP-Server benötigt den passiven und den aktiven Verbindungsmodus.

Wenn Sie die FTP-Befehle verstehen möchten, finden Sie hier eine Liste: Liste der FTP-Befehle

function copyFile($filePath, $newFilePath)
{
    $ftp1 = ftp_connect('192.168.1.1');
    $ftp2 = ftp_connect('192.168.1.1');
    ftp_raw($ftp1, "USER ftpUsername");
    ftp_raw($ftp1, "PASS mypassword");
    ftp_raw($ftp2, "USER ftpUsername");
    ftp_raw($ftp2, "PASS mypassword");

    $res = ftp_raw($ftp2, "PASV");
    $addressAndPort = substr($res[0], strpos($res[0], '(') + 1);
    $addressAndPort = substr($addressAndPort, 0, strpos($addressAndPort, ')'));

    ftp_raw($ftp1, "CWD ." . dirname($newFilePath));
    ftp_raw($ftp2, "CWD ." . dirname($filePath));
    ftp_raw($ftp1, "PORT ".$addressAndPort);

    ftp_raw($ftp1, "STOR " . basename($newFilePath));
    ftp_raw($ftp2, "RETR " . basename($filePath));

    ftp_raw($ftp1, "QUIT");
    ftp_raw($ftp2, "QUIT");
}
1
Saad Achemlal

Ich kann Dateien zwischen Remote-Ordnern in Linux-basierten Systemen kopieren. In meinem speziellen Fall verwende ich den sehr häufigen Dateimanager PCManFM:

  • Menü "Gehe zu" -> "Mit Server verbinden"
  • FTP-Anmeldeinformationen usw
  • Öffnen Sie die neue Registerkarte in PCManFM
  • Verbinden Sie sich mit demselben Server
  • Von Tab zu Tab kopieren ...

Es ist etwas langsam, ich denke also, es könnte das Herunterladen und Hochladen der Dateien sein, aber das geschieht automatisch und sehr benutzerfreundlich.

1
aesede

Es gelang mir, dies mit Hilfe von WebDrive zu tun, um das FTP als lokalen Ordner einzuhängen, und dann die Dateien mit filezilla direkt in den Ordner "herunterzuladen". Es war etwas langsamer als der Download normalerweise, aber Sie brauchen nicht den Platz auf Ihrer Festplatte.

0
Acelasi Eu