>> i's SQUARE >> UNIXのノウハウ >> FTPを極める

FTPを極める



FTPとは「ファイル・トランスファー・プロトコル」の略で日本語では「ファイル転送プロトコル」といいます。
PCのファイルをサーバに転送したりサーバのデータを別のサーバにコピーしたりする時に使用しますが、 一番多い使い方としては、ホームページ製作者がPCで作成したHTMLファイルをサーバ上にアップしたり サーバのファイルをPCにダウンロードしたりが一般的です。


 ちなみに以下はコマンドプロンプト上で「ftp」を使用した時の一例です。
% ftp adgjm.net ←繋ぎたいIPアドレスかホスト名を指定
(IDとパスワードを入力)
% bin ←転送形式をバイナリに指定、アスキー転送の場合は「asc」
(接続側に対しては「ls」、「cd」コマンドが使用可能)
(ローカル側に対しては「!ls」、「!cd」コマンドが使用可能)
% prompt ←確認メッセージを表示させないようにする場合は「prompt」
% put memo.txt ←1つのファイルをアップロードする場合は「put」
% get memo.txt ←1つのファイルをダウンロードする場合は「get」
% mput *.txt ←複数のファイルをアップロードする場合は「mput」
% mget *.txt ←複数のファイルをダウンロードする場合は「mget」
% reget memo.txt ←転送中断したデータを転送再開する場合は「reget」
% bye ←終了する場合は「bye」


また、定期的に特定のファイルをFTPする事が多い人は、FTP用のバッチファイルを作成しとけば便利です。

▼外部ファイルからFTPコマンドを読み込んで実行
ftp -n -v < /tmp/ftp.txt

▼ftp.txtの中身の例
open adgjm.net
user ID パスワード
cd /home/usr
bin
prompt
mput /work/data/*.exe
mput /work/data/*.jpg
quit

▼FTPを実行するUNIXシェルの例
#!/bin/csh -f

setenv FTP_HOST adgjm.net
setenv FTP_USER ID
setenv FTP_PASS パスワード
setenv FTP_PATH /home/tmp
set LOCAL_DIR = /home/local/work
set FILE_NAME = hogehoge.csv
set FTP_TMP   = $LOCAL_DIR/ftp.txt
set log_path  = $LOCAL_DIR
set log_file  = log.txt
set ck=0
set ct=0
while ($ck == 0 && $ct < 3)
       @ ct = $ct + 1
       set ck=`ping $FTP_HOST 1 | grep alive | wc -l`
       if ( $ck == 0 ) then
           echo "接続先に繋がりません! `date`" >> $log_path/$log_file
           sleep 10
       endif
end
if ( $ck == 0 ) then
       echo "*** 接続エラー ***" >> $log_path/$log_file
       exit 1
endif

if ( -e $LOCAL_DIR/$FILE_NAME ) then
    ftp -v -n  <<EOF >! $FTP_TMP
    open $FTP_HOST
    user $FTP_USER $FTP_PASS
    ascii
    put  $LOCAL_DIR/$FILE_NAME $FTP_PATH/$FILE_NAME
    quit
EOF
    set grep_cnt=`grep '226 [Tt]ransfer complete' $FTP_TMP | wc -l`
    if ($grep_cnt >= 1 ) then
      echo "送信完了☆(`date`)" >> $log_path/$log_file
    else
      echo "*** FTP送信失敗 ***" >> $log_path/$log_file
      exit 1
    endif
else
    echo "***" $LOCAL_DIR/$FILE_NAME "がありません ***" >> $log_path/$log_file
    exit 1
endif

exit $sts

運命は、それが甘美なときも、苦がいときも
それを私は好ましい糧として受け取ろう!
by ヘッセ