View Single Post
  #1 (permalink)  
Old 02-07-2010, 05:14 PM
dhipo dhipo is offline
Starter Member
 
Posts: 2
Default Per User Backup Foss edition

This is my script to backup all users mailboxes. The restore can be done using import feature in preferences of user.

The goal is .. Can be done with live Zimbra Server, no downtime, no offline mode.

enjoy,
Code:
#################cut here####################
#!/usr/bin/perl 
## Perl Script to Backup Mailboxes
## All users are backup“ed 
## Gpl“d by Douglas Hipocreme (douglas at dhix.com.br)
use Date::Format;
use File::Find;
use File::Find qw(finddepth);
$periodo= time2str("%d%m%Y", time);
$bkpdest = "/tmp/mailboxes";
*name = *File::Find::name;
finddepth \&zap, $bkpdest;
sub zap {
    if (!-l && -d _) {
        rmdir($name)  or warn "couldn't rmdir $name: $!";
    } else {
        print "unlink $name\n";
        unlink($name) or warn "couldn't unlink $name: $!";
    }
}
mkdir "$bkpdest", 0777 unless -d "$bkpdest";
$mode = 0777;   chmod $mode, "$bkpdest"; 
$usuarios = "/$bkpdest/user-list-full";

$mode = 0777;   chmod $mode, "$usuarios";

my $usersid = `su - zimbra -c 'zmprov gaa'>$usuarios`;
open (MYFILE, $usuarios);
	while (<MYFILE>) 
	{
    chomp;
	 my ($user ) = split(/\;/, $_, 1);
	 print qq {========================\n};
	 print qq {"Doing compress on $user" ......\n};
	 my $process = `su - zimbra -c 'zmmailbox -z -m $user getRestURL '//?fmt=tgz' > $bkpdest/$user.tgz'`;
	 print qq {"Compressed sucesfully  $user"\n};
	 print qq {========================\n};
	}
close(MYFILE);
use File::Find;
use Archive::Zip qw( :ERROR_CODES :CONSTANTS );
my $dir = $bkpdest;
my $zip = Archive::Zip->new();
my $zipped;
$zipped = $zip->addDirectory( $dir );
$zipped->desiredCompressionMethod( COMPRESSION_DEFLATED );
find(\&zip_file, $dir);

die 'write error' unless $zip->writeToFileNamed('/tmp/backup/'.$periodo.'-mailboxes.zip') == AZ_OK;

sub zip_file {
$zipped = $zip->addFile( $File::Find::name );
}
###### end of script ###########################

Last edited by phoenix; 02-07-2010 at 11:42 PM..
Reply With Quote