summaryrefslogtreecommitdiff
path: root/tools/backup.pl
diff options
context:
space:
mode:
Diffstat (limited to 'tools/backup.pl')
-rwxr-xr-xtools/backup.pl100
1 files changed, 100 insertions, 0 deletions
diff --git a/tools/backup.pl b/tools/backup.pl
new file mode 100755
index 000000000..939c7eee7
--- /dev/null
+++ b/tools/backup.pl
@@ -0,0 +1,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");
+}