Changeset 148

Show
Ignore:
Timestamp:
05/23/07 16:27:23 (3 years ago)
Author:
bradfitz
Message:

commands to get brackup files from server

Location:
trunk
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • trunk/brackup-target

    r147 r148  
    9595 
    9696sub CMD_list_backups { 
    97     use Data::Dumper; 
    9897    foreach my $si ($target->backups) { 
    9998        printf("%-35s %-20s %10d\n", 
     
    104103    return 1; 
    105104} 
    106     
     105 
     106sub CMD_get_backup { 
     107    my $name = shift @ARGV or 
     108        die "get_backup requires a filename to download"; 
     109    $target->get_backup($name); 
     110} 
     111 
     112sub CMD_get_backups { 
     113    foreach my $si ($target->backups) { 
     114        debug("Fetching " . $si->filename); 
     115        $target->get_backup($si->filename); 
     116    } 
     117} 
     118 
     119sub debug { 
     120    my $msg = shift; 
     121    return unless $opt_verbose; 
     122    warn "$msg\n"; 
     123} 
    107124 
    108125 
  • trunk/lib/Brackup/Target.pm

    r145 r148  
    6868} 
    6969 
     70# downloads the given backup name to the current directory (with 
     71# *.brackup extension) 
     72sub get_backup { 
     73    my ($self, $name) = @_; 
     74    die "ERROR: get_backup method not implemented in sub-class $self"; 
     75} 
     76 
    70771; 
    7178 
  • trunk/lib/Brackup/Target/Filesystem.pm

    r147 r148  
    123123    my @ret = (); 
    124124    while (my $fn = readdir($dh)) { 
    125         next unless $fn =~ /\.brackup$/; 
    126         my $stat = File::stat::stat("$dir/$fn"); 
     125        next unless $fn =~ s/\.brackup$//; 
     126        my $stat = File::stat::stat("$dir/$fn.brackup"); 
    127127        push @ret, Brackup::TargetBackupStatInfo->new($self, $fn, 
    128128                                                      time => $stat->mtime, 
     
    131131    closedir($dh); 
    132132    return @ret; 
     133} 
     134 
     135# downloads the given backup name to the current directory (with 
     136# *.brackup extension) 
     137sub get_backup { 
     138    my ($self, $name) = @_; 
     139    my $dir  = $self->_metafile_dir; 
     140    my $file = "$dir/$name.brackup"; 
     141    die "File doesn't exist: $file" unless -e $file; 
     142    open(my $in,  $file)            or die "Failed to open $file: $!\n"; 
     143    open(my $out, ">$name.brackup") or die "Failed to open $name.brackup: $!\n"; 
     144    my $buf; 
     145    my $rv; 
     146    while ($rv = sysread($in, $buf, 128*1024)) { 
     147        my $outv = syswrite($out, $buf); 
     148        die "copy error" unless $outv == $rv; 
     149    } 
     150    die "copy error" unless defined $rv; 
     151    return 1; 
    133152} 
    134153