|
|
 |

|

 |

| Community » Perl: Allgemeines Forum |
|
rekursives kopieren und Datum Löschroutine
|
Seitenanfang |
| Hallo zusammen! Bin noch totaler Anfänger mit Perl. Ich muss ein perl Skript schreiben, welches einen bestimmten Ordner von einem Rechner(win) auf eine $ Freigabe(linux) kopiert. auf der $Freigabe soll der Ordner der erstellt wird wie das aktuelle Datum heißen. Außerdem soll eine Löschroutine vorhanden sein, die irgendwie guckt wie alt die vorhandenen Ordner sind. Es sollen immer nur 5 backups auf der Freigabe vorhanden sein! kommt ein 6ter dazu, soll der erste gelöscht werden. könntet ihr mir helfen??? Danke euch!!! Gruß Kostas
Datum: 23.11.2005-21:51

|
re: rekursives kopieren und Datum Löschroutine
|
Seitenanfang |
Hi, der Code ist teilweise ungetestet, sollte Dich aber auf den richtigen Weg führen:
#!/usr/bin/perl -wuse strict; use File::Copy::Recursive qw(rcopy); # from CPAN or with ppm # 1) Freigabe auf Laufwerksbuchstabe mappen, bitte anpassen, evt. auch mit userid und passwort, ungetestet! my $share = '\\server\share'; my $lwb = 'x:'; my $orig = 'c:\temp'; # oder was auch immer; my $get_share = system("net use $lwb $share"); if ($get_share) { # Rueckgabewert von Windows Commands ist 0, wenn Erfolg, sonst groesser als 0 die "Konnte $share nicht auf $lwb mappen\n"; } # 2) Heutiges Datum ermitteln, mal etwas ausfuehlicher und unperliger ;-) my @date = localtime(); # ergibt 20051124 fuer heute $date[3] = sprintf('%02d', $date[3]); # Tag, mit Nullen auffuellen $date[4] = sprintf('%02d', $date[4]+1); # Monat, gehen bei Perl von 0-11, deshalb +1 $date[5] = sprintf('%02d', $date[5]+1900); # Jahr, ist jeweils -1900, deshalb korrigieren my $today = join('', @date[5,4,3]); # 2a) Datum von vor 5 Tagen ermitteln (fr das Lschen), diesmal perliger @date = localtime(time()-432000); # das sind 5 Tage in Sekunden my $olddate = sprintf('%02d%02d%02d', $date[5]+1900, $date[4]+1, $date[3]); # 3) Verzeichnis anlegen mkdir("$share\\$today") or die "Konnte Verzeichnis $share\\$today nicht anlegen: " . $!; # 4) Kopieren rcopy($orig,"$share\\$today") or die "Kopieren gescheitert: " . $!; # man kann das auch mit xcopy oder so machen, dann braucht man kein Modul # 5) Loeschen (davon ausgehend, dass Du es von der Windows Seite aus machst) my $is_deleted = system("del /S $share\\$olddate"); if ($mis_deleted) { die "Loeschen ging schief.\n"; }
Gruss, svenXY
Datum: 24.11.2005-10:20

|
re: rekursives kopieren und Datum Löschroutine
|
Seitenanfang |
arrrrrrrrg! Fehler! Hatte $share und $lwb noch geändert, jetzt hängt's unten... So ist es korrekt:
#!/usr/bin/perl -wuse strict; use File::Copy::Recursive qw(rcopy); # from CPAN or with ppm # 1) Freigabe auf Laufwerksbuchstabe mappen, bitte anpassen, evt. auch mit userid und passwort, ungetestet! my $share = '\\server\share'; my $lwb = 'x:'; my $orig = 'c:\temp'; # oder was auch immer; my $get_share = system("net use $lwb $share"); if ($get_share) { # Rueckgabewert von Windows Commands ist 0, wenn Erfolg, sonst groesser als 0 die "Konnte $share nicht auf $lwb mappen\n"; } # 2) Heutiges Datum ermitteln, mal etwas ausfuehlicher und unperliger ;-) my @date = localtime(); # ergibt 20051124 fuer heute $date[3] = sprintf('%02d', $date[3]); # Tag, mit Nullen auffuellen $date[4] = sprintf('%02d', $date[4]+1); # Monat, gehen bei Perl von 0-11, deshalb +1 $date[5] = sprintf('%02d', $date[5]+1900); # Jahr, ist jeweils -1900, deshalb korrigieren my $today = join('', @date[5,4,3]); # 2a) Datum von vor 5 Tagen ermitteln (fr das Lschen), diesmal perliger @date = localtime(time()-432000); # das sind 5 Tage in Sekunden my $olddate = sprintf('%02d%02d%02d', $date[5]+1900, $date[4]+1, $date[3]); # 3) Verzeichnis anlegen mkdir("$lwb\\$today") or die "Konnte Verzeichnis $lwb\\$today nicht anlegen: " . $!; # 4) Kopieren rcopy($orig,"$lwb\\$today") or die "Kopieren gescheitert: " . $!; # man kann das auch mit xcopy oder so machen, dann braucht man kein Modul # 5) Loeschen (davon ausgehend, dass Du es von der Windows Seite aus machst) my $is_deleted = system("del /S $lwb\\$olddate"); if ($mis_deleted) { die "Loeschen ging schief.\n"; }
SvenXY
Datum: 24.11.2005-10:23

|
|

|

|

|
 |

|

|
|