(PERL) Verzeichnisse + Inhalt rekursiv kopieren
utang
- perl
0 Erwin0 utang
0 Klaus Mock
Wenn es ihre Zeit erlaubt möchte ich sie gerne um ihre Kompetente Hilfe bei
der Beendigung meiner Kopier-Rekursions Funktion bitten.
use Cwd; #Modul zum Ermitteln des aktuellen Verzeichnisses
use File::Copy;
$DST_DIR = "/home/tmarsh/.fluxbox/";
$SRC_DIR = "/usr/portage/x11-wm/fluxbox";
mkdir("$DST_DIR",0755) or die "kann $DST_DIR nicht erstellen: $!\n";
&Fluxfscan("$SRC_DIR");
sub Fluxfscan {
my ($workdir) = shift;
my ($startdir) = &cwd;
chdir($workdir) or die "Kann nicht in $workdir wecheseln: $!\n";
opendir(USR,".") or die "Kann $workdir nicht öffnen: $!\n";
my @names = readdir(USR);
closedir(USR);
foreach my $name (@names) {
next if ($name eq ".");
next if ($name eq "..");
print "$name\n";
copy("$name","$DST_DIR");
if (-d $name) {
mkdir("$DST_DIR"."$name",0755) or die "Kann $name
nicht anlegen\n";
Fluxfscan("$SRC_DIR" . "$name");
next;
}
}
chdir($startdir) or die "Kann nicht in $startdir wechseln: $!\n";
}
Mein Problem liegt im Umgang mit der Variable $DST_SRC ...
Ich bekomme keine vernünftige Lösung mit dem richtigen kopieren der
Unterverzeichnisse un deren Inhalt hin.
Das normale kopieren klappt wenn ich $name nicht auf "-d" prüfe .... soblad
er aber prüfen und dementsprechend kopieren soll scheitert mein unterfangen
daran, das die datein nur zum Teil in den richtegen Ziel verzeichnissen sich
befinden.
Wäre sehr erfreut wenn sie mir vlt. wieter helfen können.
hi,
use File::Copy;
siehe auch
File::Path;
my $dirname = dirname($local_file);
if ( not -d $dirname ){
mkpath( $dirname, 0, 0666 );
}
Erwin
erstmal danke , ich hatte den Ansatz auch schon in erwägung gezogen,aber es fuktionierte nicht ... egal wo ich das hingesetzt habe hatte ich die gleichen Probleme ... sprich alle Datein in ein und dem selben Verzeichniss ...
Hallo,
$SRC_DIR" . "$name"
Ich weiß ja nicht wie Du es siehst, aber irgendwie fehlt da spätestens nach der ersten Ebene ein Verzeichnistrennzeichen.
Abgesehen davon halte ich nichts davon, ständig das Verzeichnis zu wechseln, zumal opendir auch ganz gut mit absoluten Pfadangaben klarkommt.
BTW: Ist Dir copydir() aus dem File::Copy-Modul bekannt?
Grüße
Klaus
Hallo Klaus,
pruefe mal deinen Mail-Account. Ich kriege seit 3 Wochen ein 'User quota
full' zurueck.
Gruesse,
CK