
IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK. EVERYTHING ELSE GOES INTO TRUNK AND WILL BE MERGED INTO STABLE BY VALARIS AND WIZPUTER. -- VALARIS git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@5094 54d463be-8e91-2dee-dedb-b68131a5f0ec
101 lines
2.7 KiB
Perl
101 lines
2.7 KiB
Perl
#!/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");
|
||
}
|