Skip to content
Tags

[Perl] w3bak.pl : a (little) Perl script to backup server files and SQL databases

by hezad on May 31st, 2010

A friend of mine was recently singing the praises of Perl so I decided to try it out.  Any bash script could do what this script does but I wanted to do it with Perl.

The script has been written under debian so you may have to change the first line (perl’s path) depending on your distro.

Usage :

sudo ./w3bak.pl <SQL login> <SQL password> [<www path> <backup folder> ]

Default values :

<www path>        = /var/www
<backup folder>  = the script’s folder

Source code :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#!/usr/bin/perl
 
use strict;
use warnings;
use POSIX qw(strftime);
my $date = strftime "%d-%m-%y", localtime;
 
print <<"EOP";
+ ------------------ w3bak.pl ------------------ +
|                                                |
| This script will make a backup of your server  |
| data. For now, two things are saved :          |
|                                                |
| 1) your www folder (or any folder used to host |
|    files)                                      |
| 2) your mysql databases structure and data     |
|                                                |
| USAGE :                                        |
| w3bak.pl <sql login> <sql password> <www path> |
| <backup folder>                                |
|                                                |
| DEFAULT VALUES :                               |
| <www path>       = /var/www                    |
| <backup folder>  = .                           |
|                                                |
+ -----------------------------------------------+
 
EOP
 
my $sql_login = $ARGV[0] || die('Erreur : login SQL non renseigné'."\n");
my $sql_password = $ARGV[1] || die('Erreur : password SQL non renseigné'."\n");
my $www_path = $ARGV[2] || "/var/www";
my $bak_folder = $ARGV[3] || '.';
 
$bak_folder .= "/w3bak_$date";
 
print "  -  Creating $bak_folder\n";
my $mkdir = `mkdir $bak_folder`;
print "  -  Copying $www_path\n";
my $files_bak = `cp -R $www_path $bak_folder`;
print "  -  Dumping databases\n";
my $dump = `mysqldump -u $sql_login -p$sql_password --all-databases > $bak_folder/sql_backup.sql`;
 
print "  -  Done.\n\n"

From → c0de

No comments yet

Leave a Reply

Note: XHTML is allowed. Your email address will never be published.

Subscribe to this comment feed via RSS

Spam protection by WP Captcha-Free