#!/usr/local/bin/perl -w

# This program is that unzip tar.gz file, and Delete 90 days previous tar.gz file.
 
# This program was produced by Hamaguchi on Oct 2, 2016 #


$previous_days = 90;			#何日以前のtar.gz fileを削除するか指定する。
$path = "/raid1/vlf/vlfkap/spectrum";


#************** Unzip tar.gz and copy to regular directory *******************
#print "===Unzip tar.gz and copy to regular directory==="."\n";
$targz_dir = $path."/tmp";

opendir(DIRHD,$targz_dir);
@targz_data_name = grep{/\.tar.gz$/ && -f "$targz_dir/$_"} readdir(DIRHD);	# stdb2にあるtar.gzデータ名を@targz_data_nameに代入。
close(DIRHD);

foreach $data_name(@targz_data_name){

	print "unzip: ".$data_name."\n";
	system("tar zxf $targz_dir/$data_name -C $targz_dir ");
}


opendir(DIRHD, $targz_dir);
	@dir_list = grep{/[0-9][0-9][0-9][0-9][0-9][0-9]/ && -d "$targz_dir/$_"} readdir(DIRHD);
close(DIRHD);


foreach $dir_name(@dir_list){
#	print $dir_name."\n";

	$dirname = $targz_dir."/".$dir_name;
	@dirstat = stat $dirname;			# 解凍したディレクトリの詳細な情報を取得(mstat)
	$mtime = gmtime($dirstat[9]);			# 解凍したディレクトリのタイムスタンプ(mtime,内容更新時間)を取得

	$year = "20".substr($dir_name,0,2);
	if(!-d $path."/".$year){			
		system("mkdir -p $path/$year");		# YYYYディレクトリがなければ、解凍したYYMMDDディレクトリ名から作成
		print "mkdir: ".$year."\n";
	}

	if(!-d $path."/".$year."/".$dir_name){				# もし正規データ保存先にYYMMDDディレクトリがなければ、
		system("cp -prf $path/tmp/$dir_name $path/$year/");	# 解凍したYYMMDDディレクトリをコピー。cp -prfは,(f- 強制的に上書き),
		print "Copy: ".$dir_name."\n";				# (p- オーナー，グループ，パーミッション，タイムスタンプを保持したままコピー)
	}								# (r- ディレクトリを再帰的にコピー)
	else{								# ディレクトリがすでに存在すれば、
		$dest_dirname = $path."/".$year."/".$dir_name;		# 正規データ保存先
		@dest_dirstat = stat $dest_dirname;			# タイムスタンプ(mtime,内容更新時間)を取得する。@dest_dirstat[9]がタイムスタンプになる
		$dest_mtime = gmtime($dest_dirstat[9]);

		if($dest_dirstat[9] < $dirstat[9]){						# コピー元(tar.gz解凍DIR)とコピー先（正規データ保存先DIR）のタイムスタンプを比較する。
			system("cp -prf $path/tmp/$dir_name $path/$year/");			# コピー先DIRが古い場合、コピー元DIRから上書きコピーする。
			print "dest_mtime= ".$dest_mtime." < "."depart_mtime= ".$mtime."\n";
			print "Copy: ".$dir_name."\n";
#			print $dest_dirstat[9]." < ".$dirstat[9]."\n";
#			print "UWAGAKI!"."\n";
		}
	}
}
#*****************************************************************************



#************** Delete YYDDMM directory *******************
#print "===Delete YYDDMM directory==="."\n";
foreach $dir_name(@dir_list){						# 解凍したtmp以下のYYMMDDディレクトリを削除する
	system("rm -r $path/tmp/$dir_name");
}
#**********************************************************




#=========== Delate the previous data from 90 days ago in stdb2 ===============
print "===Delate the previous data from 90 days ago in stdb2==="."\n";	# 90日以前のtar.gzファイルを削除する

$tm = time-$previous_days*24*3600;
($sec,$min,$hour,$day,$month,$year,$wdy,$yday) = gmtime($tm);
$year += 1900;
++$month;

$daysago = sprintf("%04d%02d%02d",$year,$month,$day);
#print "\n";
#print $daysago."\n";

$yymmdd = substr($daysago,2,6);						# 90日前のYYDDMMの日付を取得
print "90daysago: ".$yymmdd."\n";

foreach $data_name(@targz_data_name){
	if($data_name lt "VLF_".$yymmdd."_KAP.tar.gz"){			# 90日以前のVLF_YYMMDD_KAP.tar.gzがあれば、削除する
		print "Delete: ".$data_name."\n";
		system("rm  $targz_dir/$data_name");
	}
}
print "===END==="."\n";
#=======================================================================================




