Daten löschen die ein gewisses Alter erreicht haben

dennislassiter

Erfahrenes Mitglied
Hallo!

Ich mache mit einem Cron Job gesteuertem PHP-Script MySQL-Backups. Die Daten werden in diesem Format dann im Verzeichnis "Backups".

Z.B.

lyricsdb-2004-02-17-19-32.sql.gz
also
lyricsdb-Jahr-Monat-Tag-Stunde-Minuten.sql.gz
oder
lyricsdb-Y-m-d-H-i.sql.gz

Jetzt möchte ich, dass die Backups die älter sind als 7 Tage automatisch gelöscht werden.
Wie mach ich das

Bye,
Dennis
 
würde dir timestamp empfehlen.
alles das was größer is als das gespeicherte Timestamp + 7 Tage (in Sekunden) löschen


oh seh grade... sind ja dateien.
da wirds wohl nicht so klappen, müsstest du erst das datum auslesen, von der datei, geht vielleicht mit ftp...
 
dann lies das Verzeichnis ein, und zerlege den Dateinamen jeder Datei.
Fängt sie mit lyricsdb an weiterzerlegen in dein Datumsformat, dies dann mktime in einen Zeitstempel umwandeln und den vergleichst du mit dem aktuellen Zeitstempel (time()). Ist die Differenz >= 7 Tage dann löschst du sie.
 
So hatte ich mir das ja auch vorgestellet. Vielen dank für eure Antworten.
Leider weiß ich nicht wie ich das umsetzen soll.
Könnt ihr mir da zu mindest ansatzweise helfen?
 
opendir();
readdir();
closedir();
ereg() oder eregi();
explode();
mktime();

Mach dich darüber mal schlau, das sollte glauzb ich reichen, um die Dateien rauszusuchen, die älter als 7 Tage sind!
Php.net oder Onkel Google helfen dir !

mfg mAu
 
Danke!
Werd mal schauen...

---->Edit:
Mein Script (alle Rechte bei mir!):
Für mehrere Datenbanken. Eine Dateiname sieht jetzt so aus:
lyricsdb-1077046930.sql.gz

PHP:
<?php 
$handle=opendir('backups');
$counter=1;
$timestamp = time();
$zeitraum = 604800;

$dontallow = $timestamp - $zeitraum;
 
while ($file = readdir ($handle)) { 
   if ($file != "." && $file != "..") { 
       if(ereg("lyricsdb",$file)) {
	  $dbname  = explode("lyricsdb-",$file);
	  $dbname2 = explode(".sql.gz",$dbname[1]);
	  $songs[$counter] = $dbname2[0];
	  echo "$songs[$counter] : $dontallow<br>";
	  if($songs[$counter]<$dontallow) {
		unlink("backups/$file");
	  }
	}

       if(ereg("songsuch",$file)) {
	  $dbname  = explode("songsuch-",$file);
	  $dbname2 = explode(".sql.gz",$dbname[1]);
	  $user[$counter] = $dbname2[0];
	  echo "$user[$counter] : $dontallow<br>";
	  if($user[$counter]<$dontallow) {
		unlink("backups/$file");
	  }
	}

       if(ereg("Werbung",$file)) {
	  $dbname  = explode("Werbung-",$file);
	  $dbname2 = explode(".sql.gz",$dbname[1]);
	  $werbung[$counter] = $dbname2[0];
	  echo "$werbung[$counter] : $dontallow<br>";
	  if($werbung[$counter]<$dontallow) {
		unlink("backups/$file");
	  }
	}

     $counter++;
   } 
}
closedir($handle); 
?>

Ist bestimmt nicht die beste Lösung, aber sie funktioniert... :)
 
Zuletzt bearbeitet:
Zurück