Zurück
Standpunkte, Stimmen und Kommentare
Standpunkte, Stimmen und Kommentare
Ohne Werbung können wir dieses Blog leider nicht betreiben. Deshalb bitte auf „Akzeptieren“ klicken, um das Blog mit Werbung zu nutzen und uns sowie unseren Werbepartnern das Setzen von Cookies zu gestatten (Zustimmung ist jederzeit widerrufbar).
Nein, ohne Werbung nutzen Akzeptieren >>
Details zu allen Cookies, über unsere Partnern und zur Möglichkeit, die Zustimmung zu widerrufen, gibt es in den Hinweisen zum Datenschutz.
Wie werde ich bloß die alten Bilder los? Jeder, der sich etwas länger mit WordPress beschäftigt, weiß, im Ordner wp_uploads sammeln sich mit der Zeit jede Menge Bilddateien an. Nach Theme-Wechseln, Plugin-Experimenten oder dem Löschen von Beiträgen bleiben im Upload-Verzeichnis zahlreiche Bilddateien zurück, die von WordPress gar nicht mehr verwendet werden.
Gerade bei älteren Installationen können da unter Umständen mehr als ein Gigabyte unnötig belegter Speicherplatz zusammenkommen. Um diese Dateien aufzuspüren, habe ich ein kleines PHP-Skript entwickelt, das direkt auf der Kommandozeile funktioniert. Dabei greift es auf die WordPress-API zurück und vergleicht den tatsächlichen Inhalt der Mediathek mit den Dateien im Upload-Verzeichnis.
Was macht das Skript?
Das Skript arbeitet in vier Schritten:
1. WordPress initialisieren
Zunächst überprüft es, ob das Skript auf der Kommandozeile (CLI) gestartet wurde und sich im Root-Verzeichnis der WordPress-Installation befindet. Anschließend lädt es über `wp-load.php` die komplette WordPress-Umgebung. Dadurch können sämtliche WordPress-Funktionen genutzt werden, ohne dass Änderungen an der Website oder im Backend erforderlich sind.
2. Alle bekannten Bilddateien ermitteln
Im nächsten Schritt liest das Skript sämtliche Bildanhänge aus der WordPress-Datenbank aus. Dabei werden nicht nur die Originalbilder berücksichtigt, sondern auch alle von WordPress erzeugten Bildgrößen (Thumbnails), die in den Metadaten eines Bildes hinterlegt sind. So entsteht eine vollständige Liste aller Bilddateien, die WordPress tatsächlich kennt und verwendet.
3. Upload-Verzeichnis scannen
Anschließend durchsucht das Skript rekursiv das komplette Upload-Verzeichnis. Berücksichtigt werden ausschließlich Bilddateien mit den Endungen:
Plugin-Dateien, Fonts, Logdateien oder Cache-Dateien bleiben außen vor, um die Installation nicht zu gefährden.
4. Vergleich durchführen
Jetzt werden beide Listen miteinander verglichen. Alle Bilddateien, die zwar im Upload-Verzeichnis vorhanden sind, aber in der WordPress-Datenbank nicht mehr referenziert werden, gelten als potenziell verwaist.
Am Ende gibt das Skript eine Zusammenfassung aus:
Drei Betriebsmodi
Das Skript kennt drei verschiedene Betriebsarten.
Analyse
Mit diesem Aufruf erfolgt ausschließlich eine Analyse. Es werden keinerlei Dateien verändert. Aber das ermöglicht Euch zu beurteilen, wie viel Datenmüll Ihr in Eurer WordPress-Instanz mitschleppt.
Dry-Run
Jetzt zeigt das Skript zusätzlich jede einzelne gefundene Datei an, die verschoben würde. Tatsächlich verändert wird jedoch nichts. Bitte prüft die Liste vor dem nächsten Schritt auf Plausibilität. Eine Gefahr ist beispielsweise, wenn ihr in der Vergangenheit Bilder direkt per html-Tag in Eure Beiträge eingefügt habt. Das kann das Skript nicht erkennen.
Quarantäne
Erst in diesem Modus werden die gefundenen Dateien verschoben.
Wichtig dabei: Die Dateien werden nicht gelöscht, sondern in einen automatisch angelegten Quarantäne-Ordner innerhalb des Upload-Verzeichnisses verschoben. Dadurch können die als überflüssig identifizierten Bilder bei Bedarf jederzeit wieder zurückkopiert werden.
Warum Quarantäne statt Löschen?
Gerade bei älteren WordPress-Installationen ist nie vollständig auszuschließen, dass Plugins oder Themes auf Dateien zugreifen, die nicht mehr in der Datenbank registriert sind.
Aus diesem Grund löscht das Skript bewusst nichts endgültig.
Die Quarantäne bietet die Möglichkeit, die Website zunächst einige Tage oder Wochen zu beobachten. Erst wenn sicher ist, dass keine Bilder fehlen, kann der Quarantäne-Ordner endgültig entfernt werden.
Grenzen des Skripts
Das Skript erkennt ausschließlich Bilddateien, die nicht mehr in der WordPress-Datenbank referenziert werden.
Es erkennt dagegen nicht:
Warnhinweis
Der Einsatz dieses Skripts erfolgt ausdrücklich auf eigene Gefahr.
Obwohl die Dateien nicht gelöscht, sondern lediglich in einen Quarantäne-Ordner verschoben werden, sollte das Skript ausschließlich auf einer vollständig gesicherten WordPress-Installation eingesetzt werden. Vor dem ersten Einsatz empfiehlt sich unbedingt ein aktuelles Backup von Dateien und Datenbank.
Ich empfehle außerdem, zunächst immer die Analyse und anschließend den Dry-Run auszuführen. Erst wenn die Ergebnisse plausibel erscheinen, sollte der Quarantäne-Modus verwendet werden.
Denn trotz sorgfältiger Entwicklung kann nicht ausgeschlossen werden, dass individuelle Themes oder Plugins Dateien verwenden, die von WordPress selbst nicht mehr referenziert werden. In solchen Fällen ist eine manuelle Prüfung sinnvoll.
Code des PHP-Skripts: