3日坊主アプリ開発 162〜163日目 添付メール


    ∩∩
   (´・ω・)
   _| ⊃/(___
 / └-(____/
  ̄ ̄ ̄ ̄ ̄ ̄ ̄

  • 今回の作業

対人戦の実装 15~16時間目(全20時間)
 

今回は、メールにファイルを添付するコマンドを調べました。

サーバはCentOS6です。

以下、忘備録です。

メール送信のための準備は済んでいるものとします。

 

uuencodeが必要になるため、予めインストールします。

# yum -y install sharutils

ファイルを添付してメールを送るコマンドは以下の通りです。

# uuencode ./test.png test.png | mail -s “uuencodeで添付するよ” メールアドレス

aオプションでも添付できます。

# echo “本文” | mail -s “こっちはaオプションだよ” -a test.png メールアドレス

これで添付メールが送れました!!

 

次に、メール送信を自動化します。毎日午前3時に、mysqlの特定データベースをダンプしてzip圧縮し、そのzipファイルをメールに添付して自動送信するようにしました。

/var/backup/mysqlディレクトリに一時的なバックアップファイルを置くことにします。
/var/backupディレクトリにメールを送信するスクリプトを作ります。
そしてcronでスクリプトをキックします。

具体的な内容は以下の通りです。

 

まずmysqlの接続情報ファイルを作成します。

# vi /var/backup/my.conf
—– ここから —–
[client]
user = ユーザ
password = パスワード
host = localhost
—– ここまで —–

次にスクリプトです。

# vi /var/backup/backup_mysql.sh
—– ここから —–
#!/bin/sh

# 保存期間
period=90
# 保存場所
dirpath=’/var/backup/mysql’
# ファイル名
filename=`date +%Y%m%d`

# ダンプ実行
# –single-transaction 一貫した状態をダンプ ※InnoDBのみ
mysqldump –defaults-extra-file=/var/backup/my.conf –single-transaction –databases データベース名 > $dirpath/$filename.sql

# 圧縮して元のsqlファイルを削除
zip -P パスワード $dirpath/$filename.zip $dirpath/$filename.sql
rm -f $dirpath/$filename.sql

chmod 700 $dirpath/$filename.zip

# 添付してメール送信
uuencode $dirpath/$filename.zip $filename.zip | mail -s “db backup” メールアドレス

# 保存期間を超えたら削除
oldfile=`date –date “$period days ago” +%Y%m%d`
rm -f $dirpath/$oldfile.zip
—– ここまで —–

一応、サーバ内に90日間保存しておくことにしました。90日を超えたファイルは逐次削除されますので、バックアップファイルが増加し続けることはありません。

最後に、毎日午前3時にこのスクリプトをキックして完了です。

# crontab -e
—– ここから —–
0 3 * * * /var/backup/backup_mysql.sh
—– ここまで —–

 

これで対人サーバがこの世から消し飛んでもバックアップデータがあるので安心です。

最悪1日巻き戻りますけど・・・

え?今回の作業は対人戦の実装じゃないのかって?

今回は対人戦を行うにあたって、各ユーザーのデータを格納するためのデータベースのバックアップ処理となります。

下準備の下準備みたいな感じです。
次からデータベース設計になります。

残り4時間しかない・・・

  • 明日の予定

対人戦の実装 17時間目(全20時間)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です