Changeset 158

Show
Ignore:
Timestamp:
07/30/07 22:37:26 (2 years ago)
Author:
bradfitz
Message:

+ - Amazon list_backups and delete backups (and delete for filesystem
+ target too), from Alessandro Ranellucci <aar@…>

Location:
trunk
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • trunk/Changes

    r157 r158  
     1  - Amazon list_backups and delete backups (and delete for filesystem 
     2    target too), from Alessandro Ranellucci <aar@cpan.org> 
     3 
    14  - make tests pass on OS X (Jesse Vincent) 
    25 
  • trunk/brackup-target

    r150 r158  
    107107    my $name = shift @ARGV or 
    108108        die "get_backup requires a filename to download"; 
    109     $target->get_backup($name); 
     109    $target->get_backup($name) 
     110                or die "Failed to retrieve backup $name\n"; 
    110111} 
    111112 
     
    122123        $target->get_backup($si->filename); 
    123124    } 
     125} 
     126 
     127sub CMD_delete_backup { 
     128    my $name = shift @ARGV or 
     129        die "delete_backup requires a filename to download"; 
     130    $target->delete_backup($name) 
     131                or die "Failed to delete backup $name\n"; 
    124132} 
    125133 
  • trunk/lib/Brackup/Target/Amazon.pm

    r134 r158  
    143143} 
    144144 
     145sub backups { 
     146    my $self = shift; 
     147 
     148    my @ret; 
     149    my $backups = $self->{s3}->list_bucket_all({ bucket => $self->{backup_bucket} }); 
     150    foreach my $backup (@{ $backups->{keys} }) { 
     151        push @ret, Brackup::TargetBackupStatInfo->new($self, $backup->{key}, 
     152                                                      time => $backup->{last_modified}, 
     153                                                      size => $backup->{size}); 
     154    } 
     155    return @ret; 
     156} 
     157 
     158sub get_backup { 
     159    my $self = shift; 
     160    my $name = shift; 
     161         
     162    my $bucket = $self->{s3}->bucket($self->{backup_bucket}); 
     163    my $val = $bucket->get_key($name) 
     164        or return 0; 
     165         
     166    open(my $out, ">$name.brackup") or die "Failed to open $name.brackup: $!\n"; 
     167    my $outv = syswrite($out, $val->{value}); 
     168    die "download/write error" unless $outv == do { use bytes; length $val->{value} }; 
     169    close $out; 
     170    return 1; 
     171} 
     172 
     173sub delete_backup { 
     174    my $self = shift; 
     175    my $name = shift; 
     176         
     177    my $bucket = $self->{s3}->bucket($self->{backup_bucket}); 
     178    return $bucket->delete_key($name); 
     179} 
     180 
    1451811; 
    146182 
  • trunk/lib/Brackup/Target/Filesystem.pm

    r148 r158  
    152152} 
    153153 
     154sub delete_backup { 
     155    my $self = shift; 
     156    my $name = shift; 
     157 
     158    my $file = sprintf '%s/%s.brackup', $self->_metafile_dir, $name; 
     159    die "File doesn't exist: $file" unless -e $file; 
     160    unlink $file; 
     161    return 1; 
     162} 
     163 
    1541641; 
    155165