[FAQ] Automatische Forumbackups

Started by Klozi, September 11, 2006, 08:43:28 PM

Previous topic - Next topic

Klozi

Dies sind 2 Backup-Scripte, welche für das Sichern der MySQL-Datenbank sowie für Foren-Dateien zuständig sind. Die Backup-Jobs laufen automatisch nach festgelegter Zeit- bzw. Datum, wie z.B. wöchentlich ablaufen.

MySQL Backup
Dieser Abschnitt ist zuständig für die Datenbanksicherung. Hiermit werden sämtliche Einträge und Inhalte des Forums gesichert.

Erstelle ein Textdokument (*.txt) und kopiere folgenden Code in die Datei. Anschließend benenne es nach "daily.sh" ab und lade es in das Hauprverzeichnis des Forums.

#! /bin/sh
DATESTAMP=`date +%m-%d-%Y-%H%M`
cd /home/yourusername/backups/database/
mysqldump --opt -pPASSWORD -uUSERNAME DATABASE | gzip >$DATESTAMP.gz
cd /home/yourusername/
echo $DATESTAMP >> msg.txt
cat msg.txt | /usr/lib/sendmail -t


Passe "USERNAME", "PASSWORD" und "DATABASE" mit den Benutzername, Passwort und Datenbankname des Forums an. Vergisst nicht die Pfade zum Backupverzeichnis anzupassen und diese anschließend anzulegen. Bei der Pfadangabe müsst du eventuel etwas herumspielen, da der exakte Pfad (z.B: "/var/www/kunden/webs/username/board/backup") angegeben werden muss.


Forumdaten Backup
Dieser Teil ist etwas komplitzierter, hier eine kurze Beschreibung, wann welche Art der Backups ablaufen:

- Am jeden Monatsanfang wird ein komplettes Forumbackup erstellt.
- Jeden Sonntag wird ebenfalls ein komplettes Backup erstellt, wobei jedes vorherige Sonntag-Backup überschrieben wird.


Speichert den folgenden Code als "data.sh" im SMF-Verzeichnis ab:
#!/bin/sh
# full and incremental backup script
# created 07 February 2000
# Based on a script by Daniel O'Callaghan <[email protected]>
# and modified by Gerhard Mourani <[email protected]>

#Change the 5 variables below to fit your computer/backup

COMPUTER=computername                          # name of this computer or site name
DIRECTORIES="/home/username/public_html"                      # directoris to backup
BACKUPDIR=/home/username/backups                      # where to store the backups
TIMEDIR=/home/username/backups/last-full              # where to store time of full backup
TAR=/bin/tar                            # name and locaction of tar

#You should not have to change anything below here

PATH=/usr/local/bin:/usr/bin:/bin
DOW=`date +%a`              # Day of the week e.g. Mon
DOM=`date +%d`              # Date of the Month e.g. 27
DM=`date +%d%b`              # Date and Month e.g. 27Sep

# On the 1st of the month a permanet full backup is made
# Every Sunday a full backup is made - overwriting last Sundays backup
# The rest of the time an incremental backup is made. Each incremental
# backup overwrites last weeks incremental backup of the same name.
#
# if NEWER = "", then tar backs up all files in the directories
# otherwise it backs up files newer than the NEWER date. NEWER
# gets it date from the file written every Sunday.


# Monthly full backup
if [ $DOM = "01" ]; then
        NEWER=""
        $TAR $NEWER -cf $BACKUPDIR/$COMPUTER-$DM.tar $DIRECTORIES
fi

# Weekly full backup
if [ $DOW = "Sun" ]; then
        NEWER=""
        NOW=`date +%d-%b`

        # Update full backup date
        echo $NOW > $TIMEDIR/$COMPUTER-full-date
        $TAR $NEWER -cf $BACKUPDIR/$COMPUTER-$DOW.tar $DIRECTORIES

# Make incremental backup - overwrite last weeks
else

        # Get date of last full backup
        NEWER="--newer `cat $TIMEDIR/$COMPUTER-full-date`"
        $TAR $NEWER -cf $BACKUPDIR/$COMPUTER-$DOW.tar $DIRECTORIES
fi


Die obigen 5 Zeilen müssen mit dne eigenen Angaben ausgefüllt werden, hier ein Beispiel:

COMPUTER=kingspace.de                          # name of this computer or site name
DIRECTORIES="/var/www/kunden/webs/Klozi/board"                      # directoris to backup
BACKUPDIR=/var/www/kunden/webs/Klozi/backups                      # where to store the backups
TIMEDIR=/var/www/kunden/webs/Klozi/backups/last-full              # where to store time of full backup
TAR=/bin/tar                            # name and locaction of tar



Wenn du das MySQL-Script verwendest, dürften die Verzeichnisse automatisch erstellt werden. Falls es Probleme geben sollte, erstell diese manuell und setze CHMOD 755.

Damit der automatische Full-Backup angesprochen werden kann, musst du im /backups/last-full eine Datei erstellen, in diese eine kurzes Datum angeben (Beispiel: 16-Aug) und nennst die Datei um in "COMPUTERNAME-full-date" also z.B. "kingspace.de-full-date".

MySQL CronJobs

Nun kannst du mit Unix z.B. per CPanel die Option CronJobs wählen. Anschließend gibst du folgende Angaben an:

minute : 00
hour : 01
day : *
month : *
weekday : *
command : /pfad/zur/daily.sh

Damit wird der automatische Backup angesprochen und jeden Tag um 1 Uhr (morgends) wird eine Sicherung der Datenbank erstellt. Hier können nach belieben die Werte angepasst werden.

Forumdaten CronJobs

Über das gleiche Verfahren kann nun eine Sicherung der Foren-Daten angelegt werden:

minute : 00
hour : 02
day : *
month : *
weekday : *
command : /pfad/zur/data.sh

Dieses Beispiel zeigt, dass jeden Tag um 2 Uhr eine Datensicherung angelegt wird.


Das war's auch schon!


Oginaltutorial von 3guk

Darwin94

sorry das ich den alten tread wieder hoch hole, aber ich weiß nicht wirklich, was ich im letzten schritt (das cronjob-dingens) machen soll  :-[

mediman

Quote from: Darwin94 on June 12, 2009, 09:02:49 AM
sorry das ich den alten tread wieder hoch hole, aber ich weiß nicht wirklich, was ich im letzten schritt (das cronjob-dingens) machen soll  :-[

Du sollst einen Cronjob anlegen.
Per SSH2 (oder SHH, ganz schlecht per Telnet) auf den Server einloggen, und dann  crontab -u username -e (username ist der webserveruser der den Job ausführen soll, also z.B. web1 oder sowas.
Dann einfach in einer Zeile folgendes schreiben:
0 2 * * * php /pfad/zu/data.sh

und per ctrl-x schliessen.
Der Cronjob ist jetzt für 2 Uhr nachts Serverzeit eingerichtet.
mediman

My Projects: http://ticker-oase.de 
Please do not PM me with support requests.

Darwin94


mediman

Mit einem SSH-Client (z.B. PuTTy).

mediman
My Projects: http://ticker-oase.de 
Please do not PM me with support requests.

Darwin94

also ich hab mir jetzt ssh tunnel gezogen. was muss ich bei ssh host/port/schlüsseldatei; lokaler host;remote port angeben? :-[

mediman

Quote from: Darwin94 on June 20, 2009, 01:43:49 PM
also ich hab mir jetzt ssh tunnel gezogen. was muss ich bei ssh host/port/schlüsseldatei; lokaler host;remote port angeben? :-[

Die SSH/SSH2 Zugangsdaten, die dir dein Provider zur Verfügung gestellt hat.
Als Host kann eine IP-Adressse oder aber eine URI möglich sein.
Der Port für SSH ist 22 (für Telnet aber 23).
Die Zugangsdaten sind günstigerweise ein normaler User, per SU holt man sich dann Rootrechte, leider ist aber bei Massenprovidern oftmals ein direktes Einloggen per root möglich.

mediman
My Projects: http://ticker-oase.de 
Please do not PM me with support requests.

Darwin94


Advertisement: