Backup domain
From PrgmrWiki
#!/usr/bin/perl my @disks,@stores,@files,@lvs; $domain=$ARGV[0]; my $destdir="/var/backup/xen/${domain}/"; system "mkdir -p $destdir"; open (FILE, "/etc/xen/$domain") ; while (<FILE>) { if(m/^disk/) { s/.*\[\s+([^\]]+)\s*\].*/\1/; @disks = split(/[,]/); # discard elements without a :, since they can't be # backing store specifiers while($disks[$n]) { $disks[$n] =~ s/['"]//g; push(@stores,"$disks[$n]") if("$disks[$n]"=~ m/:/); $n++; } $n=0; # split on : and take only the last field if the first # is a recognized device specifier. while($stores[$n]) { @tmp = split(/:/, $stores[$n]); if(($tmp[0] =~ m/file/i) || ($tmp[0] =~ m/tap/i)) { push(@files, $tmp[$#tmp]); } elsif($tmp[0] =~ m/phy/i) { push(@lvs, $tmp[$#tmp]); } $n++; } } } close FILE; print "xm save $domain $destdir/${domain}.xmsave\n"; system ("xm save $domain $destdir/${domain}.xmsave"); foreach(@files) { print "copying $_"; system("cp $_ ${destdir}") ; } foreach $lv (@lvs) { system("lvcreate --size 1024m --snapshot --name ${lv}_snap $lv"); } system ("xm restore $destdir/${domain}.xmsave && gzip $destdir/${domain}.xmsave"); foreach $lv (@lvs) { $lvfile=$lv; $lvfile=~s/\//_/g; print "backing up $lv"; system("dd if=${lv}_snap | gzip -c > $destdir/${lvfile}.gz" ) ; # replace dd with partimage-ng for faster results system("lvremove ${lv}_snap" ); }