Shell Script サンプル
データベースバックアップ
#!/bin/sh
# バックアップ先ディレクトリ
# BKDIR=/var/www/sample/backup/database/full
BKDIR=/data/sample/backup/database/full
# 本スクリプトパス
MYPATH=$(cd $(dirname $0);pwd)
#世代管理(何日分残すか)
DAYAGO="31"
# MySQユーザー
USER=admin
# MySQLパスワード
PASS=password
# 日付・時刻取得し変数に代入
TIMESET=`date +%Y%m%d-%H%I%M`
# バックアップ先ファイル名を設定
# 設定ファイルにあるファイル名+日付.tar.gzする
BKFILE=${BKDIR}/mysql.$TIMESET.tar.gz
# データベース名取得
DBNAME=sample
# DBNAMEデータベースをmysqldumpでバックアップ
# $?は最後に実行したコマンドの戻り値
mysqldump --user=${USER} --password=${PASS} $DBNAME --opt > ${BKDIR}/$(date "+${DBNAME}-%Y%m%d%H%M%S").sql | logger -t mysqldump
if [ $? = 0 ]; then
logger -t mysqldump "Backup OK mysqldump:${DBNAME}"
else
# 失敗したらその旨を表示かつ、ログに保存、メール送信
logger -t mysqldump "Backup NG mysqldump:${DBNAME}"
fi
# yyyymmdd形式のファイルから古い物を削除
# 削除する日付(yyyymmdd)を設定(DAYAGO日前の日付を求める)
tday=`date -d "${DAYAGO} day ago" +%Y%m%d`
# 対象Dir配下のファイル名をwhileに渡し「$list」となる
ls $BKDIR | while read list
do
#ファイル名に「数字x14」が含まれている場合、
if expr "$list" : "sample\-[0-9]\{14\}.sql" > /dev/null; then
# $listから、「yyyymmdd」を取り出しepoch時間($fday)にする
fday=`expr $list : "sample\-\([0-9]\{8\}\)[0-9]\{6\}.sql"`
#ファイル名から取得した「yyyymmdd」がDAYAGOの「yyyymmdd」よりも小さいとき削除
if [ -n "$fday" ] && [ $fday -lt $tday ]; then
# echo する
# echo $list
#削除する
`sudo rm -f ${BKDIR}/${list}`
fi
fi
done
#!/bin/bash
#
# 最新のSSL証明書(公開鍵)と秘密鍵をコピーして圧縮
# sudo ./script.sh
#
set -eu
SRC_DIR=/etc/letsencrypt/archive/hiroshi-sawai.com
DIST_PARENT_DIR=/home/ubuntu
DIST_DIR=ssl
DIST_FULL_DIR="${DIST_PARENT_DIR}/${DIST_DIR}"
LatestChainName=$(sudo ls -val $SRC_DIR | grep -E "fullchain[0-9]+.pem" | tail -n 1 | awk 'NR=1 {print $NF}')
LatestChainPath="${SRC_DIR}/${LatestChainName}"
LatestPrivkeyName=$(sudo ls -val $SRC_DIR | grep -E "privkey[0-9]+.pem" | tail -n 1 | awk 'NR=1 {print $NF}')
LatestPrivkeyPath="${SRC_DIR}/${LatestPrivkeyName}"
if [ ! -e $DIST_FULL_DIR ]; then
mkdir -p $DIST_FULL_DIR
echo "ok: Make distination directory"
fi
if [ -e $LatestChainPath ] && [ -e $LatestPrivkeyPath ] ; then
cp $LatestChainPath "${DIST_FULL_DIR}/fullchain.pem"
cp $LatestPrivkeyPath "${DIST_FULL_DIR}/privkey.pem"
echo "ok: Copy latest fullchain.pem, privkey.pem"
fi
cd $DIST_PARENT_DIR
tar zcf ssl.tar.gz $DIST_DIR
echo "ok: compressing distination directory"
chown ubuntu:ubuntu ssl.tar.gz