PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tägliches Backup Script



Datex
22.10.2002, 22:38
Ich hab keine ahnung ob es sowas gibt zumal es ein recht hohes sicherheits risiko mit sich bringt.
Mich würd intressieren ob es ein script gibt das mir täglich ein backup meiner db macht ?
Das ganze sollte dann die backup files in ein von mir auszuwählendes verzeichnis hinterlegen so das ich es im endeffekt nur noch vom server ziehen muss.

Harley
22.10.2002, 23:01
Moin,

wenn du einen eigenen Server hast oder die Möglichkeit eines cronjobs, dann trage einfach den mysql dump befehl in einen cron ein und dann kannste das in dein verzeichnis deiner wahl speichern. Oder sogar direkt per ftp woanderst hin transferieren. Somit keine unnötigen scripte und risiken zu erwarten.

Datex
23.10.2002, 08:20
Nope leider derzeit noch kein Server. Muss noch auf space bleiben für ne weile.

Afterburner
23.10.2002, 19:17
wenn du ein dumpscript hat dann bitte PM an mich, trage dich dann bei mir im server ein wegen dem CronJob

ZeroCool
13.11.2002, 23:37
Original geschrieben von Afterburner
wenn du ein dumpscript hat dann bitte PM an mich, trage dich dann bei mir im server ein wegen dem CronJob

Also ich habe einen eigenen Server und arbeite auch mit einigen Cronjobs. Aber egal wie ich es versuche ich bekomm das in diesem Fall nicht hin. Kannst Du mal ein Beispiel posten?

THx Robby

Bierhasser
14.11.2002, 07:18
Momentan läuft bei mir folgendes Script:


#!/usr/bin/perl

@Wochentage = ("SO","MO","DI","MI","DO","FR","SA","SO");
@a = localtime();
$a = $Wochentage[$a[6]];

$Filename = "/home/board/backup_$a.sql";

`/mysqldump --all -e -l --add-drop-table --host=localhost --user=DB_BENUTZER --password=DB_PASSWORT DB_NAME | gzip --best - > $Filename.gz`;
`chmod 0640 $Filename.gz`;

print("Datenbankbackup in $Filename.gz erstellt.\n");

Als dbackup.pl abspeichern, CHMOD 755 und peer Cronjob eintragen.

ZeroCool
15.11.2002, 14:08
Original geschrieben von Bierhasser
Momentan läuft bei mir folgendes Script:


#!/usr/bin/perl

@Wochentage = ("SO","MO","DI","MI","DO","FR","SA","SO");
@a = localtime();
$a = $Wochentage[$a[6]];

$Filename = "/home/board/backup_$a.sql";

`/mysqldump --all -e -l --add-drop-table --host=localhost --user=DB_BENUTZER --password=DB_PASSWORT DB_NAME | gzip --best - > $Filename.gz`;
`chmod 0640 $Filename.gz`;

print("Datenbankbackup in $Filename.gz erstellt.\n");

Als dbackup.pl abspeichern, CHMOD 755 und peer Cronjob eintragen.

Klappt nicht :-( So langsam verzweifele ich. Muss ich noch irgendwas ändern oder so?

Oder poste mir mal Deinen Cronjob. THx

Gruss Robby

Bierhasser
15.11.2002, 17:08
Der Crontab macht nichts anderes als jeden Tag um 1Uhr die Datei aufzurufen. Und das funktioniert bestens.
Crontab: 0 1 * * * $HOME/dbbackup.pl

ZeroCool du musst natürlich die Pfade im Script anpassen

$Filename = "/home/board/backup_$a.sql";

und bei dem Befehl natürlich noch Deine DB_BENUTZER
Dein PASSWORT und Deine DATENBANK eintragen

ZeroCool
15.11.2002, 17:17
Original geschrieben von Bierhasser
Der Crontab macht nichts anderes als jeden Tag um 1Uhr die Datei aufzurufen. Und das funktioniert bestens.
Crontab: 0 1 * * * $HOME/dbbackup.pl

ZeroCool du musst natürlich die Pfade im Script anpassen

$Filename = "/home/board/backup_$a.sql";

und bei dem Befehl natürlich noch Deine DB_BENUTZER
Dein PASSWORT und Deine DATENBANK eintragen

Der Cronjob läuft, hab ich gerade getestet. Er packt das BackUp auch ins richtige Verzeichnis etc., aber die Datei ist leer.

Achja, Pfad, Benutzer, PW, DB hatte ich Alles geändert. Logischerweise im ASCII-Modus geupped, ChMod755, etc.

Woran kann´s noch liegen?

Gruss Robby

ZeroCool
15.11.2002, 23:26
So, da der Cronjob lief aber das Script nicht, hab ich mir ein neues Script geholt, und zwar Folgendes:


<?php
// Bitte hier Ihre Daten eintragen
$host= 'dbxx.puretec.de';
$user= 'dbxxxxxx';
$pass= 'xxxxxxxx';
$db= 'dbxxxxxxx';

// Befehl ausführen und in Zipfile speichern
system(sprintf(
'mysqldump --opt -h %s -u %s -p%s %s | gzip > %s/dump.sql.gz',
$host,
$user,
$pass,
$db,
getenv('DOCUMENT_ROOT')
));
echo '+DONE';
?>

Kann man das jetzt noch jemand so umändern, dass die Datei fortlaufend numeriert wird?

THx im Vorab

Gruss Robby

pogo
15.11.2002, 23:29
Benutz doch einfach die date() Funktion, um dem Dateinamen noch ein Datum oder eine Uhrzeit zu geben.

Beispiele findest Du hier: http://www.php.net/manual/en/function.date.php

ZeroCool
15.11.2002, 23:44
Original geschrieben von pogo
Benutz doch einfach die date() Funktion, um dem Dateinamen noch ein Datum oder eine Uhrzeit zu geben.

Beispiele findest Du hier: http://www.php.net/manual/en/function.date.php

:-( Genau das will ich ja und hab ich auch schon mehrmals versucht umzusetzen, aber ich rall das heut nicht.

Gruss Robby

pogo
16.11.2002, 00:04
Versuchs mal so:

<?php
// Bitte hier Ihre Daten eintragen
$host= 'dbxx.puretec.de';
$user= 'dbxxxxxx';
$pass= 'xxxxxxxx';
$db= 'dbxxxxxxx';
$date= date('ymd');

// Befehl ausführen und in Zipfile speichern
system(sprintf(
'mysqldump --opt -h %s -u %s -p%s %s | gzip > %s/dump%s.sql.gz',
$host,
$user,
$pass,
$db,
getenv('DOCUMENT_ROOT'),
$date
));
echo '+DONE';
?>

ZeroCool
16.11.2002, 00:21
Original geschrieben von pogo
Versuchs mal so:

<?php
// Bitte hier Ihre Daten eintragen
$host= 'dbxx.puretec.de';
$user= 'dbxxxxxx';
$pass= 'xxxxxxxx';
$db= 'dbxxxxxxx';
$date= date('ymd');

// Befehl ausführen und in Zipfile speichern
system(sprintf(
'mysqldump --opt -h %s -u %s -p%s %s | gzip > %s/dump%s.sql.gz',
$host,
$user,
$pass,
$db,
getenv('DOCUMENT_ROOT'),
$date
));
echo '+DONE';
?>

Verwirrend, aber es funzt, THX. So ähnlich hatte ich das die ganze Zeit auch versucht, nur dass ich die Variable immer in den Dateinamen geschrieben habe, anstatt sie per %s aufzurufen.

Danke nochmal.

Gruss Robby

spammotel
20.11.2002, 22:37
@pogo

wie heißt dann die datei die rauskommt zum beispiel?

ZeroCool
20.11.2002, 22:47
Original geschrieben von spammotel
@pogo

wie heißt dann die datei die rauskommt zum beispiel?

dump201102.sql.gz

Gruss Robby

forumwurm
09.03.2007, 13:35
<?php
// Bitte hier Ihre Daten eintragen
$host= 'dbxx.puretec.de';
$user= 'dbxxxxxx';
$pass= 'xxxxxxxx';
$db= 'dbxxxxxxx';
$date= date('ymd');

// Befehl ausführen und in Zipfile speichern
system(sprintf(
'mysqldump --opt -h %s -u %s -p%s %s | gzip > %s/dump%s.sql.gz',
$host,
$user,
$pass,
$db,
getenv('DOCUMENT_ROOT'),
$date
));
echo '+DONE';
?> ich suche eigentlich sowas in der art, aber als shellscript (cronjob), wer kann einem newbe weiterhelfen.

ich möchte verschiedene datenbanken von einem mysql-server sichern
die sollen nachher (wenn möglich) in einer zip (gz, bz, was auchimmer) datei gepackt sein.
diese datei sollte mit dem datum versehen werden.
und schlussendlich solls als cronjob laufen.

gruss und dank fw

hcmagix
09.03.2007, 13:46
http://www.vbulletin-germany.com/forum/showthread.php?t=22889

bitte sehr