Jak przesłać wiele plików FTP z wiersza poleceń?


25

Chciałbym przesłać przez FTP zawartość katalogu, ale nie mogę znaleźć właściwego sposobu na użycie znaku wieloznacznego. Wydaje się, że byłoby to powszechne; czy całe moje podejście jest złe?

Poleceniem jest

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

Wywołany skrypt znajduje się poniżej. Zaktualizowano według billinkc.

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

Skrypt się uruchamia, żadne pliki nie są kopiowane, a sesja FTP pozostaje otwarta.

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>

Wniosek

Musiałem dodać flagę, aby wyłączyć polecenie PROMPT:

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

Odpowiedzi:


36

Przed wydaniem mputpolecenia wydaj promptpolecenie, aby wyłączyć tryb interaktywny. Po wyłączeniu nie powinno to wymagać potwierdzenia każdego pliku dla mput(lub an mget).


3
Dla tych, którzy zastanawiają się „jaka jest składnia tego promptpolecenia”, dosłownie po prostu wpisujesz „monit”, a to przełącza monitowanie z prawdy na fałsz.
Noumenon

2
Innym sposobem wyłączenia interaktywnego monitowania jest użycie -iflagi na samym ftppoleceniu (np ftp -i -s:"C:\Scripts\ftp01" ftpserver.domain.com.). Dokumenty opisują tę -iopcję jako: „Wyłącza interaktywne pytania podczas wielokrotnego przesyłania plików”.
Jesse Webb,

3

Nigdy nie próbowałem używać ścieżki do folderów lokalnych, ale zrobiłem to, zmieniając katalog lokalny ( lcd):

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


1

Użyj mputpolecenia, aby umieścić wiele plików.


1
Tak, właśnie tego używam
mmcglynn 16.11.11

Za zaporą ogniową (szczególnie SOHO lub tanie jednostki klasy biznesowej)? Wbudowany w ftpWindows nie obsługuje trybu PASV, więc transfer się zawiesi i nigdy nie zostanie ukończony.
Chris S

1

Jeśli masz uprawnienia administratora, możesz zainstalować ncftpput . Jest łatwy w użyciu i doskonale nadaje się do rekursywnego przesyłania FTP. Przełącznik transferu rekurencyjnego to -R.

Oprogramowanie jest zawarte w większości dystrybucji Linuksa. W systemie Windows można go zainstalować z Cygwin .


1

Jak wspomniał Tim Haegele, ncftp robi to bardzo płynnie w systemie Linux, jeśli możesz i chcesz go zainstalować:

sudo apt-get install ncftp
ncftp -R ftpserver.domain.com . /Scripts/ftp01

0

To jest skrypt, którego użyłem i który działał dla mnie.

W przypadku ftp1.bat (skrypt):

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

W przypadku ftp.txt (skrypt):

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

Może są części, które nie są konieczne, ale mówię, że to działało dla mnie, mam nadzieję, że to pomaga

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.