svnリポジトリダンプスクリプト ― 2012年02月11日 08時21分53秒
KURO-BOX/Debian Lenny環境でSubversionリポジトリを管理するようにしています。 自動でsvnadmin dumpを使ったリポジトリバックアップ運用も既に行っていたのですが、1週間に一度単純なdumpを日付のフォルダを作って保存する形でした。
でもその形だと以下の問題があります。
- 更新がなかったリポジトリも毎回バックアップしてしまう
- 途中でリポジトリが壊れた場合差分loadで復元したい
ということで以下の機能を追加
- バックアップ時点のリポジトリのレビジョンを保管
- 保管したレビジョンとその時点のレビジョンに差分がある場合のみバックアップ実行
- 差分がある場合はフルバックアップと差分バックアップの両方を実施
念のためですが「自動」の部分はcronで実施で、ここで紹介するのは単なるスクリプトです。
なお、バックアップ元のディレクトリと保存先のディレクトリはスクリプト内で指定する形。引数(第一引数)で指定するのはリポジトリの名前(相対パス)。 オプション(第二引数)で更に他のディレクトリに最新のバックアップをコピーします。
#!/bin/sh
##########################################
# svn repository dump
##########################################
# setting path
rtop="/mnt/svn"
svnbackupdir="/mnt/backup/svndump"
#
if [ "$1" = "" ]; then
echo "Usage $0 repository-name"
exit
fi
repo=$rtop"/"$1
if [ ! -d $repo ]; then
echo "$repo not found"
exit
fi
echo "## $repo dump start ##"
logger "## $repo dump start ##"
datedir=`date +%F`
echo "today is" $datedir
if [ -d $svnbackupdir ]; then
echo "already exist" $svnbackupdir
else
echo "mkdir" $svnbackupdir
mkdir $svnbackupdir
fi
backupdatedir="$svnbackupdir/$datedir"
backupbase=`echo $1 | tr "/" "_"`
# history save
hisfile="$svnbackupdir/svn_$backupbase.history"
newrev=`svnlook youngest $repo`
echo "$repo revision is $newrev"
backupfile="$backupdatedir/svn_$backupbase.dump"
if [ -f $hisfile ]; then
lastbackup=`cat $hisfile`
echo "$repo last dump revision is $lastbackup"
if [ "$lastbackup" = "$newrev" ]; then
msg="## $repo no change ##"
echo $msg
logger "$msg"
exit
fi
fi
# backup dir create
if [ -d $backupdatedir ]; then
echo "already exist" $backupdatedir
else
echo "mkdir" $backupdatedir
mkdir $backupdatedir
fi
# svndump diff
if [ -f $hisfile ]; then
lowrev=`expr $lastbackup + 1`
difffile="$backupfile""_""$lowrev""_""$newrev"
echo "difffile = $difffile"
msg="svn dump $repo -r $lowrev:$newrev --incremental --> $difffile"
echo $msg
svnadmin dump $repo -r $lowrev:$newrev --incremental > $difffile
logger "$msg"
fi
# svndump all
msg="svn dump $repo --> $backupfile"
echo $msg
svnadmin dump $repo > $backupfile
logger "$msg"
# dump history save
echo $newrev > $hisfile
# copy svndump file
if [ "$2" != "" ]; then
cpdir="$2/$datedir"
if [ -d $cpdir ]; then
echo "already exist" $cpdir
else
echo "mkdir" $cpdir
mkdir $cpdir
fi
echo "svn dump copy $backupfile --> $cpdir"
cp -p $backupfile $cpdir
cp -p $difffile $cpdir
fi
msg="## $repo dump end ##"
echo $msg
logger "$msg"
玄箱HGのカーネル再構築 ― 2011年06月05日 01時40分10秒
kuro-box/HGをdebian/lennyで使っているのですが、最近aptitudeでupgradeしてからsambaのインストール状態とphp5のインストール状態がおかしくなってしまいました。
何の根拠もないのですが、カーネルの状態を変えれば状況が変るかもしれないということと、カーネル再構築する可能性が出てきたため、カーネルソースコードの取得とビルドをお試し中です。
u-bootは使用していませんが、一応uImageも用意しています。 loader.oでのbootを選択していますので、起動後にはumountされているboot用のパーティションのファイルを書き換える必要があります。なので、カーネルイメージのコピーには注意が必要です。
なお、2.6系カーネルの最新バージョンではありませんが、2.6.25系のパッチしか用意されていないので2.6.25系の最終の2.6.25.20を使います。 config_kuroboxhgというファイルはpatchの実行により生成されるファイルですのでtarを展開した時点では存在しません。
# apt-get install gcc ncurses-dev # apt-get install uboot-mkimage $ wget http://www.genbako.com/kurobox-sources-2.6.25.patch $ wget http://www.genbako.com/kurobox-section-mismatch2625.patch $ wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.25.20.tar.gz $ tar xvfz linux-2.6.25.20.tar.gz $ cd linux-2.6.25.20 $ patch -Np1 <../kurobox-section-mismatch2625.patch $ patch -Np1 <../kurobox-sources-2.6.25.patch $ cp config_kuroboxhg .config $ export ARCH=ppc $ make oldconfig $ make vmlinux $ make uImage $ su # mount /dev/hda1 /mnt/tmp # cp -p System.map /mnt/tmp/boot # cd arch/ppc/boot/images # cp -p vmlinux.bin /mnt/tmp/boot # cp -p uImage /mnt/tmp/boot $ make modules $ su # make ARCH=ppc modules_install # reboot $ $ uname -a Linux KURO-BOX 2.6.25.20-kuroboxHG #2 Sun Jun 5 01:28:37 JST 2011 ppc GNU/Linux
玄箱HGにtomcatインストール ― 2011年05月29日 23時59分19秒
別件のAndroidでの簡易POS開発に関連して、とりあえずサーバの実験のためにKURO-BOX/HG(debian linux lenny)にtomcatをインストールしてみた。
インストールといってもまだ単にaptitude installしただけ。
インストール時のログはこちら。
KURO-BOX/HGにsvnサーバリポジトリ構築 ― 2011年05月19日 20時34分10秒
こちらを参考にsvnサーバの環境構築しました。
サーバのハードはKURO-BOX/HG(debian lenny)です。
Windows/Trac Lightningでの運用でもいいのですが、実はこのKURO-BOXはDDNSで外部からアクセスできるようにしているので、外からもアクセスできるsvnサーバとして使うつもり。
なので、svn+sshでのアクセスが可能なようにしました。
ちなみに、svnserveは/etc/init.d/svnserveというようなスクリプトは用意されていないので、fetchmail用のスクリプトを改造しました。
その後、svn+sshでのアクセスが目的であれば、上記のように/etc/init.d/svnserveなどのシェルスクリプトを用意する必要はないことが判明。思い込みって怖い。 詳しくはこちらを参照してください。
beagleboard xM初期起動 ― 2011年05月04日 20時16分50秒
プラネックスのHUB用のACアダプタが5Vという表記でスペック的には対応できるはず。しかし・・・
電圧を測ると無負荷時ではありますが、9Vありますね。保護回路がついていて良かった。
以下は正常な電源供給状態。HT-03Aの付属のアダプタ経由でDoCoMo用のACアダプタを使ってUSBのMINI-Bコネクタで電源供給しています。
ちなみに、普通のUSBケーブルでWindowsPCと接続すると起動時にPanicで落ちます。Windows側ではドライバがないよ、エラーが出ます。
付属のmicroSDカードでの起動は、起動そのものはできますが、延々とbootとrebootを繰り返す状態です。ログはこちら。このログでは途中でユーザボタンを押すことにより、中断してくれていますが、完全にハングアップしています。要するに、いずれにしても使い物になっていません。レビジョンCはまだ正常に起動できないのか、付属品の不良なのかは切り分けていません。
ちなみに、「犬小屋」をつくるのは手間なので、スペーサ程度は以下のように装着してみました。






最近のコメント