PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Perl] Problem mit mp3 Backup via topod



hp21
14-06-2006, 22:51
Hallo, also ich zum Backup von mp3 Datein nutze das Perlskript von Michael Schilli
http://www.linux-magazin.de/Artikel/ausgabe/2003/08/perl/perl.html
Dies lief auch recht gut. Doch leider läuft es nicht mehr richtig, das Skript befüllt im allersten Durchlauf die Ordner mit der richtigen Größe, beim 2 & n. Durchlauf befüllt es nicht den letzten Ordner sondern fängt wieder beim 1. an. Wo liegt das Problem?

Perl 5.8.8

mfg



#!/usr/bin/perl
###########################################
# topod
# Mike Schilli, 2003 (m@perlmeister.com)
###########################################
use warnings;
use strict;

my $POD_DIR = "/mnt/120gb02/PODS";

use File::Basename;
use Algorithm::Bucketizer;
use File::Copy;

my %seen = ();

# Init buckets
my $b = Algorithm::Bucketizer->new(
bucketsize => 733_000_000,
algorithm => 'simple',
);


# Prefill buckets with existing Pods
while(<$POD_DIR/*>) {
my($idx) = /(\d{3})/;

while(<$POD_DIR/$idx/*.mp3>) {
my $base = basename($_);
if(exists $seen{$base}) {
print "Dupe detected: $_\n";
}
$seen{$base}++;
$b->prefill_bucket($idx - 1,
$_, -s $_);
}
}

while(<*.mp3>) {
if(exists $seen{$_}) {
print "Not adding dupe: $_\n";
next;
}

$seen{$_}++;

my $bucket = $b->add_item($_, -s $_);

my $path = sprintf "$POD_DIR/%03d/$_",
$bucket->serial();
unless(-d dirname($path)) {
mkdir dirname($path) or
die "Cannot mkdir " .
dirname($path);
}
move($_, $path) or
die "Cannot move $_ to $path";
}