トップ > Perl Tips > ファイルのバックアップの仕方(応用編)


 ■ ファイルのバックアップの仕方(応用編)

基本編:ファイルのバックアップの仕方(基本編)

今回は機能を追加したバックアップスクリプトを紹介します。
バックアップした日時を入れる機能を追加します。
今回もサブルーチン形式となっております。呼び出し方は下の解説をご覧ください。


<スクリプト>


sub backup {
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime();

$mon++;
$year += 1900;
$mon = sprintf("%.2d",$mon);
$mday = sprintf("%.2d",$mday);
$hour = sprintf("%.2d",$hour);
$sec = sprintf("%.2d",$sec);
$min = sprintf("%.2d",$min);

$date = $year . $mon . $mday . $hour . $min . $sec;

open(IN,"$_[0]");
flock(IN,1);
@FILE = <IN>;
close(IN);

$backup_name = "backup" . $date . "_" . $_[0];
open (OUT,"> $backup_name");
flock(OUT,2);
print OUT (@FILE);
close (OUT);
}



<解説>
処理の流れは「基本編」とほぼ同じです。日時の取得の流れを少し解説します。
localtime()で時間を取得し、整形をします。
localtime()は1970年1月1日0時0分0秒からの経過時間(秒)を、
秒、分、時、日、月、年、(曜日)、(年初からの経過日数)、(サマータイム)
の順に配列の形式で返します。後ろの3つは今回は関係ありません。
以下の要領でデータの整形をします。
・月が1月分少ないので1足す。
・年が1900少ないので1900足す。
1900年代のときに、西暦下2桁で表そうとしたので、このような形になっています。
(これがいわゆる2000年問題ですね)
・月、日、時、分、秒を2桁表示にする。
そして、すべてをつなげて、日時の部分は完成です。

サブルーチンなので、他のスクリプトに組み込むことができます。
呼び出すときは、引数にバックアップするファイル名を指定します。
ex. &backup("bbs.dat");




トラックバック

このエントリーのトラックバックURL:
http://easycgi.xrea.jp/mt-tb.cgi/64