summaryrefslogblamecommitdiff
path: root/src/tool/backup
blob: bde63b5eef0e3acdf345a8516aaac4e1f3928937 (plain) (tree)
1
2
3
4
5
6
7
8


                                                                          
                                               
 
                                                                                  

                                                                          




                                                                                                           
 

                                                                                           
 

                                                                                                           
 


                                                                                                      
 




                                                                                                     
 

                                                                                                      


                                                                          

                                                                                         
 
                                                         



                                                                   
                                                                               











                                                             
                     







                                        
                         

































                                                                   
#!/usr/bin/perl

##########################################################################
# Athena用データバックアップツール
#
#  Athenaの各種データファイル*.txtをバックアップするツール
#
#-------------------------------------------------------------------------
# 設定方法
#  実行する時のカレントフォルダからのデータへのパス、ファイルのリストを
#  正しく設定します。バックアップ先のフォルダは自動作成されないので、
#  自分で作成しておく必要があります。
#  フォルダの最後の「/」は省略できません。
#
#  フォルダは引数でも指定できます。例>./backup ../save/ ./backup_data/
#  フォルダの最後の「/」は省略できません。
#
#  実行するとバックアップ先のフォルダへ、ファイル名に現在の日付と時刻を
#  つけてファイルをコピーします。
#
#   * toolフォルダ内にbackup_dataフォルダを作成し、
#    athena.shの中に「./tool/backup ./save/ ./tool/backup_data/」
#     という行を追加すると、athenaを起動するたびにバックアップが取れます
#
#   復元するときは引数に「-r 日付と時刻」を指定します。
#  またその後ろにフォルダを指定することも出来ます
#  例1> ./backup -r 200309191607
#  例2> ./backup -r 200309191607 ../save ./backup_data/
#  この例では2003/09/19の16:07分にバックアップしたデータを復元しています
#
#  復元するとき、Athenaディレクトリにあるデータは *.bak に名前を変更して
#  残しているので、いらない場合は rm *.bak などで消してください。
#
##########################################################################

$sdir="../save/";		#バックアップ元(Athenaのディレクトリ/save/)
$tdir="./backup_data/";		#バックアップ先

@files=(			#ファイルのリスト
	"account","athena","storage","party","guild","castle","pet"
);


#-------------------------------設定ここまで-----------------------------











if($ARGV[0]=~/^\-r$/i || $ARGV[0]=~/\-\-(recover|restore)/i){
	#復元処理

	$file=$ARGV[1];
	$sdir=$ARGV[2]||$sdir;
	$tdir=$ARGV[3]||$tdir;
	&restorecopy($_) foreach @files;
	exit(0);
}

#バックアップ処理
$sdir=$ARGV[0]||$sdir;
$tdir=$ARGV[1]||$tdir;

unless( -d $tdir ){
	print "$0: \"$tdir\" : No such directory\n";
	exit(1);
}

(undef,$min,$hour,$day,$month,$year)=localtime;

$file=sprintf("%04d%02d%02d%02d%02d",
	$year+1900, $month+1, $day, $hour, $min );

&backupcopy($_) foreach @files;
exit(0);

sub backupcopy {
	my($name)= @_;
	system("cp $sdir$name.txt $tdir$name$file.txt");
}

sub restorecopy {
	my($name)= @_;
	unless( -f "$sdir$name.txt" ){
		printf("$0: \"$sdir$name.txt\" not found!\n");
		return 0;
	}
	unless( -f "$tdir$name$file.txt" ){
		printf("$0: \"$tdir$name$file.txt\" not found!\n");
		return 0;
	}
	rename "$sdir$name.txt","$sdir$name.bak";
	system("cp $tdir$name$file.txt $sdir$name.txt");
}