WBCE CMS Forum

WBCE CMS – Way Better Content Editing.

You are not logged in.

#1 27.02.2020 18:13:50

better-work
Member

Bereinigung für Backup Tool

Hallo liebe Mitstreiter,

musste gerade manuell ein Backup Verzeichnis aufräumen, das war nicht lustig...
Ich benötige eigentlich nur ein Script das nur die letzten 30 Backups (nach zeitlicher Relevanz) im Verzeichnis lässt, und den Rest löscht.
Also nicht Dateien -- ÄLTER ALS -- sondern nur die letzten 30 Behalten und die Älteren löschen.
Dies kann ich dann per Cronjob ausführen...

Wer kann helfen und zu welchem Kurs?
Sicherlich wäre ein universelles PHP-Script nützlich.

1.) es sollte im gleichen Verzeichnis liegen und sich nicht selbst mit löschen wollen
2.) Dateiendungen sollten individuell eingegeben werden können (z.B= *.tar.gz / .sql.gz)


Gruß Jörg

Offline

#2 27.02.2020 19:19:00

florian
Administrator

Re: Bereinigung für Backup Tool

Du beziehst Dich vermutlich auf das finale Script aus diesem Thread?
https://forum.wbce.org/viewtopic.php?id=1175

Ein Ansatz dazu, wobei ich jetzt nicht konkret weiß, wie das einzubauen wäre:
https://stackoverflow.com/questions/911 … t-the-last

Offline

#3 28.02.2020 01:35:57

better-work
Member

Re: Bereinigung für Backup Tool

Ja, ganz genau darum geht es...
Das hatte ich auch gefunden. Allerdings bin ich da mit der Anpassung etwas überfordert.
Und es darf ja auch gerne ein separates Script sein.
Deshalb hatte ich die Parameter beschrieben.

Ich bin leider nicht wirklich fündig geworden.
Auch ein Cronbefehl ist mir leider nicht bekannt, bzw. auch dazu habe ich nichts gefunden.

Trotzdem vielen Dank für Deine Hilfe.


Gruß Jörg

Offline

#4 28.02.2020 10:54:58

webbird
Administrator

Re: Bereinigung für Backup Tool

Welches OS ist das denn? (Wegen dem Cron-Befehl.)

Ich kann mir das Script der Wahl gern mal angucken, da jetzt zwei verlinkt wurden, müßte ich aber vorher wissen, welches präferiert wird.


Ich habe eine Amazon-Wishlist. wink
Erfolgreich vom eigentlichen Problem ablenken kann auch eine Lösung sein.

Online

#5 28.02.2020 11:03:36

webbird
Administrator

Re: Bereinigung für Backup Tool

Nur mal so ins Blaue...

Teil 1: Dateien ermitteln

Da paßt dieser Code-Abschnitt von Stackoverflow schon ganz gut. (Wobei das Pseudocode ist, sowas wie pathere wäre ja zu ersetzen durch was Sinnvolles.)

[== PHP ==]
$directory = array_diff(scandir(pathere), array('..', '.'));
$files = [];
foreach ($directory as $key => $file) {
    $file = pathere.$file;
    if (file_exists($file)) {
        $name = end(explode('/', $file));
        $timestamp = preg_replace('/[^0-9]/', '', $name);
        $files[$timestamp] = $file;
    }
}

Hier werden _alle_ Dateien ausgelesen und deren Timestamp aus dem Dateinamen gefischt. Diesen Teil müßte man nun so anpassen, dass nach Dateiendungen geschaut und das Zugriffsdatum der Datei verwendet wird, statt das Datum aus dem Namen zu extrahieren.

Als Ergebnis hat man ein Array namens $files, dessen Schlüssel das Datum und dessen Werte der jeweilige Dateiname sind.

Dieses Array kann man nun recht einfach nach dem Datum sortieren, die 30 aktuellsten Dateien rausnehmen und den Rest löschen.

Wo und wie wäre denn die Konfiguration der Dateiendungen gewünscht? Einfach im Script selbst? Wie soll das Script abgesichert werden? (Wer die URL kennt bzw. erraten kann soll das ja nicht einfach so ausführen können...)


Ich habe eine Amazon-Wishlist. wink
Erfolgreich vom eigentlichen Problem ablenken kann auch eine Lösung sein.

Online

#6 28.02.2020 12:14:40

better-work
Member

Re: Bereinigung für Backup Tool

Hallo
eine Absicherung ist nicht erforderlich, es erfolgt eine Authentifizierung per. htaccess Datei.
Was leider ein bisschen ungünstig ist, ist die Tatsache dass ich relativ wenige Cronjobs habe.
Bisher habe ich jedem Kunden 2 zugewiesen.
1. für SQL Backup
2. für Daten Backup
Schön wäre es aber, wenn die Bereinigung nicht noch 2 zusätzliche Jobs benötigen würde.
Weil nach SQL und Datenbackup getrennt.
Sondern die Bereinigung der Daten zumindest in einem Job erledigt werden könnte.
In diesem Fall dann also in einem 3. Job.
Vorab stellt sich auch die Frage nach den Kosten.
Wenn das Ganze zu teuer wird, führe ich die Bereinigung eben weiter manuell durch.
Das müsste ich bitte vorher wissen...


Gruß Jörg

Offline

#7 28.02.2020 12:25:42

webbird
Administrator

Re: Bereinigung für Backup Tool

Probier' mal. Löscht nix, sondern liefert nur eine Liste von Dateien, die NICHT gelöscht würden. Kannst Du hinlegen wo Du willst, es benutzt keine WBCE-Includes oder irgendwas.

[== PHP ==]
<?php

$path = __dir__;                        // path to scan
$suffixes = array('.tar.gz','.sql.gz'); // suffixes to scan for
$keep = 30;                             // number of files to keep

// get the list of files that match the suffix list
$rawlist = preg_grep('~('.implode('|',$suffixes).')$~i', array_diff(scandir($path), array('..', '.')));

// if we do not have more files than to keep, there's nothing to do at all
if(count($rawlist) <= $keep) { exit; }

$files = array();

// get last modification time for each file
foreach($rawlist as $f) {
    $ts = filemtime($path.'/'.$f);
    $files[$f] = $ts;
}

// sort the files array by timestamp
asort($files);

// remove $keep youngest
array_splice($files,0,(count($files)-$keep));

echo "FILES TO KEEP:<br /><textarea style=\"width:100%;height:200px;color:#000;background-color:#fff;\">";
print_r($files);
echo "</textarea><br />";

Ich habe eine Amazon-Wishlist. wink
Erfolgreich vom eigentlichen Problem ablenken kann auch eine Lösung sein.

Online

#8 28.02.2020 12:27:56

webbird
Administrator

Re: Bereinigung für Backup Tool

Ich hab das bei mir mal auf das Log-Verzeichnis von BC2 gehetzt, eine Sache ist mir dabei aufgefallen: Angenommen, es gibt mehrere Dateien mit EXAKT dem gleichen Zeitstempel, und diese beiden liegen genau auf der Grenze der Dateien, die nicht gelöscht werden... Dann kann es sein, dass eine davon gelöscht wird, die andere aber nicht.


Ich habe eine Amazon-Wishlist. wink
Erfolgreich vom eigentlichen Problem ablenken kann auch eine Lösung sein.

Online

#9 28.02.2020 15:59:43

better-work
Member

Re: Bereinigung für Backup Tool

Erst einmal vielen Dank für Deine Mühe.
Das unterschiedliche Behalten wäre natürlich ein Problem.
Ansonsten habe ich es getestet und eingedeutscht, funktioniert einwandfrei.

Gibt es in PHP eine Möglichkeit ein Script am Ende des ersten Scriptes zu starten, wenn das erste Script durchgelaufen ist?
Denn dann könnte der Aufruf jeweils am Ende der Backupscripte erfolgen, wenn das eigentliche Backup erledigt ist.

Da wäre dann nur noch die Problematik das beide Sicherungsverzeichnisse unterschiedlich sind:

Verzeichnisstruktur=
https://mydomain.de/001-backup (damit der Ordner oben steht)
https://mydomain.de/001-backup/sql (für die MySQL Sicherungen)
https://mydomain.de/001-backup/webspace (für die Dateien, Medien, Verzeichnisse, etc.)

Die Scripte liegen immer direkt im Ordner "001-backup"

Also=
https://mydomain.de/001-backup/db-backup.phpx
https://mydomain.de/001-backup/ftp-backup.phpx

Ich habe hier mal die Zitat Funktion missbraucht, um es Besser hervorzuheben...


Gruß Jörg

Offline

#10 28.02.2020 16:13:14

webbird
Administrator

Re: Bereinigung für Backup Tool

Also wenn Du einen Scriptaufruf ans Ende packen kannst, kannst Du auch den kompletten Code ans Ende packen, oder?

Ansonsten

include <Datei>;

Wenn die Verzeichnisse bzw. Einstellungen unterschiedlich sind, mach halt zwei Kopien von dem Script. Alternativ in die Sicherungsscripten unten den kompletten Code einfügen, dann hast Du ja zwei getrennte Instanzen.

Das unterschiedliche Behalten wäre natürlich ein Problem.

Das erfordert aber einen exakt gleichen Timestamp. Sind die Dateien mindestens 1 Sekunde auseinander, wird die ältere gelöscht. Auch wenn "älter" hier nur 1 Sekunde bedeutet.


Ich habe eine Amazon-Wishlist. wink
Erfolgreich vom eigentlichen Problem ablenken kann auch eine Lösung sein.

Online

#11 28.02.2020 16:16:47

webbird
Administrator

Re: Bereinigung für Backup Tool

Hier jetzt erst mal mit UMBENENNEN statt LÖSCHEN, damit wir wirklich sicher sind, dass die richtigen Dateien gelöscht würden.

<?php

$path = __dir__;                        // path to scan
$suffixes = array('.tar.gz','.sql.gz'); // suffixes to scan for
$keep = 30;                             // number of files to keep

// get the list of files that match the suffix list
$rawlist = preg_grep('~('.implode('|',$suffixes).')$~i', array_diff(scandir($path), array('..', '.')));

// if we do not have more files than to keep, there's nothing to do at all
if(count($rawlist) <= $keep) { exit; }

$files = array();

// get last modification time for each file
foreach($rawlist as $f) {
    $ts = filemtime($path.'/'.$f);
    $files[$f] = $ts;
}

// sort the files array by timestamp
asort($files);

// remove $keep youngest
$files = array_splice($files,0,(count($files)-$keep));

if(count($files)>0) {
    foreach($files as $file => $ts) {
        rename($path.'/'.$file,$path.'/'.$file.'.RENAMED');
    }
}

Ich habe eine Amazon-Wishlist. wink
Erfolgreich vom eigentlichen Problem ablenken kann auch eine Lösung sein.

Online

#12 28.02.2020 17:36:16

better-work
Member

Re: Bereinigung für Backup Tool

Okay, erst einmal vielen Dank, ich muss mir das noch einmal in Ruhe ansehen,
momentan muss ich mich hier aber noch um eine andere Problematik kümmern.

Ich werde es mit dem Einfügen des Codes auf einer "ungefährlichen" Domain testen und melde mich dann noch einmal.


Gruß Jörg

Offline

#13 11.03.2020 16:09:06

better-work
Member

Re: Bereinigung für Backup Tool

@webbird

Wie bereits per PM mitgeteilt, komme ich mit der Einbindung leider nicht zurecht.
Dementsprechend benötige ich bitte eine fertige Lösung dazu, daher ja auch gegen Bezahlung...
Am Anfang des Skriptes sollte dann auch definiert werden können, wie viele Sicherungen aufgehoben werden sollen.
In den Skripten sind die Pfade bereits definiert, es wäre sehr hilfreich, wenn die Bereinigung das direkt so übernehmen könnte!

Den Rest hatte ich ja schon per PM am 04.03. mitgeteilt ;-)


Gruß Jörg

Offline

#14 21.08.2020 10:24:30

better-work
Member

Re: Bereinigung für Backup Tool

@webbird

vorsichtige Nachfrage...
Konntest Du Dich schon näher mit dem Projekt befassen?


Gruß Jörg

Offline

#15 21.08.2020 17:54:26

webbird
Administrator

Re: Bereinigung für Backup Tool

Ehrlich gesagt hatte ich das komplett vergessen, und momentan habe ich auch leider keine Luft dafür.


Ich habe eine Amazon-Wishlist. wink
Erfolgreich vom eigentlichen Problem ablenken kann auch eine Lösung sein.

Online

Board footer

Powered by FluxBB

up