はじめに
SFTPコマンドを使うとサーバーとファイルのアップロードやダウンロードを行うことができます。
対話式に使うことができるので簡単で便利なのですが、定型的な処理を自動で行いたいこともあります。
この記事ではSFTPを使って、自動で処理を行う方法をお伝えします。
概要
シェルファイルからSFTPを呼び出してサーバーとファイルのアップロードやダウンロードを自動で行うサンプルを紹介します。
対象者
- macでターミナルを使っている
- ターミナルでファイルの操作が行える
- テキストエディタを使える
- シェルはzsh(最近のmacはデフォルトでzsh:2022年時点)
関連記事
目次
サンプル
sftpへの接続は鍵認証で行う想定です。
- mac側のホームディレクトリに本日の日付のディレクトリを作る
- 作ったディレクトリに移動する
- サーバー側でも、本日の日付のディレクトリに移動する
- サーバー側のそのディレクトリにあるファイルをダウンロードする
sftp_sample.sh
#!/bin/zsh
# 今日の日付を取得する
today=`date "+%Y%m%d"`
sftp -i 鍵ファイル 接続ユーザー@接続先サーバー << EOF
# mac側:ホームディレクトリへ移動
lcd
# mac側:今日の日付のディレクトリを作る
lmkdir $today
# mac側:今日の日付ディレクトリへ移動
lcd $today
# サーバー側:今日の日付のディレクトリへ移動
cd $today
# サーバーからmacへファイルをダウンロードする
get *
# 終わり
EOF
実行
source sftp_sample.sh
補足説明
sftpコマンドの行末の「<< EOF」はヒアドキュメントと呼ばれるものです。
「<< EOF」からファイル最後の「EOF」までの各行をsftpのコマンドとして送り込みます。
ヒアドキュメントは、シェルの便利な書き方の一つです。