#!/usr/local/bin/perl use warnings; use strict; $|++; use vars qw( $LOGDIR $TESTING $TAPEPATH $DISKPATH $SNAPPATH %DRIVES $DUMP $REMOTE $FSSNAP $SUDO ); do '/etc/ufsdump.config' or die "No/bad /etc/ufsdump.config\n"; $FSSNAP ||= "/usr/sbin/fssnap"; $DUMP ||= "/usr/sbin/ufsdump"; $SUDO ||= "/usr/local/bin/sudo"; use vars qw( @KEEP @LEVELS $DEFAULT ); foreach my $drive (sort keys %DRIVES) { my $info = ref $DRIVES{$drive} ? $DRIVES{$drive} : $DEFAULT; my $raw = ref $DRIVES{$drive} ? $$info{'physical'} : $DRIVES{$drive}; my $fssnap = "\`$FSSNAP -F ufs -o raw,bs=$SNAPPATH,unlink $raw\`"; my $time = sprintf("%04d-%02d-%02d", (localtime)[5] + 1900, (localtime)[4] + 1, (localtime)[3]); my $log = "$LOGDIR/$drive.0.$time"; my $string = ""; if ($REMOTE) { $string = "$DUMP 0baNfun 512 $log $raw - $fssnap $REMOTE"; } elsif ($TAPEPATH) { $string = "$DUMP 0baNfunc 512 $log $raw $TAPEPATH $fssnap"; } else { die "No defined place to put level 0 backups\n"; } print "$string\n"; unless ($TESTING) { stop_ntp(); system("$string"); system("$FSSNAP -F ufs -d $raw"); start_ntp(); } } sub stop_ntp { system("$SUDO /etc/init.d/xntpd stop > /dev/null 2>&1"); } sub start_ntp { system("$SUDO /etc/init.d/xntpd start > /dev/null 2>&1"); }