it-swarm.com.de

So entfernen Sie nicht verwendete Dateien aus Verzeichnissen

Ich möchte Dateien aus Site-Verzeichnissen entfernen/löschen (z. B. /sites/default/files/*) die vor Ort nicht verwendet werden. Es gibt Tausende von Dateien, die eine Füllgröße verursachen. Irgendwelche Vorschläge dazu?

6
user13218

Ich habe diesen Beitrag gefunden https://drupal.org/node/733258 ... kann helfen ...

Der Hauptzweck dieser Ausgabe ist das Entfernen der Bilder, die nicht direkt verwendet werden, über SQL-Abfragen aus der Datenbank.

Audit-Dateimodul wird als guter Start empfohlen (da keine Dateien gelöscht werden), um nicht verwendete Dateien zu finden.

Dieses Code-Snippet ist eine der vorgeschlagenen Lösungen für das Problem:

<?php
//db_query to find all files not attached to a node:
$result = db_query("SELECT fid FROM file_managed WHERE NOT EXISTS (SELECT * FROM file_usage WHERE file_managed.fid = file_usage.fid) ");

//Delete file & database entry
for ($i = 1; $i <= $result->rowCount(); $i++) {
  $record = $result->fetchObject();
  $file = file_load($record->fid);
  if ($file != NULL) {
    file_delete($file);
  } }
?>
8
jramby

Es gibt ein Sandbox-Projekt namens File Delete , das den Drush-Befehl drush file-delete-unused --all Bereitstellt, um alle in file_managed gemeldeten Dateien zu löschen, die nicht in file_usage enthalten sind. Es löscht die Datei selbst und den Datenbankeintrag.

1
LarS

Eine einfache Möglichkeit zum Durchsuchen der nicht verwendeten Dateien besteht darin, die folgende Abfrage auszuführen:

SELECT fm.*
FROM file_managed AS fm
LEFT OUTER JOIN file_usage AS fu ON (fm.fid = fu.fid)
LEFT OUTER JOIN node AS n ON (fu.id = n.nid)
WHERE fu.type = 'node' AND n.nid IS NULL

Diese Abfrage würde alle Dateien zurückgeben, die keinem Knoten zugeordnet sind.

Um zu vermeiden, dass Sie in solchen Situationen landen, ist es besser, jeder Datei ein file_usage_add () hinzuzufügen. Dadurch kann das System erkennen, dass die Datei verwendet wird. Durch das Anhängen von file_usage_delete () werden nicht verwendete Dateien vom Cron-Typ aus dem System entfernt.

1
Rakhi

Sie können es entweder manuell entfernen oder https://drupal.org/node/733258 durchlaufen, um unerwünschte Bilder zu entfernen.

0
Nitesh Sethia

Hier ist mein Beispiel für das Entfernen nicht verwendeter gmap_markers-Dateien mit drush:

drush sqlq "SELECT fid FROM file_managed WHERE status = 1 AND filename LIKE 'gmap_markers%'" | xargs -L1 -I% drush -v eval "file_delete(file_load(%));"

Sie können alle Drupal - Dateien sehen von:

drush sqlq "SELECT fid, filename, uri FROM file_managed WHERE status = 1"

Um festzustellen, ob eine bestimmte Datei nicht verwendet wird, würde ich empfehlen, mit den folgenden Beispielbefehlen nach jeder dieser Dateien im Dateisystem und in der Datenbank zu suchen:

grep -R "my_file.jpg" /Drupal/webroot
drush --ordered-dump sql-dump | grep "my_file.jpg"

Sobald die Datei außer standardmäßig file_managed usw. nirgendwo anders existiert, kann sie meiner Meinung nach sicher entfernt werden.

0
kenorb