Wie kann ich mehrere Dateien über die Befehlszeile per FTP übertragen?

25

Ich möchte den Inhalt eines Verzeichnisses per FTP übertragen, finde aber anscheinend nicht den richtigen Weg, einen Platzhalter zu verwenden. Es scheint so, als ob dies eine übliche Sache wäre; ist mein ganzer Ansatz falsch?

Der Befehl lautet

ftp -s:"C:\Scripts\ftp01" ftpserver.domain.com

Das aufgerufene Skript ist unten. Aktualisiert per billinkc.

username
password
ascii
cd "/destinationfolder"
lcd "C:\Backup"
mput *.bak
close
quit

Das Skript wird gestartet, es werden keine Dateien kopiert und die FTP-Sitzung bleibt geöffnet.

230 User username Logged in Successfully
ftp> ascii
200 TYPE Command OK A
ftp> cd "/destinationfolder"
250 Directory successfully changed to "/destinationfolder"
ftp> lcd "C:\Backup"
Local directory now C:\Backup.
ftp> mput *.bak
mput 9829980.bak? close
mput 6406766.bak? quit
ftp>
ftp>

Fazit

Ich musste das Flag hinzufügen, um den PROMPT-Befehl zu unterdrücken:

ftp -i -s:"C:\Scripts\ftp01" ftpserver.domain.com
mmcglynn
quelle

Antworten:

36

Geben Sie vor der Ausgabe des mputBefehls einen promptBefehl zum Deaktivieren des interaktiven Modus ein. Sobald dies deaktiviert ist, sollten Sie nicht mehr aufgefordert werden, jede Datei für das mput(oder ein mget) zu bestätigen .

ƬᴇcƬᴇιʜ007
quelle
3
Wenn Sie sich fragen, wie die Syntax dieses promptBefehls lautet , geben Sie einfach "prompt" ein und die Eingabeaufforderung wechselt von "true" zu "false".
Noumenon
2
Eine andere Möglichkeit, die interaktive Eingabeaufforderung zu deaktivieren, besteht darin, das -iFlag im ftpBefehl selbst zu verwenden (z ftp -i -s:"C:\Scripts\ftp01" ftpserver.domain.com. B. ). In den Dokumenten wird die -iOption folgendermaßen beschrieben : "Deaktiviert die interaktive Eingabeaufforderung bei mehreren Dateiübertragungen."
Jesse Webb
3

Ich habe noch nie versucht, den Pfadnamen für lokale Ordner zu verwenden, habe dies jedoch durch Ändern des lokalen Verzeichnisses ( lcd) getan :

username
password
ascii
cd "/destinationfolder"
lcd Backup
mput *.bak
close
quit
billinkc
quelle
2

Versuchen Sie, die Zeile prompt nkurz vor der mputZeile einzufügen

Horatio
quelle
1

Verwenden Sie den mputBefehl, um mehrere Dateien abzulegen.

Chris S
quelle
1
Ja, das ist, was ich benutze
mmcglynn
Hinter einer Firewall (insbesondere SOHO oder billige Business-Grade-Einheiten)? Der ftpin Windows integrierte PASV-Modus wird nicht unterstützt, sodass die Übertragung hängen bleibt und niemals abgeschlossen wird.
Chris S
1

Wenn Sie über Administratorrechte verfügen, können Sie ncftpput installieren . Es ist einfach zu bedienen und eignet sich hervorragend für rekursive FTP-Uploads. Der Schalter für die rekursive Übertragung ist -R.

Die Software ist in den meisten Linux-Distributionen enthalten. Für Windows ist es mit Cygwin installierbar .

Tim Haegele
quelle
1

Wie Tim Haegele sagte, funktioniert ncftp unter Linux sehr reibungslos, wenn Sie in der Lage und bereit sind, es zu installieren:

sudo apt-get install ncftp
ncftp -R ftpserver.domain.com . /Scripts/ftp01
Collin Anderson
quelle
0

Dies ist das Skript, das ich verwendet habe und das für mich funktioniert hat.

Für ftp1.bat (Skript):

ftp -i -s:\tmp\ftp.txt

Für ftp.txt (Skript):

Open ip
username
password
prompt
lcd C:\YourFolder\YourFolder
binary
cd /DestinationFolder
prompt
mput *.bak
cd ..
disconnect
quit

Vielleicht gibt es Teile, die nicht notwendig sind, aber ich setze es so, wie es für mich funktioniert hat, hoffe, es hilft

Adrian Chacon
quelle