Thread Verzeichnisstrukturen älter als 30 Tage verschieben in ein Backup verschieben (25 answers)
Opened by nastja at 2010-04-15 15:57

nastja
 2010-04-15 18:24
#136122 #136122
User since
2010-04-15
20 Artikel
BenutzerIn
[default_avatar]
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 ($!)"); }
  }
}

View full thread Verzeichnisstrukturen älter als 30 Tage verschieben in ein Backup verschieben