Hello,
ich habe mir da nochmal Gedanken über die tägliche Vollsicherung des aktuellen Files gemacht. gzwrite() & Co. funktionieren leider nicht, aber gzcompress() und gzuncompress() funktionieren. Und da ist nun diese Version dabei herausgekommen.
Ratio bei den Testdaten war > 32:1. Das lohnt sich also.
function flat_file_backup($filepath,$backuppath=false,$compress=9)
{
//status-Buffer rücksetzen
clearstatcache();
//Datei öffnen und locken, bei Fehler abrechen
$fp = flat_open_lock($filepath,LOCK_EX);
if (!$fp) return 5; ## Datei konnte nicht gesperrt werden
$filesize = filesize($filepath);
// maximal zulässige Filegröße + Sicherheit zum Öffnen
if ($filesize > FLAT_MAXFILESIZE+5000)
{
fclose($fp);
return 10; ## max. zulässige Dateigröße überschritten
}
//Datei einlesen
fseek($fp,0,SEEK_SET);
$_file_packed = fread($fp,$filesize);
fclose($fp);
if($backuppath===false)
{
$new_path = $filepath . date(".Ymd") . ".sbz";
}
// wahlweise Komprimierung durchführen
$compress = intval($compress);
if ($compress > 0)
{
$backuppath .= '.cpr';
$_file_packed = gzcompress($_file_packed,$compress);
}
$fp = flat_open_lock($backuppath,LOCK_EX);
if (!$fp) return 5; ## Datei konnte nicht gesperrt werden
// prüfen, ob Ausgabefile schon Daten enthielt.
$filesize = filesize($backuppath);
if ($filesize > 0)
{
fclose($fp);
return 3; ## File existiert schon
}
fwrite($fp,$_file_packed,strlen($_file_packed));
fclose($fp);
return 0; ## Kein Fehler aufgetreten
}
Liebe Grüße aus http://www.braunschweig.de
Tom
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau