ファイルのアップロードやダウンロードに関するシェルスクリプトなんぞを。
地味ですが、以外に登場頻度は高いかと。
FTP
小規模な案件だとサーバーにSSHで入れないなんてことは結構あります。
その場合、FTPでなんとかせざるをえませんが、WinSCPやFileZilaでポチポチやってもいいですが、一応シェルスクリプトを紹介。複数サーバーの同一ファイル・ディレクトリに一括でダウンロード&アップロードなんて時にいいかも。
ダウンロード
1 2 3 4 5 6 7 8 9 10 11 12 |
SERVER="ホスト名" USER="ユーザー名" PASS="パスワード" ftp -n <<END open ${SERVER} user ${USER} ${PASS} cd 移動先のディレクトリ ascii get 取得したいファイル名 quit END |
が、このコマンドだと再帰的に階層をダグって一気に取得みたいなことができないようです。
階層を辿って一気に取得するにはwgetで取得できます。
1 |
wget -r -l 0 ftp://${USER}:${PASS}@${SERVER}/サーバーのパス |
ほぼワンライナーでかけますね・・。
アップロード
やったことありませんが、どうやらcurlコマンドでやる方が良さげなようです。ダウンロードもcurlでいいかも・・
参考リンク
SCP
ほとんどの環境ではFTPを使わず,SSHでサーバーにログインをすることが多いと思うので、こちらの方が使用頻度はたかいでしょう。
アップロード
1 2 |
scp -P ${PORT} -i ${SSH_KEY} ${myserver_path} ${USER}@${HOST}:${remote_path} #鍵認証がないときは-i ${SSH_KEY}をはぶきます。 |
ダウンロード
1 2 |
scp -P ${PORT} -i ${SSH_KEY} ${USER}@${HOST}:${remote_path} ${myserver_path} #鍵の有無に関してはアップロードと同様 |
実際のサンプル(自動ログイン含む)