【backup.cgi】

更新 新規 編集 設定 一覧
#!/usr/bin/perl -w
#------------------------------------------------------------------------------#
# 機能名 : cgi-Files Backup
# 機能概要 : cgi-files以下フォルダのBackupファイルを作成する(Excel書式)
# 作成者 : Ryota Sasabe
# 作成履歴 : Ver0.01 2005.03.02 新規作成
#------------------------------------------------------------------------------#
require "../lib/system.pl";
&init('ScriptCharCode' => 'euc', 'HtmlCharCode' => 'sjis', 'FormInput' => 1);
################################################################################
#◆初期情報設定
my $SoftName = 'cgi-files Backup';
my $ScriptName = 'backup.cgi';
my $SaveDir = "$BaseDir/cgi-files/backup";
my $FileDir = "$BaseDir/cgi-files/" . $in{'Directory'};
my %html = &get_html_style('KeyWiki');
my $tabstr = ' ';
my $today = &get_time('LocalTime', Length => '8');
my $timeout = 60;
my $starttime = time;
####################
my @addcols = ('filename');
####################
## G-ID認証
if ($in{'G_ID'}) {
%G_ID = &get_userinfo( &check_gid($in{'G_ID'}) );
&error($resource{'NotAdminGid'}) unless ($SpecialUser{$G_ID{'UserNo'}});
} else {
&show_gid_input_form($ScriptName, %html);
}
## html header
$HTML .= &get_html_header("$SoftName", %html);
$HTML .= " <hr color='$html{'BodyHrColor'}'>";
## Directory選択
if (!$in{'Directory'}) {
$HTML .= "<form action='$ScriptName'>";
$HTML .= "■Backup Directory<br>";
$HTML .= "<input type='text' name='Directory' value='keywiki'>";
$HTML .= "<input type='hidden' name='G_ID' value='$in{'G_ID'}'>\n";
$HTML .= "<input type='hidden' name='Case' value='Folder'>";
$HTML .= "<input type='submit' value='送信'>";
$HTML .= "</form>";
## Folder選択
} elsif ($in{'Case'} eq 'Folder') {
$HTML .= "■Backup $in{'Directory'}<br>";
$HTML .= "<form action='$ScriptName'>\n";
$HTML .= "<input type='hidden' name='G_ID' value='$in{'G_ID'}'>\n";
$HTML .= "<input type='hidden' name='Case' value='Backup'>\n";
$HTML .= "<input type='hidden' name='Directory' value='$in{'Directory'}'>";
opendir(DIR, $FileDir) || &error("Can't Open $FileDir");
foreach $dirname (sort grep(!/\./ , readdir(DIR))) {
$HTML .= "<input type='checkbox' name='$dirname' value='on'>$dirname<br>\n";
}
close(DIR);
$HTML .= "<input type='submit' value='送信'>\n";
$HTML .= "</form>";
} elsif ($in{'Case'} eq 'Backup') {
## 対象フォルダの取得
foreach my $name (sort keys %in) {
push(@dirname, $name) if ($in{$name} eq 'on');
}
## 項目追加(ファイル名)
$OUT = join("\t", @addcols, @dirname) . "\n";
## 対象ファイルを順に読込み、配列に格納
foreach $dirname (@dirname) {
foreach $filename ( &read_directory("$FileDir/$dirname") ) {
open(IN, "$FileDir/$dirname/$filename") || next;
$file = join("", <IN>);
close(IN);
&convert_jcode(\$file, 'sjis', 'euc') if ($in{'Directory'} =~ /^keywiki/);
$file =~ s/\t/$tabstr/g;
$file{$filename}{$dirname} = &trim($file);
&error("$timeout秒経過したためタイムアウトになりました。") if time - $starttime > $timeout;
}
}
## 配列に格納した値をタブ区切テキストに保存
foreach $filename (keys %file) {
my @values;
push(@values, $filename);
foreach $dirname (@dirname) {
push(@values, $file{$filename}{$dirname});
}
$line = join("\t", map {(s/"/""/g or /[\r\n\t]/) ? qq("$_") : $_} @values);
$OUT .= "$line\n";
}
open(OUT, "> $SaveDir/$in{'Directory'}_bk$today.dat");
print OUT $OUT;
close(OUT);
## 処理結果html出力
$HTML .= "$FileDir/$dirnameのバックアップが完了しました。<br>\n";
$HTML .= join("<br>\n", @dirname);
}
$HTML .= &get_html_footer($SoftName, %html);
&print_html($HTML);
exit;
__END__

更新者:りょうた 2005-03-08 (火) 09:33:40
作成者:りょうた 2005-03-08 (火) 09:33:05

■キーワード検索


KeyWiki Ver 0.6.9
(c) 2004 Ryota