Backup von S4Y

snurps_gel

Registered User
Hallo,

habe mir mal Gedanken über ein sinnvolles Backup meines vservers bei S4Y gemacht.

Nachdem, was ich hier gelesen habe wird das Backupverzeichnis auf der selben Platte wie die Originaldaten gespeichert. Also bei Plattencrash genau weg.
Es sollten zumindest die Datenbanken und die Web-Verzeichnisse gesichert werden.
Welche Technologien wendet ihr an?

Danke für Hinweis .

snurps_gel
 
Hallo snurps_gel,

auch ich betreiben einen Vserver bei S4Y. Ich setze seit einiger Zeit das Opensource Backup-Programm (REOBACK) ein. Reoback läßt eine Sicherung sowohl lokal als auch per FTP zu. Bei meinem Vserver (Redhat 9) musste ich allerdings die RPM-Installation ein bischen überreden, weil er immer ein fehlendes Modul anmeckerte, welches aber bereits integriert war. Da ich keinen per FTP erreichbaren Speicher habe sichere ich meine Daten lokal und übertrage diese dann manuell.

Möge die Macht mit Dir sein!

Obiwan Kenoby
 
Also bei Plattencrash genau weg.
Ich vermutte und hoffe eigentlich sehr stark das S4Y RAID 5 einsetzt. Wäre irgendwie blöd wenn sie wegen einer defekten Festplatte duzenden von Kunden erklären müssten das ihre Daten verloren sind. Ein richtiges Backup kann aber dennoch nicht schaden.
 
Ich habe mir selbst nen Script geschrieben.
Macht nen Backup der Mysql Datenbanken, der HTML Verzeichnisse und der Mails und schiebt diese auf Wunsch noch auf nen FTP.

Code:
#!/bin/bash

# config
web_dir="/var/www/"
mail_dir="/var/spool/mail"
backup_group="my_backup"
mysql_opt="--opt --allow-keywords"
mysql_pass="blubber"
sql_backup="yes"
mail_backup="yes"
ftp_upload="yes"
ftp_user="user"
ftp_pass="blubber"
ftp_ip="192.168.0.2"
ftp_dir="/backup"

test -d /backup || /bin/mkdir /backup
test -d /backup/excludes || /bin/mkdir /backup/excludes

if [ ! -n "`cat /etc/group | grep ${backup_group}`" ]; then
groupadd ${backup_group}
fi

# system
/bin/tar cfz /backup/etc.tar.gz /etc
/etc/init.d/mysql stop
/bin/tar cfz /backup/mysql.tar.gz /var/lib/mysql/confixx /var/lib/mysql/mysql
/etc/init.d/mysql start
/bin/tar cfz /backup/system.tar.gz /backup/etc.tar.gz /backup/mysql.tar.gz
/bin/rm /backup/etc.tar.gz /backup/mysql.tar.gz
if [ "${ftp_upload}" = yes ]; then
    /usr/bin/ncftpput -V -u ${ftp_user} -p ${ftp_pass} ${ftp_ip} ${ftp_dir} /backup/system.tar.gz
fi

# users
for nr in `ls ${web_dir} | grep web\[0-9\] | sed 's/web//'`
do
        test -d /backup/web${nr} || /bin/mkdir /backup/web${nr}
        test -e /backup/excludes/exclude_${nr}.list || /bin/touch /backup/excludes/exclude_${nr}.list
        /bin/tar -X /backup/excludes/exclude_${nr}.list -C ${web_dir}/web${nr}/html -c -z -f /backup/web${nr}/web${nr}_html.tar.gz .
        if [ "${sql_backup}" = yes ]; then
            for db in `echo show databases | mysql -u root -p${mysql_pass} | grep usr_web${nr}_ | sed 's/usr_web[0-9]\{1,3\}_//'`
            do
                /usr/bin/mysqldump ${mysql_opt} -uroot -p${mysql_pass} -hlocalhost usr_web${nr}_${db} > /backup/web${nr}/web${nr}_db${db}.sql
            done
            if [ "`ls /backup/web${nr} | grep web${nr}_db | wc -w`" -gt 0 ]; then
                ls /backup/web${nr} | grep web${nr}_db | xargs tar -C /backup/web${nr} -c -z -f /backup/web${nr}/web${nr}_sql.tar.gz
                /bin/rm /backup/web${nr}/web${nr}_db*.sql
            fi
        fi
        if [ "${mail_backup}" = yes ] && [ "`ls ${mail_dir} | grep web${nr}p | wc -w`" -gt 0 ]; then
            ls /var/spool/mail | grep web${nr}p | xargs tar -C /var/spool/mail -c -z -f /backup/web${nr}/web${nr}_mail.tar.gz
        fi
        if [ "`ls /backup/web${nr} | grep web\[0-9\] | wc -w`" -gt 1 ]; then
            /bin/tar -C /backup/web${nr} -c -z -f /backup/web${nr}.tar.gz .
        else
            /bin/mv /backup/web${nr}/web${nr}_html.tar.gz /backup/web${nr}.tar.gz
        fi
        /bin/rm -r /backup/web${nr}
        if [ "`groups web${nr} | grep ${backup_group} | sed 's/web[0-9]\{1,3\}.:.ftponly.//'`" = ${backup_group} ]; then
            /bin/cp /backup/web${nr}.tar.gz ${web_dir}/web${nr}/files/web${nr}.tar.gz
            /bin/chown web${nr}:ftponly ${web_dir}/web${nr}/files/web${nr}.tar.gz
            if [ "${ftp_upload}" = yes ]; then
                /usr/bin/ncftpput -V -u ${ftp_user} -p ${ftp_pass} ${ftp_ip} ${ftp_dir} /backup/web${nr}.tar.gz
            fi
        fi
done
 
Last edited by a moderator:
@ monotek

Super! Danke für den Skript. (kann ich gut gebrauchen)

@all
Danke für Eure Antworten. Hab mir heute noch etwas Webspace auf nen anderen Server gemietet. Dort schieb ich dann meine Backups hin. Denke dass es dann sicher genug ist.

Gruß

snurps
 
djrick said:
MySQL, WWW Dateien Sicherung gibts doch auch schon in Confixx oder?

Ja. Allerdings kanns du mit meinem Script halt auch bestimmte Sachen des HTML Verzeichnisses über die Exclude Listen ausschließen. Außerdem ist das Script eher für den Admin als für die User gedacht, da der Admin anhand der Backupgruppe entscheiden kann was gesichert wird und was nicht. Üben den System Teil kann mann noch allerhand anderes sichern...
Der FTP Upload ist außerdem auch noch nen Feature, welches imho ganz nützlich ist. Besonders wenn man nen S4Y Root Server hat und da sowieso noch FTP Backup Space dazu bekommt ;-)
Aber sicherlich auch kein unbedingtes Musthave...
 
Das Script hab ich mir allerdings gleich mal kopiert.

Ich hab nen Rooty von S4Y allerdings nutz ich den Backupspace nicht. 2 GB ist so gut wie nix bei 40 GB HDD ;)
Da krieg ich gerade mal die Logfiles gesichert
 
Daher ja die Backupgruppe. Sichere da auch nu meine wichtigen Sachen. Der Rest bleibt dem User überlassen. Das Script ist aber auch so anpassbar, dass jeder User nen Backup in seinem Files Verzeichnis findet, dann aber für die weitere Sicherung selbst verantwortlich ist...
Jeder wie er mag :-)
 
Hallo,
mir ging es sowieso mehr um die DB's und die webs der User.

Leider wollte mein Server den Skript nicht so recht brachte immer bash Fehler.

Deshalb hab ich analog einen Skript in php geschrieben (hatte ich schon was und kenne mich da auch besser aus). Dieser tut seit Sonntag seine arbeit.

Gruß

snurps_gel
 
Die Fehlermeldung ist

2005-05-17 23:14:41.400 -bash: line 34: bs_skript: command not found

wenns jemand findet ist es ok wenn nicht ist es nicht so schlimm hab ja meinen php skript.

Gruß

snurps_gel
 
Aufruf per cronjob.
Verzeichnis ausserhalb der Webs.
Benutzer root.

Gibts noch weiter Sicherheitsvorkehrungen für das php-Skript?

gruss

snurps_gel
 
ich empfehle dir rdiff-backup

sichert deine Daten incrementiert. Also nur neu hinzugekommene Daten werden gesichert. Somit kannst du das Backup täglich laufen lassen und es wird nur ein minimum an Traffic verursacht. Außerdem kannst du das Backup zurückspielen zu dem Datum, das du haben willst, da alle Änderungen gespeichert werden.

Zu guter letzt erfolgt das Backup verschlüsselt per SCP bzw. SSH auf einen Remote-Server
 
Habe das Script nun nochmal etwas erweitert.
Die Mails werden jetzt auch gesichert.
 
Back
Top