123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- #!/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");
- }
|