Register for your free account! | Forgot your password?

Go Back   elitepvpers > Popular Games > Metin2 > Metin2 Private Server
You last visited: Today at 00:01

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[Shell]Backupscript Erweiterung? ich brauche Hilfe

Discussion on [Shell]Backupscript Erweiterung? ich brauche Hilfe within the Metin2 Private Server forum part of the Metin2 category.

Closed Thread
 
Old   #1
 
.Kay331's Avatar
 
elite*gold: 5
Join Date: Nov 2009
Posts: 1,863
Received Thanks: 2,778
[Shell]Backupscript Erweiterung? ich brauche Hilfe

Tag com.

Ich brauche mal eure Hilfe da ich in Shell der totale nuub bin

Ich wollte mein Script so anpassen das auf ein Backup von den Serverfiles gemacht wird und auch auf den ftp Server geladen wird.

Script:
PHP Code:
#!/bin/bash
# MySQL Backup Shell
#--
# by aiiR7
#--

#-- General Settings
NOW="$(date +"%Y%m%d")"                 # Date im YYYYMMDD Format
HOST="$(hostname)"                         # Hostname
DUMP_OPTS="-Q --single-transaction"             # MySQL Dump Parameter
TAR_OPTS="-cvzf"                         # Tar Parameter


#-- MySQL Settings
MyUSER="root"                             # MYSQL Benutzer.
MyPASS="*********"                         # MYSQL Passwort.
MyHOST="localhost"                             # MYSQL Host.

#-- FTP Settings
FTPUSER="*****"                          # FTP Benutzer.
FTPPASS="*****"                         # FTP Password.
FTPHOST="bfhost.de"                 # FTP IP/Host.
FTPDEST="/html/backups"                       # FTP Verzeichnis, wo die Backups hinterlegt werden sollen.

#-- Log & Error File
LOG="backup.log"                         # Jeder Vorgang wird geloggt, diese kann man in dieser Datei finden.
ERR="backup.err"                         # Sämtliche Fehler werden in dieser Datei hinterlegt.


#-- Bin Pfad - ändere diese nur, wenn sie nicht via "which" erkannt werden.
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
GREP="$(which grep)"
CHOWN="$(which chown)"
CHMOD="$(which chmod)"
TAR="$(which tar)"
MAIL="$(which mail)"
FIND="$(which find)"
DF="$(which df)"

# ----------
# Trage hier ein, welche Datenbanken gesichert werden sollen. Wenn die untere Option aktiviert ist, muss diese auskommentiert werden.
DBS="account player mysql"
# Der unten stehende und auskommentierte Befehl kann aktiviert werden, wenn alle Datenbanken gesichert werden sollen. 
# Dazu aber die obere Option "DBS" auskommentieren.
#DBS="$($MYSQL -u $MyUSER -h $MyHOST -p$MyPASS -Bse 'show databases')"
# Trage hier die Datenbanken ein, die NICHT gesichert werden sollen (Diese Option wird nur dann aktiviert, wenn der obere Befehl aktiviert ist.
DNB="common information_schema test hpcms hotbackup metin2_runup"
# ----------

# In diesem Ordner werden alle Backups hinterlegt.
DEST="/backup"




# Wenn "SEND_MAIL" auf "1" gestellt ist, werden dir sämtliche Informationen via E-Mail zugesendet.
SEND_EMAIL=0
NOTIFY_EMAIL
="kay.****"
NOTIFY_SUBJECT="MySQL Backup Notification"

#-- Backups Löschen
# Wenn "DELETE_OLD_BACKUPS" auf 1 gestellt ist, werden Backups, die älter als "DELETE_BACKUPS_OLDER_THAN_DAYS=x" gelöscht.
DELETE_OLD_BACKUPS=1
# Die Angabe wird in Tagen berechnet. Momentan werden die Backups nach 10 Tagen gelöscht, diese Angabe kann auf Wunsch geändert werden.
DELETE_BACKUPS_OLDER_THAN_DAYS=10


#-- E-Mail Funktion
function gen_email {
  
DO_SEND=$1
  TMP_FILE
=$2
  NEW_LINE
=$3
  LINE
=$4
  
if [ $DO_SEND -eq 1 ]; then
    
if [ $NEW_LINE -eq 1 ]; then
      
echo "$LINE>> $TMP_FILE
    
else
      echo -
"$LINE>> $TMP_FILE
    fi
  fi
}

#-- Hier werden die Backups hinterlegt
if [ ! -d $DEST ]; then 
  
echo "$(date) :: Das '$DEST' Verzeichnis existiert nicht." >> $LOG
  
echo "$(date) :: Erstelle '$DEST' Verzeichnis ..." >> $LOG
  mkdir 
-p $DEST
  
echo "$(date) :: Das '$DEST' Verzeichnis wurde erstellt." >> $LOG
  
# Nur der Root Benutzer ist berechtigt, auf die Backups zuzugreifen.
  
echo "$(date) :: Verteile die Besitzer und Chmod Rechte für das Verzeichnis '$DEST' ..." >> $LOG
  $CHOWN 0
:0 $DEST
  $CHMOD 0750 $DEST
  
echo "$(date) :: Die nötigen Rechte für das Verzeichnis '$DEST' wurden vergeben." >> $LOG
fi

#-- Backup Verzeichnis wird erstellt (bezieht sich auf die einzelnen Backups).
MBD="$DEST/$NOW"

[ ! -d $MBD ] && mkdir -p $MBD || :

 
$CHOWN 0:0 $MBD
 $CHMOD 0750 $MBD


#-- Temp Message Datei
TMP_MSG_FILE="/tmp/$RANDOM.msg"
if [ $SEND_EMAIL -eq 1 --"$TMP_MSG_FILE]; then
  rm 
-"$TMP_MSG_FILE"
fi

set 
-o pipefail

#-- Beginne mit Backup der zu sicherten Datenbanken.
echo "$(date) :: Beginne mit der Sicherung der Datenbanken ..." >> $LOG
for db in $DBS
do
    
skipdb=-1
    
if [ "$DNB!= "" ];
    
then
    
for i in $DNB
    
do
        [ 
"$db== "$i] && skipdb=|| :
    
done
    fi
    
if [ "$skipdb== "-1" ] ; then
    BACKUP
="mysql_backup.`date +%d.%m.%Y-%H:%M:%S`.tgz"
        
$MYSQLDUMP $DUMP_OPTS -u $MyUSER -h $MyHOST -p$MyPASS --log-error=$ERR $db $MBD/$db.sql
        RESULT
=$?
        if [ 
$RESULT != ]; then
        rm $MBD
/*.sql
      NOTIFY_MESSAGE="$(date) :: Error: Fehler '$RESULT' ist aufgetreten."    
      echo $NOTIFY_MESSAGE >> $LOG
    else
      NOTIFY_MESSAGE="$(date) :: Die Datenbanken '$db' wurden erfolgreich gedumpt und im '$MBD' Verzeichnis hinterlegt."
      echo $NOTIFY_MESSAGE >> $LOG 
    fi    
        gen_email $SEND_EMAIL $TMP_MSG_FILE 1 "$NOTIFY_MESSAGE"
        echo $NOTIFY_MESSAGE
    fi
done

$TAR $TAR_OPTS $MBD/$BACKUP $MBD/*.sql

  if [ $? -ne 0 ] ; then  
     echo "$(date) :: Backup konnte nicht archiviert werden." >> $LOG
  else
     echo "$(date) :: Backup wurde erfolgreich archiviert." >> $LOG
     rm $MBD/*.sql
     echo "$(date) :: Bereite Backup zum transferieren vor ..." >> $LOG
     echo "$(date) :: Verbinde mit Backup Server ..." >> $LOG
  fi
  


#-- Empty line in email and stdout
gen_email $SEND_EMAIL $TMP_MSG_FILE 1 ""
echo ""

#-- Alte Backups löschen
if [ $DELETE_OLD_BACKUPS -eq 1 ]; then
  find "$DEST" -maxdepth 1 -mtime +$DELETE_BACKUPS_OLDER_THAN_DAYS -type d | $GREP -v "^$DEST$" | while read DIR; do
    gen_email $SEND_EMAIL $TMP_MSG_FILE 0 "Deleting: '$DIR': "
    echo -n "Deleting: $DIR: "
    echo "$(date) :: Bereite das alte Backupverzeichnis '$DIR' zum löschen vor, da es älter als '$DELETE_BACKUPS_OLDER_THAN_DAYS' ist." >> $LOG
    rm -rf "$DIR" 
    RESULT=$?
    if [ $RESULT != 0 ]; then
      NOTIFY_MESSAGE="$(date) :: Error : Das alte Backupverzeichnis '$DIR' konnte nicht gelöscht werden."
      echo $NOTIFY_MESSAGE >> $LOG
      echo $NOTIFY_MESSAGE >> $ERR
    else
      NOTIFY_MESSAGE="$(date) :: Das alte Backupverzeichnis '$DIR' wurde erfolgreich gelöscht."
      echo $NOTIFY_MESSAGE >> $LOG
    fi
    gen_email $SEND_EMAIL $TMP_MSG_FILE 1 "$NOTIFY_MESSAGE"
    echo "$NOTIFY_MESSAGE"
  done
fi



#-- Empty line in email and stdout
gen_email $SEND_EMAIL $TMP_MSG_FILE 1 ""
echo ""



#-- Festplatten Statistik wird via E-Mail übermittelt
if [ $SEND_EMAIL -eq 1 ]; then
  $DF -h "$DEST" >> "$TMP_MSG_FILE"  
fi
$DF -h "$DEST"



#-- Versenden der E-Mail in welcher alle Informationen vorzufinden sind.
if [ $SEND_EMAIL -eq 1 ]; then
  $MAIL -s "$NOTIFY_SUBJECT" "$NOTIFY_EMAIL" < "$TMP_MSG_FILE"
  rm -f "$TMP_MSG_FILE"
fi


#-- Hier verbindet sich der Server mit dem Backup Server und hinterlegt dort die Backups, sofern die letzten Vorgänge erfolgreich waren.
# Sollte ein Fehler während der Übertragung auftauchen, wird dieser in der $ERR (backup.err) hinterlegt.

ftp -inv $FTPHOST << EOF 2> $ERR
user $FTPUSER $FTPPASS
bin
prompt off
$CHMOD 0600 $FTPDEST
cd $FTPDEST
mkdir $NOW
cd $NOW
lcd $MBD
mput $BACKUP
$CHMOD 0600 $BACKUP
EOF

  if $GREP "ftp" $ERR 
   then
    echo "$(date) :: Error : Es ist ein Fehler während der FTP Übertragung aufgetreten, siehe mehr in '$ERR'" >> $LOG
  else
    echo "$(date) :: Backup wurde soeben auf den Backup Server transferiert." >> $LOG
    echo "$(date) :: Das aktuelle Backup Verzeichnis lautet '$NOW'." >> $LOG
    echo "$(date) :: Backup Erfolgreich Abgeschlossen." >> $LOG
    echo "" >> $LOG
    echo "----------------------" >> $LOG
    echo "" >> $LOG
  fi 
Danke schon mal für eure Hilfe (:
.Kay331 is offline  
Thanks
1 User
Closed Thread


Similar Threads Similar Threads
[HOWTO] Automatisches Backupscript weitersenden auf Backupserver
01/17/2011 - Metin2 PServer Guides & Strategies - 37 Replies
Hallo Leute, da eben jemand den Wunsch hatte ein Backupscript zu haben, was sich automatisch ausführt und weitersendet schreibe ich jetzt hier mal wie das geht: Zu ersteinmal loggt ihr euch per SSH auf euren MySQL Server ein, ich habe dazu den Root Account, da ich die Rechte dafür brauche. Nun gebt ihr folgenden Befehl ein: mkdir /backup So nun geht ihr in den Ordner Backup wie folgt: cd /backup
[HowTo]Professionelles Backupscript
11/08/2010 - Metin2 PServer Guides & Strategies - 37 Replies
Hallo Com, da ich sehe, dass es kaum gute Backupscripts für die Mysql Datenbanken gibt, werde ich hier meins releasen. Die Methode funktioniert mit rsync. Also was brauchen wir: Backupspace mit ssh(Putty) zugriff (mehr dazu gleich)
Brauche Dringend Hilfe! Bin Metin spieler aber Brauche Hilfe
12/30/2009 - Metin2 Private Server - 0 Replies
Es gehört hier zwar nicht rein , aber ich weiß keine andere Lösung Ich habe seit einigen Tagen ein Problem... Microsoft Windows Search Protocol Host funktioniert nicht mehr Die Anwendung wird Aufgrund eines Problems nicht mehr richtig Ausgeführt. Ich weiß nicht was das ist und wie ich es loswerde.
Enter full pathname of shell or RETUN for /bin/sh : HILFE !?
10/16/2009 - Metin2 Private Server - 6 Replies
was muss ich tun wenn beim starten von vpc diese meldung kommt? davor lief alles einwandfrei wollte gerade ebend starten kommt dashier -.- Vielen dank ! gebe thx :)
Silkroad Shell Shell
01/16/2006 - Silkroad Online - 23 Replies
I've found a new Silkroad bot, but the bot is in Chinese/Korean, so we need help to translate it and get it work... Download



All times are GMT +1. The time now is 00:02.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.