2011年10月28日金曜日

Subversionサーバー シェルスクリプトでデータをバックアップ

  • このエントリーをはてなブックマークに追加


フルバックアップ

#!/bin/bash

FULL_BK_DIR="/usr/local/svnbk/full"
LOGFILE="/var/log/svn-fullbk.`date "+%Y"`"
REPOS_PATH="/var/svn"
DATETIME=`date "+%Y/%m/%d %T"`

if [ ! -d $FULL_BK_DIR ]
then
        mkdir -p $FULL_BK_DIR
fi

echo $DATETIME "****** The full backup of repository is starting!" >> $LOGFILE
FILE=`which svn-backup-dumps`
if [ "$FILE" == "" ]
then
        echo $DATETIME "The svn-backup-dumps script is required!Please install subversion-tools package!" >> $LOGFILE
        echo >> $LOGFILE
        exit 1
fi

svn-backup-dumps -z $REPOS_PATH $FULL_BK_DIR >> $LOGFILE 2>&1
if [ $? -ne 0 ]
then
        echo $DATETIME "◆Error:Failed in full backup!!" >> $LOGFILE
        echo >> $LOGFILE
        exit 1
fi

echo $DATETIME "****** The backup is done" >> $LOGFILE
echo >> $LOGFILE
exit 0

 

差分バックアップ

#!/bin/bash

INCRE_BK_DIR="/usr/local/svnbk/incremental"
LOGFILE="/var/log/svn-incremental.`date "+%Y%m"`"
REPOS_PATH="/var/svn"
DATETIME=`date "+%Y/%m/%d %T"`
CNT_REVISIONS=100

if [ ! -d $INCRE_BK_DIR ]
then
        mkdir -p $INCRE_BK_DIR
fi

echo $DATETIME "****** The incremental backup of repository is starting!" >> $LOGFILE
FILE=`which svn-backup-dumps`
if [ "$FILE" == "" ]
then
        echo $DATETIME "The svn-backup-dumps script is required!Please install subversion-tools package!" >> $LOGFILE
        echo >> $LOGFILE
        exit 1
fi

svn-backup-dumps -c $CNT_REVISIONS -z $REPOS_PATH $INCRE_BK_DIR >> $LOGFILE 2>&1
if [ $? -ne 0 ]
then
        echo $DATETIME "◆Error:Failed in incremental backup!!" >> $LOGFILE
        echo >> $LOGFILE
        exit 1
fi

echo $DATETIME "****** The backup is done!" >> $LOGFILE
exit 0

Hyper-v 親ディスクの容量を拡張してもいいですか?

  • このエントリーをはてなブックマークに追加


今まで、Hyper-vサーバーのローカル領域を節約するのとOS等のインストールの手間を減らすために、検証環境構築時にHypver-vの親ディスク、差分ディスクによる仮想マシンの作成をやっていました。特に問題なく動いていたので、非常に役に立ちました。

しかし、この間、とんでもないことをしてしまいました。その結果、差分ディスクを利用して作った仮想マシンがすべて起動できなくなりました。悔しくてなりません。

とんでもないことって何?それは、多くの仮想マシンのCドライブの空き容量がほとんどなくなり、Cドライブの容量を拡張しようと思って、勝手に親ディスクのサイズを増やしたってことです。何の証拠もなくただ単にうまくいくだろうと思ってやってしまいました。そのため、親ディスクを拡張してはいけないという教訓を得ました。

 

親ディスクを拡張した後に、仮想マシンを起動しようとすると、以下の様なエラーが表示されました。

image

ディスクの検査をしてみると、”差分チェーンが壊れています。”ということがわかりました。

image

 

いろいろ調べみたが、残念ながら、解決法は見つかりませんでした。諦めるしかなかった。。。

しかし、調べている途中で、VhdTool.exeというツールを見つけました。

ディスクの作成や変更、チェーンの修復などができるらしい。

2011年10月12日水曜日

整数のバイナリ表示を取得

  • このエントリーをはてなブックマークに追加


image

ビット演算子を用いて、整数のバイナリ表示を得る

Version 1

void PrintBinary(int x,int d){
    char buffer[33];
    int index=0;
    for(;d>0;d--){
        buffer[index++]='0'+(x&1);
        x>>=1;
    }
    while (index >0 )
        printf("%c",buffer[--index]) ;
    return;
}

 

Version 2

void PrintBinary(int x,int d){
    char buffer[33];
    int index=0;
    while (d >0) {
        if (x & 1)
            buffer[index++]='1';
        else
            buffer[index++]='0';
        x >>= 1;
        d--;
    }
    while (index >0 )
        printf("%c",buffer[--index]) ;
    return;
}