Wieso ist der Ordner "media" so groß?

Hallo zusammen,

heute habe ich ein Backup von unserem Shop gemacht. Dabei ist mir aufgefallen, dass der Media-Ordner mittleriweile mehrere GB groß ist. Vor etwa einem Monat betrug die Größe nur etwa 30% davon. 

Wir haben ca. 4.000 Artikel, die einmal täglich über die API importiert werden.

Wie kann ich verhindern, dass der Ordner ständig weiter wächst?

 

Danke schon mal!

Scheinbar wächst der Ordner bei jedem Import, weil die Bilder nicht überschrieben, sondern neu angelegt werden. 

In der Api kann man zwar 

'__options_images' => Array('replace' => true),

setzen, dass hat aber nur Auswirkungen auf die Datenbank, nicht jedoch auf das Dateisystem. Während in der Datenbank nur ca. 1.000 Datensätze in der Tabelle s_articles_img sind, gibt es bereits über 30.000 Artikelbilder …

Wie löst ihr das Problem bei der API?

habe zwar keine Erfahrung damit aber unter Einstellungen->Grundeinstellungen->Weitere Einstellungen->Shopware Import/Export kann man 

„Gleiche Artikelbilder erneut verwenden (Re-use same article images)“ setzen.  

 

Du kannst auch einfach nicht verwendete Bilder über die Shopware CLI mit sw:thumbnail:cleanup  entfernen:

2 „Gefällt mir“

Danke für den Tipp. Ich habe es jetzt sowohl mit  sw:media:cleanup als auch mit  sw:thumbnail:cleanup versucht. Ich bekomme die Meldung, dass Dateien gelöscht wurden (über 30.000). Im Shopware-Backend sieht man diese Dateien im Papierkorb. 

Danach habe ich die Dateien mit  sw:media:cleanup –delete -n gelöscht. Hat auch alles geklappt. Allerdings ist der Shopware-Ordner auf dem Server immer noch so groß, wie vorher. 

Kann es sein, dass die Datensätze nur aus der Datenbank, nicht aber aus dem Dateisystem gelöscht werden?

 

@nicole86 schrieb:

habe zwar keine Erfahrung damit aber unter Einstellungen->Grundeinstellungen->Weitere Einstellungen->Shopware Import/Export kann man 

„Gleiche Artikelbilder erneut verwenden (Re-use same article images)“ setzen.  

 

Das ist doch nur für das Import/Export Modul im Backend, und nicht für den Import über die Api, oder? 

Hast du sofort nach dem Löschen die Ordnergröße geprüft? Bei mir ist es so, dass der Hoster auf der Startseite meines Accounts den genutzten Speicherplatz angibt. Diese Daten werden aber nur über Nacht aktualisiert und nicht in Echtszeit.

Gehe ich in die Dateien, kann ich mir die aktuelle Größe berechnen und anzeigen lassen.

@Toric schrieb:

Hast du sofort nach dem Löschen die Ordnergröße geprüft? Bei mir ist es so, dass der Hoster auf der Startseite meines Accounts den genutzten Speicherplatz angibt. Diese Daten werden aber nur über Nacht aktualisiert und nicht in Echtszeit.

Gehe ich in die Dateien, kann ich mir die aktuelle Größe berechnen und anzeigen lassen.

Ja, hab extra eine Nacht gewartet, weil ich das auch vermutet habe.  
Außerdem habe ich über 

 du -h --max-depth=1 shopware/

herausgefunden, dass der Media-Ordner immer noch 79GB groß ist …

da kann ich leider nicht weiterhelfen. Ich habe bisher noch keine „Karteileichen“ gelöscht. Wenn du herausgefunden hast, wie es funktioniert, darfst du gerne hier mal die Schritt für Schritt-Anleitung für absolute Anfänger posten. Die Begriffte sw:media:cleanup und sw:thumbnail:cleanup kommen mir bei der Lektüre zwar immer wieder unter. Aber wo ich jetzt genau was machen muss, verstehe ich nicht.

Noch habe ich zwar keine große Speicherbelegung. Allerdings muss ich aus lizenzrechtlichen Gründen bestimmte Bilder von Zeit zu Zeit austauschen. Bisher löschte ich da im Mediamanager das Bild, aber da bleibt vermutlich die Thumbnail dazu noch erreichbar und taucht möglicherweise irgendwann bei Google o.ä. auf. Das wäre dann die Katastrophe…

Hallo,

Shopware löscht nur die Bilder, die Shopware auch bekannt sind. Es kann natürlich sein, dass in diesem Ordner auch weitere Bilder vorhanden sind, die Shopware garnicht kennt (Keine Verknüpfung zum Media-Manager). Diese werden dann auch nicht per Cronjob gelöscht.

Viele Grüße

Moritz

@Moritz Naczenski schrieb:

Hallo,

Shopware löscht nur die Bilder, die Shopware auch bekannt sind. Es kann natürlich sein, dass in diesem Ordner auch weitere Bilder vorhanden sind, die Shopware garnicht kennt (Keine Verknüpfung zum Media-Manager). Diese werden dann auch nicht per Cronjob gelöscht.

Viele Grüße

Moritz

Komisch, da ich die Bilder nur über die API importiert habe. Shopware müsste die Bilder also kennen. Hier ein Auszuga aus der Ordnerstruktur (es sind insgesammt etwa drei mal so viele Ordner):

 

Kann ich denn irgendwie manuell die Bilder löschen? 

@Toric schrieb:

Bisher löschte ich da im Mediamanager das Bild, aber da bleibt vermutlich die Thumbnail dazu noch erreichbar und taucht möglicherweise irgendwann bei Google o.ä. auf. Das wäre dann die Katastrophe…

Wenn das so eine Katastophe ist, warum überprüft man das nicht einfach mal? Neues Bild im Media Manager hochladen (oder auch einfach eines aussuchen das man eh gerade löschen will), Bild + Thumbnails im Dateisystem raussuchen, Bild im Media Manager löschen, gucken ob Bild + Thumbnails noch da sind, wieder ruhig schlafen. Okay, mit der neuen Ordnerstruktur ist es ein wenig aufwendiger die Thumbnails zu einem Bild zu finden da sie alle in unterschiedlichen Ordnern liegen, aber man kann sowas ja durchsuchen…

Gerade in einem Testsystem mit SW5.1.5 geprüft:

  • Bild einzeln im Mediamanager löschen: Bild + Thumbnails weg
  • Über die Konsole: php bin/console sw:media:cleanup : Keine Änderung am Dateisystem, im Mediamanager in den Papierkorb verschoben
  • Über die Konsole: php bin/console sw:media:cleanup --delete : Originalbild und einige Thumbnails werden gelöscht, aber nicht alle Thumbnails 
  • Über die Konsole: php bin/console sw:media:cleanup danach im Backend den Papierkorb leeren: Originalbild und einige Thumbnails werden gelöscht, aber nicht alle Thumbnails

Die ersten beiden Punkte sind wie erwartet, die letzten beiden nicht (wobei die im Hintergrund vermutlich die gleichen Funktionen nutzen)

Außerdem ist mir dabei aufgefallen, dass Thumnails für PNGs als PNG und JPG erstellt werden. Ist das Absicht?

Das nicht löschen bzw nur teilweise löschen der Thumbnails über die Konsole könnte auf jeden Fall erklären warum bei @webadm‍ der image Ordner immernoch sehr groß ist.

Ich hatte das gleiche Problem, dass bei jedem csv Bildimport neue Bilder ins Mediaverzeichnis importiert wurden für die alten Artikel.

 

Ich habe dafür ein Skript geschrieben das die bestehenden Artikelbilder aus dem Csv löscht:

http://forum.shopware.com/discussion/35373/artikel-bilder-import-vermeiden-von-doppelten-bildern-bei-erneutem-import#latest

Dad kannst Du sicher in den automatischen Artikelimport einbinden.

 

Gruss

 

Jens

Ich habe das gerade nochmal im Code geprüft: sw:media:cleanup --delete verschiebt die Bilder zuerst in das Album Papierkorb und löscht danach alles was im Album Papierkorb ist. Beim Löschen der Bilder wird im Media-Model eine Default-Thumbnailgröße gelöscht (140x140) und die Thumbnails aus den jeweiligen Albumeinstellungen. Da der Papierkorb aber keine Thumbnaileinstellungen hat wird auch nichts weiter gelöscht.

Mir stellen sich die Haare… mit der Console habe ich bisher noch nichts gemacht, da muss ich mich erst noch etwas bilden. Aber wenn ich deine Testergebnisse lese, ist das alles nicht wirklich zuverlässig.

Die Ordnerstruktur der Bilder ist für mich das Grauen. In meinem alten Shop habe ich ein Produktbild im Backen gelöscht und es war weg - samt Thumbnails -, dann habe ich ein neues Bild mit identischem Dateinamen hochgeladen und es war bei dem Artikel automatisch ausgetauscht. Lösche ich bei SW im Mediamanager ein Bild, muss ich vorher umständlich die Thumbnails suchen gehen und hoffen, dass ich alle finde. Lade ich dann ein Bild mit identischem Namen hoch, sollten auch automatisch die Thumbnails die gleichen Namen bekommen wie zuvor.

Im FE wird der Artikel dann aber ohne Produktbild angezeigt und ich muss ihn erst im BE aufrufen, das dort sichbare Bild löschen und wieder hinzufügen. Das ist eine ABM…

@Toric schrieb:

Lösche ich bei SW im Mediamanager ein Bild, muss ich vorher umständlich die Thumbnails suchen gehen und hoffen, dass ich alle finde.

Nein musst du nicht. Löschen über den Mediamanager funktioniert inkl. Thumbnails.

Lade ich dann ein Bild mit identischem Namen hoch, sollten auch automatisch die Thumbnails die gleichen Namen bekommen wie zuvor.

Bekommen sie. Dateiname + Thumbnailgröße [+ @2x] + Dateiendung. Das ist immer gleich.

Im FE wird der Artikel dann aber ohne Produktbild angezeigt und ich muss ihn erst im BE aufrufen, das dort sichbare Bild löschen und wieder hinzufügen. Das ist eine ABM… 

Stimmt. Das ist ungünstig. Das Bild sollte ganz aus dem Artikel verschwinden wenn es gelöscht wird. Die defekte Zuweisung bleibt da.

Eventuell könnte man im MediaManager noch eine Funktion ergänzen „Bild ersetzen“. Kenne ich z.B. von Typo3 dort wird dann die Datei ersetzt, die Zuweisung zu anderen Elementen (in diesem Fall Artikeln) bleibt aber erhalten. Kannst du ja mal als Feature-Request einreichen.

Aber das hat auch alles eigentlich nichts mit diesem Thema hier zu tun…

Bzgl. Löschen bin ich dann schon mal beruhigt. Mache das dann weiterhin über den Mediamanager, wenn dann zuverlässig alles weg ist. Wenn ein Artikel gelöscht wird, zu dem noch Bilder existieren, landen diese Dateien wohl im Mediamanager unter sonstiges. Dort funktioniert das mit Löschen inkl. Thumbnails dann wohl auch so?!

So wie es aktuell gelöst ist, ist es nicht ideal. 

Für mich ist es fast unmöglich nicht mehr benötigte Bilder zu finden.Theoretisch müsste ich jedes Bild auf dem Server auslesen und überprüfen, ob dazu ein Datenbankeintrag vorliegt. Das kann nicht sein … Es muss doch eine bessere Lösung geben. 

Theoretisch könnt Ihr doch auf die „alte“ Speicherart umstellen:
MediaService
Ich würde es einfach mal in einer Testumgebung ausprobieren  Wink

1 „Gefällt mir“

@sonic und in wieweit sollte das nicht genutzte Bilder/Thumbnails besser löschen als die aktuelle default-Speicherart? Dann liegen die halt wieder alle in einem Ordner. Bei 30000 Artikelbildern + Thumbnails findet man dadurch auch nicht einfacher raus welche davon noch benötigt werden und welche nicht… Oder übersehe ich da was?