PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Eigenes C++ Programm mit MySQL und FTP schreiben!



ElDiablo666
04-01-2002, 11:28
Hallo Leute!

Mein Server (SuSE Linux 7.3) hatte leider einen kompletten Datenverlust (RAM und/oder HDD defekt) und das möchte ich demnächst vermeiden.
Die Daten die ich sichern müsste wäre eine Homepage (dafür gibt es Programme zum spiegeln von WWW-Seiten) und die Daten in einer MySQL Datenbank.
Für die MySQL Datenbank habe ich mir folgendes überlegt:
Ich möchte ein C++-Programm schreiben, was einen MySQL-Dump macht also alle Daten aus einer Datenbank rausholt und in eine .sql (?) Datei schreibt, die man später mit sql wieder einlesen könnte. Diese Datei soll dann z.B. gezippt werden und auf einen FTP geladen werden. Das Programm soll dann als cronjob laufen und z.B. alle 24 Stunden die neue Datei uploaden bzw. vorher die alten löschen.
Unter php würde das gehen, weil dort MySQL Unterstützung und FTP mit drin ist also welche Library soll/muss ich nehmen, damit ich Methoden dafür bekomme?
Soll möglichst alles GNU sein, damit ich das Programm (wenn es denn dann fertig ist und was taugt) auch als GNU weiter geben kann.

Weiterhin wüsste ich jetzt keinen Anfang, wenn ich z.B. eine Test.h und eine Test.cpp hätte, wie ich die unter Linux zu einer binary kriegen sollte! Makefile? Wie? Geht das auch anders?

ElDiablo666

xstevex22
04-01-2002, 18:53
Hi,
du brauchst keine Zeile C/C++ zu schreiben, denn für diese Aufgabe brauch nur ein Shellskript her.
Also, deine SQL-DB sicherst du mit mysqldump (man mysqldump für alle Optionen):

mysqldump --databases <db-name> > /tmp/db-dump.sql

Danach tarst du das ganze, sprich packen:

tar -cvzf /tmp/db-dump.tar.gz /tmp/db-dump.sql

Nach dem einpacken kann das Ding dann per FTP hochgeladen werden. Um das automatisiert zu machen, musst du eine Datei anlegen (als root):

touch $HOME/.netrc
chmod 0600 $HOME/.netrc

In die Datei muss folgendes:

machine <der name des FTP servers, z.B. ftp.bla.de oder eine IP wie 213.45.23.45)
login <benutzername>
password <FTP-Passwort>

Das war's. Jetzt kannst du mit dem Befehl (Die Sachen in Anführungszeichen auf Gegebenheiten anpassen!)

ftp "hostname bzw. IP" << **
cd "zielverzeichnis"
bin
put /tmp/db-dump.tar.gz
bye
**

die Datei auf den FTP hochladen.
Die o.a. Befehle einfach in ein Skript packen und das mit einem cronjob aufrufen lassen, feddisch!

ElDiablo666
04-01-2002, 23:20
Klappt wunderbar bis auf die Zeile
put /tmp/db-dump.tar.gz
die muss
put /tmp/db-dump.tar.gz db-dump.tar.gz
lauten...

Und es kommt
502 Unimplemented Command zwischen local: /tmp/... und 227 Entering Passive... warum auch immer!
Mache ich das mit dem FTP per Hand kommt der Fehler nicht...

:)