【Linuxコマンド】FTPでディレクトリごと一括転送

「ncftp」コマンドの使用方法です。

ダウンロード

公式サイト からダウンロード可能。

ncftp_ダウンロードリンク
source codeリンクを右クリックして「名前を付けてリンク先を保存」を押下。

コマンド上からダウンロードするのであれば以下の通り。バージョンは任意のものでOK。

$ wget ftp://ftp.ncftp.com/ncftp/ncftp-3.2.6-src.tar.gz


解凍

$ tar -xzvf ncftp-3.2.6-src.tar.gz

オプションについては 以前の記事 を参照。 解凍後のディレクトリ構成は以下の通り。

ncftp_ディレクトリ構成

インストール

$ ./configure
$ make
$ make install

解凍して得られたディレクトリ内で実行すること。本件のケースで言えば「ncftp-3.2.6」の中。

実行

$ ncftpput -u testuser -p XXXXXX -P 21 -d ./ncftp.log -vmR www.test.com test_dir org_dir

-u:ユーザ名
-p:パスワード
-P:ポート番号
-d:実行ログファイル
-v:進捗状況(プログレスバー)の表示
-m:転送先にディレクトリを作成
-R:ディレクトリツリーを再帰的にアップロード
www.test.com:接続先
test_dir:転送先ディレクト
org_dir:転送元ディレクト

余談

以前、アパレル関係の仕事で、多方向から撮影された衣服の画像を大量に転送する必要があり、その際にこのコマンドを使用しました。尚、その当時はただ転送するだけではなく、

PHPImageMagickを使用して画像を分割する。

分割した画像を転送する。

転送先で画像を結合する。(元に戻す)

という事をしていたことも、記事を書いていて思い出しました。
ただ何が原因でこのような対応を行ったのかすっかり失念。。
転送する画像が増えるので転送時間が原因では無さそうですが。
もしお悩みの方がいらっしゃれば解決の一助にでもなれば幸いです。