Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hallo an alle im Board,

ich bin neu und versuche einmal eine Anfrage..

Wir haben per Sicherungsscript eine Ordner mit unseren Serversicherungen als *.zip-Archive. Dieser Ordner füllt sich pro Tag mit einer Sicherungsdatei als *.zip. Nun läuft irgendwann der Speicher voll. Gibt es eine Möglichkeit, per Script / Batch die Anzahl der *.zip Archive bspw. auf 5 zu setzen und gleichzeitig die ältesten zu löschen? Wenn ich nur die ältesten filtere und entferne, könnte der Fall eintreten, bei dem sie Sicherung fehlschlägt und alle Sicherungen nach einer Zeit gelöscht werden, was natürlich nicht so gut wäre.

Vielen Dank an alle

Gruß koli7bri

windows oder linux

Sorry Windows, ich glaub im Bereich Linux hätte man da mehr Möglichkeiten..

Danke;)

notfalls kansnt du ja cygwin unter windows installieren

Ihr macht Datensicherung mit ZIP? :)

Naja wie auch immer...

Mach's doch z.B. mit VBS oder BAT. Das ganze lässt du dann einmal am Tag ausführen (oder je nachdem wie oft ihr sichert).

Ablauf könnte dann so aussehen:

Anzahl der *.Zip Dateien im Ordner auslesen

Wenn es kleiner gleich 5 sind => Skript ende

Erstellungsdatum einlesen

Die ältesten löschen, bis nur noch 5 drinne sind...

Fertig :)

Hi,

Sorry Windows, ich glaub im Bereich Linux hätte man da mehr Möglichkeiten..

daher sollte man eine plattforumunabhängie Scriptsprache benutzen ;)

Normalerweise solltest du das ja selbst machen, aber hier mal ein Perlscript,

dass dein Problem löst.


#!c:/perl/bin/perl -w

# Author: victorinox

# Title: logrotate.pl


use strict;


my $minimum_days_to_keep=5;

my $minimum_number_of_files_to_keep=5;

my $directory="d:/mybackup";

my $suffix="zip";


### main


my %hash;

foreach my $file (glob ("$directory/*$suffix"))

{

        my $age = -M $file;

        $hash{$file}=$age;

}


my $i=0;

foreach my $key (sort {$hash{$a} <=> $hash{$b}} (keys(%hash)))

{

        if (($i >= $minimum_number_of_files_to_keep) && ($hash{$key} > $minimum_days_to_keep))

        {

                unlink($key);

        }

        $i++;

}

Getestet auf Solaris (Perl 5.8) und Windows (Perl 5.10).

Vielen Dank an Euch,

leider bin ich im Srcipten nicht so sehr gut.

Wenn dieses unter einer Batch oder einem vb-script möglich wäre, dann wär mir schon geholfen.

Die Situation schaut so aus: In dem Backup-Ordner liegt ein zip-Archiv einer VM. Dieses Archiv heisst virtuelle_maschine_06-07-2009.zip Pro Tag zählt das Scherungsscript das aktuelle Datum aus und benennt das Zip-Archiv entsprechend. Davon benötigen wir aber nur 5 Sicherungen.

Meinst Du das Perl Script? Ich habe jedoch keinen Perl Interpreter auf dme SBS2003. Sollte ich Cygwin installieren oder ist dieses anders möglich?

Danke an alle

Vielen Dank victorinox,

ich gehe davon aus die Perl Umgebung zu installieren. KAnn ich dann das Script per Taskplaner ausführen? Ich hatte leider noch keine Erfahrung mit Perl.

Besten Dank

Ich habes dieses mal ausprobiert:

#!c:/perl/bin/perl -w

# Author: victorinox

# Title: logrotate.pl

use strict;

my $minimum_days_to_keep=10;

my $minimum_number_of_files_to_keep=10;

my $directory="Z:\Backup_VM's\test";

my $suffix="zip";

### main

my %hash;

foreach my $file (glob ("$directory/*$suffix"))

{

my $age = -M $file;

$hash{$file}=$age;

}

my $i=0;

foreach my $key (sort {$hash{$a} <=> $hash{$b}} (keys(%hash)))

{

if (($i >= $minimum_number_of_files_to_keep) && ($hash{$key} > $minimum_days_to_keep))

{

unlink($key);

}

$i++;

}

Und erhalte dabei aber folgendes:

Unrecognized escape \B passed thougt at D:\Backup\scripts\Anzahl_VMs.pl line 9.

Die fetten Zeilen habe ich angepasst, das Script habe ich als *.pl bezeichnet. Dieses wird auch gleich mit aktive Perl Zeichen dargestellt. Gestartet habe ich es in einer Dos Box.

In meinem Test Verzeichnis habe ich Textdateien als zip umbenannt und 40x hinein kopiert. Dabei tut sich jedoch nichts. Habe ich einen Fehler?

Danke

Zum einen hast du / und \ umgedreht. Sprich directory="Z:/Backup_VM's/test" wäre richtig.

Ausserdem wirst du mit dem kopieren ja die m-time der Datei ändern (modified time) und somit ist keine Datei älter als 1 Tag.

Wenn du $minimum_days_to_keep=0; setzt, dann behälst du "nur" die jüngsten 10 Dateien (da $minimum_number_of_files_to_keep=10) und das Alter der Datei an sich spielt keine Rolle, da ja alle älter sind als 0 Tage. ( Wobei natürlich beim Kopiervorgang die Frage ist, wann welche Datei kopiert wird und somit welche m-time gesetzt wurde ).

Am einfachsten kannst du es testen indem du die Dateien für den Test eine nach der anderen kopierst und zwar chronologisch.

Bearbeitet von bigvic

Hey DANKE :uli

Nun funktioniert es, so wie ich es benötige!!!

ein ganz großes Danke und natürlich eine Menge Respekt.

Einfach SUUUUUPER

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.