Linux (UNIX) でディレクトリを再帰的に FTPアップロードする方法

結論から言うと「NcFTP使いましょう」ということで。

どんなFTPクライアント使っても出来そうな気がしたんですが、 LFTP、Wget、cURLのどれも駄目そうでした(汗

インストール

CentOSの場合、標準のリポジトリにはNcFTPはないので、 EPELからインストールします。

使い方(インタラクティブ編)

NcFTPを対話的に使う時の使い方は以下の通りです。

ncftp [オプション] リモートホスト名
    または
ncftp [オプション] ftp://ホスト名/ディレクトリ名/

-u ユーザ名
-p パスワード
-P ポート番号

anonymous FTPでない時は -u オプションでユーザ名を与えないと いきなり Login incorrect と言われてしまうので注意。

NcFTPのコマンドプロンプトが出たら、アップロードしたいディレクトリまで cd で移動して、 put -R でアップロードします。

ncftp> cd foo
ncftp> put -R bar

使い方(バッチ編)

バッチ的に使う時は ncftpput というコマンドが使えます。 起動方法、代表的はオプションは以下の通り。 FTPのURL (ftp://ftp.examples.com/… というやつ)は使えないみたいなので注意(汗

ncftpput [オプション] リモートホスト名 リモートディレクトリ ローカルファイル...

-R ディレクトリ以下を再帰的にコピー
-u ユーザ名
-p パスワード
-P ポート番号
-m リモートディレクトリが存在しなければ作る
-z resume transfer (転送途中のファイルがある時、続きを転送)
-Z resume transfer しない (デフォルト)

今回は「ディレクトリ以下を再帰的にアップロードする」のが目的なので、-Rは必須。 大量のファイルをアップロードするなら -z も付けておいた方がいいでしょう。

ローカルの bar というディレクトリを、 ftp.examples.com の foo というディレクトリにアップロードする例 (FTPのユーザ名は hoge):

ncftpput -R -u hoge ftp.examples.com foo bar
スポンサーリンク
スポンサーリンク:

フォローする