Wie FTP mehrere Ordner auf einen anderen Server mit Mput in Unix?

18

Ich bin auf einem Server angemeldet (mit Putty). Von dort aus verbinde ich mich per FTP mit einem anderen Server. Ich möchte mit mput mehrere Ordner vom ersten Server auf den zweiten Server kopieren.

Mögen:

ftp> mput folder1 folder2 folder3

Aber ich bekomme "Ordner1: keine einfache Datei" ... und so weiter. Jeder dieser Ordner hat Unterordner, Dateien (manche binär, manche nicht).

Wie kann ich erreichen, was ich will, ohne das Zeug zu zippen und dann zu übertragen?

7ochem
quelle

Antworten:

19

Befehlszeile FTP ist ziemlich primitiv.

Sie können Dateien / Ordner nicht rekursiv an einen Remotestandort senden.

Wenn Sie eine Verzeichnisstruktur auf der Remote-Seite genauso wie auf der lokalen Seite neu erstellen möchten, müssen Sie mkdirjeden Pfad manuell eingeben und verwenden mput *, um alles in diesem Verzeichnis an die Remote-Seite zu senden.

Zwei Möglichkeiten, um dies zu vereinfachen:

  1. Stoppen Sie die Verwendung des primitiven FTP-Befehls (ncftp ist eine gute Alternative)

  2. Verwenden Sie tar, um die Ordner zu tarieren, die Datei zu senden und auf der anderen Seite zu extrahieren.

Philip Reynolds
quelle
1
+1 für tar-> put-> untar
Dave
1
-1 Da die Frage lautet "Wie kann ich erreichen, was ich will, ohne das Zeug zu komprimieren und dann zu übertragen?", Was bedeutet, dass die Person keinen Shell-Zugriff auf den Remote-Computer hat.
Steen Schütt
11

Dies ist mit dem normalen FTP-Programm nicht möglich, da mput keine Rekursion verwendet. Sie könnten ncftp verwenden und dann 'mput -r folder' aufrufen.

Beste Grüße, Fabian

Halfdan
quelle
Genau das habe ich kürzlich mit einer RHEL 5-Box gemacht. Im EPEL-Paket heißt die ausführbare Datei ncftpput.
Unterdrückungsfeuer
An der Serverkonfiguration kann nichts geändert werden. Ich bin nur ein Benutzer ...
Das hängt von Ihrem Kunden ab. Nicht auf dem Server.
4.
Ich mache es lieber so. Vielen Dank.
Mojtaba Rezaeian
11

Ich habe ein Bash-Skript erstellt:

#!/bin/bash
ftp_site=ftp.yoursite.net
username=my_user_name
passwd=my_password
remote=/path/to/remote/folder
folder=$1
cd /path/to/local/folder/$folder
pwd
ftp -in <<EOF
open $ftp_site
user $username $passwd
mkdir $remote/$folder
cd $remote/$folder
mput *
close
bye

und nannte es mit

find . -type d -exec ./recursive-ftp.sh {} \;

scheint zu funktionieren.

Stein Åsmul
quelle
0

Secure Copy scp hat ein rekursives -r-Flag, das Sie möglicherweise nützlich finden.

Michael
quelle
Frage ist über einfachen FTP-Zugang .. nicht scp / sftp!
Mojtaba Rezaeian
-1

Öffnen Sie die Powershell-CD in dem Verzeichnis, das Sie hochladen möchten, und führen Sie die folgenden Befehle aus:

1. gci -r | % {if ($_.PSIsContainer) {$t = $((($_.fullname -split "\\")[$(((pwd) -split "\\").length)..200]) -join "/"); "mkdir ""$t""`r`nmput ""$t/*"" ""$t"""}} | sc .\mput_all
2. notepad .\mput_all

Fügen Sie die Ergebnisse in Ihr FTP-Fenster ein. Genießen. Vergessen Sie auch nicht, mput * hinzuzufügen, um alle Dateien aus dem Basisverzeichnis zu übertragen.

Lerne Powershell
quelle
6
Seit wann läuft PowerShell auf einem Unix-System?
Michael Hampton