#
ドキュメント

Document

自分のための備忘録です。

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