Datenbank Backup · 1 min read · Jan 30, 2026

Shell-Skript zum Sichern aller MySQL-Datenbanken, jede Tabelle in einer einzelnen Datei und Hochladen auf Remote-FTP

Shell-Skript zum Sichern aller MySQL-Datenbanken, jede Tabelle in einer einzelnen Datei und Hochladen auf Remote-FTP

Dieses Skript erstellt ein Backup jeder Tabelle in jeder Datenbank (eine Datei pro Tabelle), komprimiert es und lädt es auf einen Remote-FTP hoch.

Zuerst erstellen Sie einen MySQL-Benutzer mit SELECT- und LOCK TABLE-Rechten (oder verwenden Sie root).

Verwenden Sie dann dieses Skript in Ihrem Crontab jede Stunde:

#!/bin/sh
# System + MySQL Backup-Skript
# Copyright (c) 2008 Marchost
# Dieses Skript ist lizenziert unter GNU GPL Version 2.0 oder höher
# ---------------------------------------------------------------------

#########################
######ZU ÄNDERN#######

### Systemeinrichtung ###
BACKUP=YOUR_LOCAL_BACKUP_DIR

### MySQL-Einrichtung ###
MUSER="MYSQL_USER"
MPASS="MYSQL_USER_PASSWORD"
MHOST="localhost"

### FTP-Server-Einrichtung ###
FTPD="YOUR_FTP_BACKUP_DIR"
FTPU="YOUR_FTP_USER"
FTPP="YOUR_FTP_USER_PASSWORD"
FTPS="YOUR_FTP_SERVER_ADDRESS"

######ÄNDERUNGEN UNTERLASSEN#######
#########################################

### Binaries ###
TAR="$(which tar)"
GZIP="$(which gzip)"
FTP="$(which ftp)"
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"

### Heute + Stunde im 24h-Format ###
NOW=$(date +"%d%H")

### Erstellen Sie ein stündliches Verzeichnis ###

mkdir $BACKUP/$NOW

### Alle Datenbanknamen abrufen ###
DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')"
for db in $DBS
do

### Verzeichnis für jede Datenbank erstellen, Tabellen in einzelnen Dateien sichern ###
  mkdir $BACKUP/$NOW/$db

  for i in `echo "show tables" | $MYSQL -u $MUSER -h $MHOST -p$MPASS $db|grep -v Tables_in_`;
do
    FILE=$BACKUP/$NOW/$db/$i.sql.gz
    echo $i; $MYSQLDUMP --add-drop-table --allow-keywords -q -c -u $MUSER -h $MHOST -p$MPASS $db $i | $GZIP -9 > $FILE
  done
done

### Alle Tabellen in einer schönen Datei komprimieren, um sie hochzuladen ###

ARCHIVE=$BACKUP/$NOW.tar.gz
ARCHIVED=$BACKUP/$NOW

$TAR -cvf $ARCHIVE $ARCHIVED

### Backup über FTP dumpen ###
cd $BACKUP
DUMPFILE=$NOW.tar.gz
$FTP -n $FTPS <
Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.