コマンドラインから複数のファイルをFTPで送信するにはどうすればよいですか?


25

ディレクトリの内容をFTPで送信したいのですが、ワイルドカードを使用する正しい方法が見つからないようです。これはよくあることのようです。私のアプローチ全体が間違っていますか?

コマンドは

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

呼び出されるスクリプトは次のとおりです。billinkcごとに更新。

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

スクリプトが開始され、ファイルはコピーされず、FTPセッションは開いたままになります。

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>

結論

PROMPTコマンドを抑制するフラグを追加する必要がありました。

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

回答:


36

mputコマンドを発行する前に、コマンドを発行してpromptインタラクティブモードを無効にします。いったんオフになると、mput(またはmget)の各ファイルの確認を求められることはありません。


3
「このpromptコマンドの構文は何ですか」と思っている人のために、「prompt」と入力するだけで、プロンプトがtrueからfalseに切り替わります。
ヌメノン

2
対話型プロンプトを無効にする別の方法は-iftpコマンド自体にフラグを使用することです(例ftp -i -s:"C:\Scripts\ftp01" ftpserver.domain.com)。ドキュメントでは、-i「複数のファイル転送中に対話型プロンプトをオフにする」とオプションについて説明しています。
ジェシーウェッブ

3

ローカルフォルダーにパス名を使用しようとしたことはありませんが、ローカルディレクトリ(lcd)を変更することで実行しました。

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


1

mputコマンドを使用して、複数のファイルを配置します。


1
はい、それは私が使用しているものです
mmcglynn

ファイアウォールの背後(特にSOHOまたは安価なビジネスグレードユニット)ですか?ftpWindowsに組み込まれているものはPASVモードをサポートしていないため、転送はハングして完了しません。
クリスS

1

管理者権限がある場合は、ncftpputをインストールできます。使いやすく、再帰的なFTPアップロードに最適です。再帰的転送のスイッチは-Rです。

このソフトウェアは、ほとんどのLinuxディストリビューションに含まれています。Windowsの場合、Cygwinでインストールできます


1

Tim Haegeleが述べたように、ncftpは、Linuxでこれを非常にスムーズに行います。

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

0

これは私が使用し、私のために働いたスクリプトです。

ftp1.bat(スクリプト)の場合:

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

ftp.txt(スクリプト)の場合:

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

必要のない部分もあるかもしれませんが、私にとってはうまくいったのでそれを置いています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.