summaryrefslogtreecommitdiff
path: root/src/tool/backup
blob: bde63b5eef0e3acdf345a8516aaac4e1f3928937 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#!/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");
}