2 Stimmen

PHP-Download Sicherung der MySQL-Datenbank

Ich möchte einem Kunden die Möglichkeit geben, ein Backup seiner Datenbank manuell herunterzuladen. Ich kodiere die Seite mit PHP und MySQL. Nachdem sich der Administrator eingeloggt hat, soll es einen Link im Menü geben, um eine .sql-Datei auf den lokalen Computer herunterzuladen. Wie kann ich das mit PHP bewerkstelligen?

0 Stimmen

0 Stimmen

Genaues Duplikat von Sicherung einer Mysql-Datenbank und Herunterladen als Datei und die Hälfte der Fragen in der Liste "Verwandte Themen" auf der rechten Seite.

3voto

RobertPitt Punkte 55763

Es kann unübersichtlich werden, wenn man versucht, eine Datenbank von PHP aus zu sichern. Es ist besser, dies MySql zu überlassen, und der beste Weg, MySql anzuweisen, dies zu tun, ist mit einem Shell-Skript:

#!/bin/bash
# Shell script to backup MySql database
# To backup Nysql databases file to /backup dir and later pick up by your
# script. You can skip few databases from backup too.
# For more info please see (Installation info):
# http://www.cyberciti.biz/nixcraft/vivek/blogger/2005/01/mysql-backup-script.html
# Last updated: Aug - 2005
# --------------------------------------------------------------------
# This is a free shell script under GNU GPL version 2.0 or above
# Copyright (C) 2004, 2005 nixCraft project
# Feedback/comment/suggestions : http://cyberciti.biz/fb/
# -------------------------------------------------------------------------
# This script is part of nixCraft shell script collection (NSSC)
# Visit http://bash.cyberciti.biz/ for more information.
# -------------------------------------------------------------------------

MyUSER="SET-MYSQL-USER-NAME"     # USERNAME
MyPASS="SET-PASSWORD"       # PASSWORD
MyHOST="localhost"          # Hostname

# Linux bin paths, change this if it can not be autodetected via which command
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
CHOWN="$(which chown)"
CHMOD="$(which chmod)"
GZIP="$(which gzip)"

# Backup Dest directory, change this if you have someother location
DEST="/backup"

# Main directory where backup will be stored
MBD="$DEST/mysql"

# Get hostname
HOST="$(hostname)"

# Get data in dd-mm-yyyy format
NOW="$(date +"%d-%m-%Y")"

# File to store current backup file
FILE=""
# Store list of databases
DBS=""

# DO NOT BACKUP these databases
IGGY="test"

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

# Only root can access it!
$CHOWN 0.0 -R $DEST
$CHMOD 0600 $DEST

# Get all database list first
DBS="$($MYSQL -u $MyUSER -h $MyHOST -p$MyPASS -Bse 'show databases')"

for db in $DBS
do
    skipdb=-1
    if [ "$IGGY" != "" ];
    then
    for i in $IGGY
    do
        [ "$db" == "$i" ] && skipdb=1 || :
    done
    fi

    if [ "$skipdb" == "-1" ] ; then
    FILE="$MBD/$db.$HOST.$NOW.gz"
    # do all inone job in pipe,
    # connect to mysql using mysqldump for select mysql database
    # and pipe it out to gz file in backup dir :)
        $MYSQLDUMP -u $MyUSER -h $MyHOST -p$MyPASS $db | $GZIP -9 > $FILE
    fi
done

und dann sagen Sie php, dass es das Betriebssystem anweisen soll, dieses Skript auszuführen und darauf zu warten, bis es fertig ist. Dies geschieht normalerweise mit exec o system wie zum Beispiel:

exec('/path/to/backup/script.sh');

Dann können Sie die vom Skript erstellte Datei einfach an den Browser des betreffenden Benutzers senden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X