Personal tools




Backup.pl

From OrganicDesign Wiki

Jump to: navigation, search
#!/usr/bin/perl
# - Licenced under LGPL (http://www.gnu.org/copyleft/lesser.html)
# - Author: http://www.organicdesign.co.nz/nad
 
use POSIX qw(strftime setsid);
require "/var/www/wiki.pl";
 
# TODO - add individual config files
# /etc/apache2/conf/sites-available/default
# /etc/exim4/virtual.users
# /etc/exim4/virtual.domains
# /etc/passwd?
 
$dir  = '/home/nad';
$date = strftime('%Y-%m-%d',localtime);
 
# Wiki settings
$::wiki     = "http://organicdesign.co.nz/wiki/index.php";
$::wikiuser = 'bender';
$::wikipass = '******';
wikiLogin($::wiki, $::wikiuser, $::wikipass);
 
# Return size of passed file in MB
sub size { return (int([stat shift]->[7]/104857.6+0.5)/10).'MB'; }
 
# Post a comment to the wiki's server-log article
sub comment {
        $comment = shift;
        wikiAppend($::wiki, 'Server log', "\n*$comment", $comment);
}
 
# Backup and compress databases
$s7z = "all-$date.sql.7z";
$sql = "$dir/all.sql";
qx( mysqldump -u root --password='**********' -A >$sql );
qx( 7za a $dir/$s7z $sql );
qx( chmod 644 $dir/$s7z );
comment "DB backup: $s7z (".size($sql)."/".size("$dir/$s7z").")";
 
# Backup and compress file structure (weekly)
if ($date =~ /[0-9]+-[0-9]+-(01|09|16|24)/) {
	$t7z = "www-$date.t7z";
	$tar = "$dir/www.tar";
	qx( tar -cf $tar /var/www );
	qx( 7za a $dir/$t7z $tar );
	qx( chmod 644 $dir/$s7z );
	comment "FS backup: $t7z (".size($tar)."/".size("$dir/$t7z").")";
	}

The GNU Project Debian Linux Ubuntu Linux Wikipedia Affiliate Button MediaWiki