Hallo netcup Community,
da netcup ja nun die NFS-Server für Backups (oder sonstiges) anbietet, habe ich mein Script nun etwas abgeändert, sodass dieses diesen Storage mounted, das Backup dort erstellt und wieder unmounted. Man kann auch die Anzahl der Backups bestimmen, damit nicht das Storage überfüllt wird und weitere Kosten entstehen. Nach 6 Tagen im Test möchte ich euch dieses nun zur Verfügung stellen. Es ist zwar nichts atemberaubendes, aber für den ein oder anderen bestimmt nützlich. Das Script darf natürlich nach belieben erweitert werden.
#!/bin/bash
# Backup Script
# by Ray-works.de
# Update: 29.10.2013
# Date
DATE=`date +"%Y-%m-%d"`;
echo "--- Backup Started ---";
echo "--- $DATE ---";
# MySQL & FTP Konfiguration
MYSQL_USER=root
MYSQL_PASS=
# Storage Konfiguration
NFSIP=""
NFSVOL=""
MOUNTPOINT="/mnt/storage"
# Mountpoint "storage" anlegen
if [ ! -d $MOUNTPOINT ]; then
mkdir $MOUNTPOINT
echo "Status: Mountpoint created.";
fi
# Solange storage nicht gemountet ist, versuche alle 10 Sekunden es zu mounten
until mount | grep "$MOUNTPOINT" &> /dev/null; do
mount -t nfs $NFSIP:$NFSVOL $MOUNTPOINT &> /dev/null
sleep 10
done
echo "Status: Storage mounted.";
# Backup-Verzeichnis definieren
DESTINATION="$MOUNTPOINT";
# MySQL Dump Verzeichnis anlegen
if [ ! -d "/mysqldump" ]; then
mkdir /mysqldump
echo "Status: MySQL-Dump directory created.";
fi
# Zu sichernde Verzeichnisse
SOURCE="/root /etc /var/log /var/www /var/vmail /var/tools /mysqldump /home/ray";
# Archive Name
ARCHIVE="Backup-$DATE.tgz"
# Anzahl der maximalen Backups
MAX=10;
while [ `ls $DESTINATION -1 | wc -l` -gt $(($MAX-1)) ]; do
OLDEST=`ls $DESTINATION | head -1`
echo "Status: Removing old backup -> $OLDEST";
rm -rf $DESTINATION/$OLDEST
done
# Sicherung der Datenbanken
cd /mysqldump
for x in $(mysql -u$MYSQL_USER -p$MYSQL_PASS -Bse 'show databases'); do
mysqldump -u$MYSQL_USER -p$MYSQL_PASS --single-transaction $x > ${x}-$DATE.sql
echo "MySQL-Dump: ${x}-$DATE.sql created.";
done
cd ../
# Archivieren
tar zcfP $DESTINATION/$ARCHIVE $SOURCE
# Backups löschen
rm -rf /mysqldump
umount $MOUNTPOINT
echo "Status: Storage unmounted.";
echo "--- Backup Completed ---";
echo "--- $DATE ---";
Display More
Wer iptables am laufen und die INPUT/OUTPUT Policy auf DROP gesetzt hat, sollte noch folgendes mit in die Rules aufnehmen:
Auszug aus meinem iptables Script:
$IPTABLES -A INPUT -i $ETH -p tcp -s $NFSIP -j ACCEPT
$IPTABLES -A INPUT -i $ETH -p udp -s $NFSIP -j ACCEPT
$IPTABLES -A OUTPUT -o $ETH -p tcp -d $NFSIP -j ACCEPT
$IPTABLES -A OUTPUT -o $ETH -p udp -d $NFSIP -j ACCEPT
$NFSIP mit der Storage IP deklarieren, welche ihr im VCP findet.
$ETH steht für das Ethernet Interface.
$IPTABLES sollte klar sein.
Links zum Download sowie Informationen findet ihr hier:
RW | Ray-works | If Ray works, it will work!
webshelf file explorer @ files.ray-works.de