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
mmcglynn
źródło

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).

Ƭᴇcʜιᴇ007
źródło
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
billinkc
źródło
2

Spróbuj wstawić linię prompt ntuż przed mputlinią

horatio
źródło
1

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

Chris S.
źródło
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 .

Tim Haegele
źródło
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
Collin Anderson
źródło
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

Adrian Chacon
źródło