Thread Verzeichnisstrukturen älter als 30 Tage verschieben in ein Backup verschieben
(25 answers)
Opened by nastja at 2010-04-15 15:57
ich habe jetzt ganz schnell diesen Skript von dir geändert, und versucht es so anzupassen, wie ich es möchte, habe dann die Methode make_dir von dir übernommen und die Schleife, nachdem ich es gemacht habe, funktioniert gar nichts...))
Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 #!c:/perl/bin/perl -w use strict; use warnings; use File::Copy; use File::Spec; use File::Find; use File::stat; # dein ordner wo drinne geloescht werden soll my $srcDir ='C:/Users/cthdev34/Desktop/map'; my $destDir = 'C:/Users/cthdev34/Desktop/map/bakup'; my $oldInDays=30; my @sortFiles; #Elemente älter als 30 Tage my @dirs; #alle Ordner my @fils; #alle Dateien my $st; my $logFile = "$srcDir/Liste.txt"; my $inum_Tage = 30; #&cd($dir); find(\&sort,$srcDir); foreach(@dirs){print "Ordner:",$_,"\n";} foreach(@fils){print "Datei:",$_,"\n";} foreach(@sortFiles){print "Sortiert:", $_,"\n";} #ALLE ORDNER #****************************************************************************** sub sort { my $file = $File::Find::name; push(@dirs,$file) if (-d $file); push(@fils, $file) if (-f $file); push(@sortFiles,$file) if ( -M $file > $inum_Tage); } #ich glaube es liegt an dieser Zeile...... ich habe versucht es so zu machen.....ist leider falsch, wenn ich es komplett raushole, passiert gar nichts... #@sortFiles = find(\&sort(File::Spec->rel2abs($srcDir)); # die dateien loeschen die aelter als 30 tage sind for (sort(@sortFiles)) { # für die Quelle aus dem relaiven einen absoluten Pfad machen my $srcName=File::Spec->rel2abs($_, $srcDir); # ist es eine Datei und soll gelöscht werden? if ( -f $srcName) { # für das Ziel aus dem relaiven einen absoluten Pfad machen my $destName=File::Spec->rel2abs($_, $destDir); # nötige Verzeichnisse am Ziel erstellen wenn es nötig ist. my ($volume,$directories,$file) = File::Spec->splitpath( $destName ); make_dirs(File::Spec->catpath($volume, $directories)); # Datei verschieben move($srcName,$destName); } } # die ordner loeschen die leer sind # rmdir loescht nur leere ordner foreach( sort(@sortFiles)) { if ( -d $_) { my $DirName=File::Spec->rel2abs($_, $srcDir); rmdir($DirName); } } # Erzeugen von Verzeichnissen wenn sie nicht existieren sub make_dirs { my $path=shift; my $dnow=''; ($dnow,$path)=File::Spec->splitpath($path, 1); for(File::Spec->splitdir($path)) { $dnow=File::Spec->join($dnow, $_); unless(-d $dnow) { mkdir($dnow) or die("ERROR mkdir: $dnow ($!)"); } } } |