ターミナルからFTPサーバーにファイルをアップロードしたい

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

はじめに

いろいろ方法はあるかと思いますが、今回はCurlコマンドを使用してみたいと思います。

MacにはCurlは標準装備されているので特にインストールなどは不要です。

さっそくアップロードしてみましょう。コマンドは下記のようになります。

curl -T (ファイル名) -u (ユーザー名):(パスワード) ftp://(ホスト名)/(パス)

たとえば下記のような場合

1. ファイル名 sample.txt
2. ユーザー名 hoge
3. パスワード hogehoge
4. ホスト ftp://test.net
5. パス site/root/test

下記のように記載します。

curl -T sample.txt -u hoge:hogehoge ftp://test.net/site/root/test/

一つ、注意点ですが、パスの最後に「/(スラッシュ)」を忘れないようにしてください。
忘れるとエラーが出てしまいます。

次に、カレントディレクトリにあるファイルをすべてFTPサーバーにアップロードする方法について考えてみたいと思います。

一つ一つファイルをアップロードするのにコマンドを打つのは現実的ではないので
シェルスクリプトを書いてみたいと思います。
カレントディレクトリのファイルをすべて送信するなら下記のような感じになります。

#!/bin/bash
MY_DIRNAME=$(dirname $0)
cd $MY_DIRNAME

files=(`ls -1`)

for file in ${files[@]}
do
  curl -T sample.txt -u hoge:hogehoge ftp://test.net/site/root/test/
done

if [ $? = 0 ]; then
  echo "終了"
else
  echo "エラー発生"
fi

exit 0

次はカレントディレクトリの中でPDFファイルのみをアップロードする方法について考えてみます。
シェルスクリプトについては下記のようになります。

#!/bin/bash
MY_DIRNAME=$(dirname $0)
cd $MY_DIRNAME

files=(`ls -1`)

for file in ${files[@]}
do
  case $file in
    *.pdf)
          curl -T sample.txt -u hoge:hogehoge ftp://test.net/site/root/test/
        ;;
    *)
        :
  esac
done

if [ $? = 0 ]; then
  echo "終了"
else
  echo "エラー発生"
fi

exit 0

こんな感じですかね?

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

SNSでもご購読できます。

コメントを残す

*

CAPTCHA