2011年05月29日 15:57
#!/usr/bin/perl
#sudo -u orca mkdir /home/orca/backups
#visudo
#orca ALL=NOPASSWD: /sbin/shutdown -h now
#orca ALL=NOPASSWD: /usr/sbin/logrotate /etc/logrotate.conf
#バックアップファイルフォルダ
$PATHBAKFILE = "/home/orca/backups";
#過去何回分のバックアップを残すか
$kai = 10;
print "バックアップして電源を切る Enter\n";
print "バックアップせずに電源を切る 1 Enter\n";
print "電源を切らずに元に戻る 2 Enter\n";
$ans = ;
print "\n";
chomp($ans);
if ($ans eq "2"){ exit 0; }
unless($ans eq "1"){
#過去のバックアップファイルのロテート、削除
print "過去のバックアップファイルのロテート、削除\n";
for($i = $kai - 1; $i >= 1; $i--){
if( -f "$PATHBAKFILE/orca.dump.$i.gz"){
$i1=$i+1;
$re = `mv $PATHBAKFILE/orca.dump.$i.gz $PATHBAKFILE/orca.dump.$i1.gz`;
}
}
if( -f "$PATHBAKFILE/orca.dump"){
$re = `mv $PATHBAKFILE/orca.dump $PATHBAKFILE/orca.dump.1`;
$re = `cd $PATHBAKFILE && gzip orca.dump.1`;
}
print "バックアップ開始。\n";
$re = `/usr/bin/pg_dump -O orca > $PATHBAKFILE/orca.dump 2>$PATHBAKFILE/err.txt`;
$re = `cat $PATHBAKFILE/err.txt`;
if($re ne ""){
print "■■バックアップ異常。■■\n";
print "$re\n";
$in = ;
exit(1);
}
}
#ログのロテート
print "ログをロテートしています。\n";
$re = `sudo /usr/sbin/logrotate /etc/logrotate.conf`;
#電源を切る
print "電源を切ります。\n";
$re = `sudo /sbin/shutdown -h now`;