Subversion Repositories sysadmin_scripts

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
81 rodolico 1
#! /usr/bin/env perl
2
 
3
use strict;
4
use warnings;
5
 
6
my $clientBaseDirectory = '/var/www/clients/';
7
my $clientDirectoryPrefix = 'client';
8
my $dumpFileSuffix = 'dmp';
9
my $archiveDirectory = '/var/www/archives/';
10
 
11
my $client = shift;
12
my $name = shift;
13
my $rootPassword = shift;
14
 
15
sub getLine {
16
   my $message = shift;
17
   print "$message: ";
18
   my $return = <>;
19
   chomp $return;
20
   return $return;
21
}
22
 
23
sub backupDatabases {
24
   my ( $client, $rootPassword, $targetDir ) = @_;
25
   print "mysqlshow -u root -p$rootPassword\n";
26
   my @databases = `mysqlshow -u root -p$rootPassword`;
27
   chomp @databases;
28
   foreach my $thisdb ( @databases ) {
29
      next unless $thisdb =~ m/(c$client[a-z0-9_-]+)/;
30
      my $db = $1;
31
      print "Dumping database $db\n";
32
      `mysqldump -u root -p$rootPassword $db > $targetDir/$db.$dumpFileSuffix`;
33
   }
34
   print `ls -ablph $targetDir/*.$dumpFileSuffix`;
35
}
36
 
37
 
38
$client = &getLine( "Enter the client Number" ) unless $client;
39
$name = &getLine( "Enter an identifier for the output file" ) unless $name;
40
$rootPassword = &getLine( "Enter the mysql password" ) unless $rootPassword;
41
$rootPassword = "'$rootPassword'";
42
 
43
$clientBaseDirectory .= "$clientDirectoryPrefix$client";
44
 
45
`mkdir -p $archiveDirectory`;
46
$archiveDirectory .= "$name\_$clientDirectoryPrefix$client.tar.xz";
47
 
48
die "call with client and name\n$0 client_number nameOfFile\n" unless $client and $name;
49
die "Client with number $client does not exist as $clientBaseDirectory\n" unless -d $clientBaseDirectory;
50
 
51
&backupDatabases( $client, $rootPassword, $clientBaseDirectory );
52
 
53
print "Creating archive, this may take a while\n";
54
`tar -cvp $clientBaseDirectory | xz --stdout --threads=0 --memlimit=50% > $archiveDirectory`;
55
print "cleaning up database dump files\n";
56
`rm $clientBaseDirectory/*.$dumpFileSuffix`;
57
 
58
print "Done, backup is now stored in $archiveDirectory\n";
59
1;
60