今日はcurlコマンドで複数のファイルをアップロードする方法を紹介します。
通常curlコマンドはファイルしかアップロード、ダウンロードすることができず、ディレクトリ単位で操作することができません。
そのためディレクトリのアップロードを行う場合は少々工夫が必要となります。
通常ディレクトリ単位でのデータのやりとりにcurlを使用する事があまりないためか需要はないかもしれませんが、例えばArtifactory等のサーバーへ特定ディレクトリ配下のファイルをまとめてcurlで処理したい場合に役に立つと思います。
Shell中身
シェルの内容は、前回の応用となっています。
以下のシェルを処理対象ディレクトリの一つ上のディレクトリに作成し、そのディレクトリへcd
コマンドで移動し、./<シェルスクリプト名> <対象ディレクトリ名>
の形式で実行すると、対応するcurlコマンドがバーっと表示されます。
echo
コマンドと"
を外せばそのままcurl
コマンドが実行されます。
# !/bin/sh
if [ $# != 1 ]; then
echo "引数を1つ指定してください"
exit 1
fi
DIRCNT=`pwd | wc -m`
let DIRCNT++
WORKDIR=`pwd`'/'$1
ALLFILES=`pwd`'/'$1'/'*
FINDFILE=`find $ALLFILES -type f`
for NOWFILE in $FINDFILE;
do
NOWDIR=`echo $NOWFILE | cut -c $DIRCNT-`
echo "curl -T "$NOWFILE" http://<サーバーのFQDN or IP>/"$NOWDIR
done
exit 0
スクリプトの解説は次回行います。