From 620e60eebce2c1f35c5c9a82f6ca365b316587f5 Mon Sep 17 00:00:00 2001 From: Valaris Date: Sun, 29 Jan 2006 16:10:48 +0000 Subject: AS OF SVN REV. 5901, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO INTO TRUNK. 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://rathena.svn.sourceforge.net/svnroot/rathena/trunk@5094 54d463be-8e91-2dee-dedb-b68131a5f0ec --- tools/backup | 100 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 tools/backup (limited to 'tools/backup') diff --git a/tools/backup b/tools/backup new file mode 100644 index 000000000..2b5a95814 --- /dev/null +++ b/tools/backup @@ -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"); +} -- cgit v1.2.3-70-g09d2