Myページ
ホーム
コミュニティの人々
ソフトウェア
技術紹介
適用分野
Tyzohとは
ご意見お問い合わせ

V.S.A. III

[Secure-SBM:027] データベースのバックアップ

こんにちは,五十嵐です.サービスを閉塞した後にデータベースのバックアップを行えるようにします.今のところ Linux/PostgreSQL のみ対応しています.

sub makebackup : Local {
        my ( $self, $c ) = @_;

        $_ = $c->config->{'Model::SecureSBMDB'}->{connect_info}[0];
        my ( $dbi, $dbd, $dbparams ) = split( ':' );
        my ( @dbparams ) = split( ';', $dbparams );
        my %dbparams;
        foreach my $d (@dbparams){
                my ( $name, $data ) = split( '=', $d );
                $dbparams{$name} = $data;
        }

        my $dbname = (defined $dbparams{dbname})?$dbparams{dbname}:'';

        my $dbuser = $c->config->{'Model::SecureSBMDB'}->{connect_info}[1];
        my $dbpwd = $c->config->{'Model::SecureSBMDB'}->{connect_info}[2];
初期設定の config から dbname などを切り出します.connect_info 配列の 0 番目は dbname など,1 番目はデータベースのユーザ名,2 番目はパスワードになります.

        if( $dbd eq 'Pg' ){
                my $dbhostopt = (defined $dbparams{host})?
"-h $dbparams{host}":'';
                my $dbportopt = (defined $dbparams{port})?
"-p $dbparams{port}":'';
                my $dbfileopt = "-f $backuppath";

                system( "pg_dump -U $dbuser -F t $dbhostopt $dbportopt 
$dbfileopt $dbname" );
                my ( $dev, $ino, $mode, $nlink, $uid, $gid, $rdev, $size, 
                      $atime, $mtime, $ctime, $blksize, $blocks ) 
                        = stat($backuppath);
                my ( $sec, $min, $hour, $mday, $mon, 
                      $year, $wday, $yday, $isdst ) 
                        = localtime($mtime);
                my $filestat 
                        = sprintf( '%s <br />owner:%s group:%s size:%s 
                          <br />mtime: %4d/%02d/%02d %02d:%02d:%02d',
                            $backupfilename, $uid, $gid, $size,
                            $year + 1900, $mon + 1, $mday, $hour, $min, $sec
                        );
                $c->stash->{backupfileinfo} = $filestat;
                $c->stash->{backupfilename} = $backupfilename;
        }else{
                # Not implimented
                $c->stash->{resultmessage} = 'Not implimented yet';
        }
        $c->forward('index');

} # end of makebackup()
dbname が "Pg" かどうかを判断していますが,PostgreSQL の場合に "Pg" を設定していますので,この場合にのみ "pg_dump" を利用してバックアップファイルを作成します.他のデータベースの場合には対応していません.それから,このままだと Windows でも動きません.これは今後の課題.

ファイルを作成したら,ダウンロードできるようにします.
sub getbackup : Local {
        my ( $self, $c, $bfname ) = @_;

        if( $bfname ne $backupfilename ){
                $c->forward('index');
                return 0;
        }

        my $backupfilepath = $backupdir . '/' . $bfname;
        my ( $dev, $ino, $mode, $nlink, $uid, $gid, $rdev, $size, 
$atime, $mtime, $ctime, $blksize, $blocks ) = stat($backupfilepath);

        my $bfcontents = '';

        if( open( BFH, $backupfilepath ) ){
                my $rsize = 1;
                while( $rsize && $size > 0){
                        my $tmp;
                        $rsize = read( BFH, $tmp, $size );
                        $bfcontents .= $tmp;
                        $size -= $rsize;
                }
                close( BFH );
        }

        $c->res->headers->header(
                'Content-Type' => 'application/x-tar;'
                        . 'name="' . $bfname . '";' );

        $c->res->body( $bfcontents );
        $c->forward('index');

} # end of getbackup()
ファイルを読み込んで, body に格納するだけです.ポイントは HTML ヘッダで "Content-Type" を設定することです.

2007/07/14 記

参考:


Keyword: Perl Catalyst Secure-SBM SSBM セキュア・ソーシャル・ブックマーク オープンソース

 

カテゴリ:SBM , 開発日記

タグ:

いかちょー (2007-07-26 12:54) | コメント(0)| トラックバック(12)

トラックバック(12)

トラックバックURL:

No rx online xanax. - Xanax no prescription. (2010年11月30日 11:45)

Xanax online. Lethal dosage xanax. Xanax. Chemical compounds of xanax. 続きを読む

Buy xanax. - Side effects of xanax. (2010年12月14日 10:40)

Xanax. 続きを読む

Buy xanax without prescription in usa. - Xanax. (2010年12月16日 13:03)

Xanax weight gain. When was xanax created. 続きを読む

Cheap xanax. - Buy xanax without prescription. (2010年12月17日 02:28)

Buy xanax. Xanax effect. 続きを読む

How long does xanax stay in your system. - Xanax bars. (2010年12月17日 17:27)

Buy xanax no prescription. Xanax. Xanax effect. Buy xanax without prescriptio... 続きを読む

Xanax. - Xanax. (2010年12月25日 23:09)

Xanax side effects. What is xanax. Xanax during pregnancy. 続きを読む

Xanax overdose. - Xanax withdrawal symptoms. (2010年12月26日 05:27)

Buy xanax. Side effects of drug xanax. Does xanax make sex better. Xanax. Xan... 続きを読む

How to cut down on xanax. - Xanax. (2010年12月26日 15:37)

Xanax while pregnant. Generic xanax 2 mg no prescription. Xanax no prescripti... 続きを読む

Xanax class action. - Xanax. (2010年12月27日 04:46)

Xanax without prescription. 続きを読む

Buy xanax. - Buy xanax. (2010年12月27日 14:52)

Buy xanax. 続きを読む

Xanax. - Xanax 2 mg 180 pills. (2010年12月28日 01:13)

Side effects of drug xanax. Titel auteur datum xanax medication bmnwbbuk. Xanax. 続きを読む

Order xanax online. - Lethal blood levels of xanax. (2010年12月28日 16:03)

Buy xanax no prescription. When was xanax created. Xanax. Xanax 2 milligram. ... 続きを読む

コメント

コメントを投稿

名前

電子メール

URL

ログイン情報を記憶

コメント

プロフィール

いかちょー

いかちょーこと五十嵐智です。
情報セキュリティ分野に興味があります。
一応、CISSP ホルダー。

SF者です。どうぞよろしく。

プロフィール詳細 (Google プロフィール)

RSSフィード

コミュニティの人々 | ソフトウェア | 技術紹介 | 適用分野 | Tyzohとは | ご意見お問い合わせ

Copyright (C) 2004-2011 Nihon Unisys, Ltd. All Rights Reserved.
Powered by Movable Type Open Source