Category: | Utility Scripts |
Author/Contact Info | penguinfuz at wonderwaylabs dot com |
Description: | This script backs up each MySQL database into individual gzip'd files; Useful in shared environments where many users have their own MySQL databases and wish to have daily backups of their own data. UPDATE: 17/07/2003
|
#! /usr/bin/perl -w # db-backup.pl # Dump and gzip each MySQL database. use strict; use DBI; my $dbhost = "localhost"; my $dbuser = "root"; my $dbpass = "easyONE"; my $date = "`date +%Y-%m-%d`"; my $path = "/your/archive/db"; my $ext = "bz2"; flush_old($path,$ext); my($dbh,$sth,$query); my $dsn = "DBI:mysql:host=$dbhost"; $dbh = DBI->connect($dsn,$dbuser,$dbpass,{PrintError => 0, RaiseErr +or => 1}); $query = qq^SHOW DATABASES^; $sth = $dbh->prepare($query); $sth->execute(); while(my $ref = $sth->fetchrow_array()) { my @bp = `mysqldump --user=$dbuser --password=$dbpass --add-drop-t +able $ref | bzip2 -1 > $path/$ref.$date.$ext`; } $sth->finish(); $dbh->disconnect(); # - - - - - - - - - - - - - - - - - sub flush_old { my ($path,$ext) = @_; opendir BP_DIR,"$path" or die "Cannot open $path: $!\n"; my @old_backups = grep { /\.$ext$/ } readdir BP_DIR; closedir BP_DIR; for (@old_backups) { my @args = ("rm","-f","$path/$_"); system(@args); } } |
Back to
Code Catacombs