Previous Thread
Next Thread
Print Thread
Rate Thread
#105050 11/15/2005 1:53 PM
Joined: Jun 2001
Posts: 729
Joined: Jun 2001
Posts: 729
I run a small Perl script to back up my UBB directory and MySQL database. I would like to make an addition that would chack for space so that if X amount of space is not free the back up would abort then send me an email.

Here is what I have so far... Can someone give me a hand or point me in the right direction? Still very poor in writting code frown


# System backup

#------ Variables ------
$backupdir = "/usr/local/pwrhouse"; # "." for current
$other_dirs = "/usr/local/hostboard/mainboard/cgi-bin /usr/local/hostboard/mainboard/htdocs";
print "Backup Initiated...n";
@timenow = localtime(time);

$newfilename = sprintf("%02d",$timenow[4]+1) .
sprintf("%02d",$timenow[3]) . ($timenow[5] + 1900);
print "Using Filename: $newfilename.sql n";
print "Starting database backup... n";
system "mysqldump -qce -r $newfilename.sql -u root ubb";
print "Starting Compression... n";
system "tar czf $backupdir/$newfilename.tar.gz $other_dirs $newfilename.sql";
unlink "$newfilename.sql" || print "Error: Cannot delete file specified: $newfilename - $_ n";
print "Done. n"

Sponsored Links
#105051 11/21/2005 12:07 PM
Joined: May 2000
Posts: 1,356
Joined: May 2000
Posts: 1,356
you need to know the disk quota for that operation. Currently I don't have access to a linux system and I don't remember the exact command, but there may be some Quota modules on CPAN. And to calculate the approximate dump size, you have to calculate row lengths. I don't know how to get that value from command line, but this query will return the data:

this'll return a list with a lot of keys. "Data_length" is the one you are looking for. Here is a perl/DBI example:

use DBI;
my $dbname = "your_db_name";
my $dbh = DBI->connect('DBI:mysql:'.$dbname, 'root', '',{RaiseError => 1});
my $sth = $dbh->prepare("SHOW TABLE STATUS FROM $dbname");
my $size = 0;
while (my $stat = $sth->fetchrow_hashref) {
$size += $stat->{Data_length};
printf "Total data size: %.2f KB", $size / 1024;
here $size gives you an approximate value, because a db dump will include more information than data and a lot of insert() etc statements... But it'll give you a value to compare:

$space = $quota - $disk_space_I_currently_use;
# $xtra can be a constant value for insert() statements
if ($space > $size+$xtra) {
# do backup
} else {
# don't

#105052 11/21/2005 10:36 PM
Joined: Jan 2000
Posts: 5,832
Likes: 20
UBBDev / UBBWiki Owner
Time Lord
UBBDev / UBBWiki Owner
Time Lord
Joined: Jan 2000
Posts: 5,832
Likes: 20
[[email protected] ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/hdv1 10G 4.4G 5.7G 44% /

UBB.Dev - Putting Dev into UBB.threads
Company: VNC Web Services - UBB.threads Scripts and Scripting, Install and Upgrade Services, Site and Server Maintenance.
Forums: A Gardeners Forum, Scouters World, and UGN Security
UBB.Threads: My UBB Themes, My UBB Scripts

Link Copied to Clipboard
Donate Today!
Donate via PayPal

Donate to UBBDev today to help aid in Operational, Server and Script Maintenance, and Development costs.

Please also see our parent organization VNC Web Services if you're in the need of a new UBB.threads Install or Upgrade, Site/Server Migrations, or Security and Coding Services.
Recommended Hosts
We have personally worked with and recommend the following Web Hosts:
Stable Host
Visit us on Facebook
Member Spotlight
Posts: 190
Joined: June 2000
Forum Statistics
Most Online5,166
Sep 15th, 2019
Today's Statistics
Currently Online
Topics Created
Posts Made
Users Online
Top Posters
AllenAyres 21,079
JoshPet 10,369
LK 7,394
Lord Dexter 6,708
Gizmo 5,832
Greg Hard 4,625
Top Posters(30 Days)
Top Likes Received
isaac 81
Gizmo 20
Brett 7
WebGuy 2
Morgan 2
Top Likes Received (30 Days)
None yet
The UBB.Developers Network (UBB.Dev/Threads.Dev) is ©2000-2023 VNC Web Services

Powered by UBB.threads™ PHP Forum Software 8.0.0
(Preview build 20221218)