スキップしてメイン コンテンツに移動

Wordpressのバックアップを行うシェルスクリプト

前回の記事、

wordpressを手動でバックアップして、新しいドメインへ移行してみる

で、手動で1個1個確認しながら、バックアップをして復元をしたわけですが、まぁこんなことを定期的に手動でやってたら面倒なわけです。

と言うわけで、crontab等で自動的に実行させるべく。シェルスクリプトにまとめてみました。後、前回には入れなかった、ある程度世代を管理しようと思います。と言っても、丸1週間分を残しておこうというものですが。

#!/bin/bash
#
#作業用ディレクトリ作成
#

WORKDIR=`date +%Y%m%d%H%M%S`
echo $WORKDIR
mkdir $WORKDIR

#
# MySQLのダンプ
#
cd $WORKDIR
mysqldump wp_database > dump.sql -u user1 -ppassword

#
# wordpress本体をコピー
#
cp -R /var/www/html/wordpress ./wordpress

#
# まとめて圧縮
#
cd ..
BACKUPFILE="${WORKDIR}bkwp.tar.bz2"
tar cjf $BACKUPFILE $WORKDIR

#
# 作業ディレクトリ削除
#
rm -R $WORKDIR

#
# 世代管理
#
SEDAI=8
BKFILE="*bkwp.tar.bz2"

if [ $(ls $BKFILE|wc -l) -gt $SEDAI ]; then
FILECNT=`expr $(ls $BKFILE|wc -l) - $SEDAI`
for file in `ls -t $BKFILE|tail -n $FILECNT`
do
rm -f $file
done
fi


作業ディレクトリは、単に日付時刻でディレクトリを作成しています。こんな感じで。

$ echo `date +%Y%m%d%H%M%S`
20110509145921


そのディレクトリへ、MySQLからWordpressのデータベースをダンプし、Wordpressを公開しているディレクトリからコピーして、まとめてtar.bz2ファイルに圧縮しています。

実行後に出力されるファイルの例
20110509144054bkwp.tar.bz2


で、最後に、SEDAI=8としている所で、8世代分だけ残して、後は削除するようにしています。

現時点で、バックアップの圧縮ファイル1つ分が7.4MBあり、これが8個あるので大体60MBあります。うーん、まぁ、こんなもんですかね・・

[PR]第3特集:ここだけは知っておきたい シェルスクリプト事始め

コメント

このブログの人気の投稿

GolangでWindows GUIアプリケーション

GUIアプリ作成の前提 社内ツールとしてexeで配布 開発環境はGoLandを使う 社内ツールとしてexeを配布ということであれば、Visual StudioでC#による開発だと思います。しかしながら、Go言語を習得したいのと、GoLandの補完機能が便利で、Android Studio使っていたこともあり、とっつきやすいという点からGo縛りでGUIアプリケーションを考えたいと思います。 lxn/walk Windows application library kit for Go. Windows向けしか考えていないので、まずこのライブラリなのですが、ボタンやコンボボックスが思ったように並ばなかったり、手軽にイメージボタンを配置したりなど、簡単にレイアウトを変更できない課題に直面しました。レイアウト作成だけで時間を取られてしまいます。そう言えば、Androidアプリ開発のときは、XMLでデザイン部分を切り離してたのを思い出して、今回の調査の運びとなりました。 fyne-io/fyne Cross platform native GUIs designed for Go based on Material Design. Supports: Linux, macOS, Windows, BSD, iOS and Android. walkと比べると、クロスプラットフォームで作成できるのですが、こちらもコードの中にデザインを書いていく形でした。 therecipe/qt therecipe/qt allows you to write Qt applications entirely in Go or JavaScript. Qt Creatorなるものがあるようで、デザイン部分を切り離せる印象はあるものの、最新のPCでもビルドに時間がかかるようで、学習コストもかかるという記事を見かけて断念しました。 どうしたものかとツイートしましたら、下記のようにご助言をいただいた。 同じ課題に対し色々試した結果、PWAのフルキャッシュドに落ち着いた。中身はGo+WASMで。 https://t.co/e60whDTV16 — のぼのぼ📡 (@nobonobo) July 21, 2020 PWA 早速調べてみました。Googleが進めているプロジェクトで、ネイティブアプリのよ

Javaでprivateなfieldやmethodにアクセスする

JUnitでテストしてると、privateなフィールドにアクセスして、値を参照したりセットしたりしたくなるわけですが、よく使うのでメモしておきます。 例えば、次のような対象のクラスがあるとします。 public class ParentClass { private String hoge = "ParentClass!!"; public void dispMsg() { System.out.println("dispMsg:" + hoge); } private void privateDispMsg(String msg) { System.out.println("dispMsg:" + msg); } }

Eclipseで一通り基本的なGitを使ってみる

備忘録的にまとめておきたいと思います。おかしな点があればご指摘いただければ幸いです。 目次 環境 プロジェクト作成~初コミットまで コミットの履歴&差分を見る 元に戻す ブランチについて ブランチを作成してみる ブランチを統合するには マージする Rebaseする ローカルリポジトリからプロジェクトを取り込む コミットしたメッセージの修正 環境 Eclipse IDE for Java Developers:Juno Service Release 1 Git:上記Eclipseのプリインストール版