it-swarm.asia

كيف تجد الملفات والصور المعزولة التي لم يتم ربطها من أي ورقة أنماط css أو من أي عقدة؟

هل هناك طريقة لسرد جميع الملفات غير المستخدمة الموجودة داخل نظام الملفات العام وداخل دليل السمة وإدراجها ، أو ربما يكون لديك خيار حذفها تلقائيًا؟

أعني الملفات غير المرتبطة حاليًا من أي ورقة أنماط css أو من أي عقدة.

20
camcam

يمكنك العثور على الملفات المعزولة عن طريق تشغيل استعلام MySQL التالي:

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

هذا يعيد جميع الملفات التي ليس لها عقدة مرتبطة بها. لست متأكدًا مما إذا كان حذف الصفوف والملفات التي تم إرجاعها آمنًا ، ربما يعتمد أيضًا على إعداد الوحدة النمطية الخاصة بك. استخدم فقط على مسؤوليتك الخاصة!

المصدر: http://drupal.org/node/733258#comment-5582764

14
David Carter

لأولئك الذين يأتون إلى هذا المنشور بعد ثلاث سنوات ، هناك وحدة صغيرة يمكنك استخدامها للقيام بذلك تسمى حذف ملف فاخر .

في وقت هذا المنشور ، إنه في مرحلة تجريبية ، لذا استخدمه على مسؤوليتك الخاصة. كما هو الحال دائمًا ، يمكن أن يكون تنظيف أي شيء يتيم من خلال استعلامات DB أمرًا بسيطًا ويعتمد نجاحه بشكل كبير على إعداد الوحدة الخاصة بك.

5
joe_flash

شيء ما قد يساعد في تحديد " الملفات التي لم تعد ملحقة بالعقد أو الملفات والدليل التي ليست في الجدول المُدار للملفات" (كما في السؤال المكرر حول " كيف للقيام بحذف الملفات غير المستخدمة؟ ") ، هو استخدام File Checker الوحدة النمطية. بعض التفاصيل عنه من صفحة مشروعه:

في عالم مثالي Drupal نظام ملفات الخادم وإدخالاته المتزامنة في جدول ملفات Drupal متزامنة بنسبة 100٪. ولكن ماذا لو تم إتلاف أجزاء من نظام الملفات الخاص بك بسبب فشل في القرص؟ أو أحد أفسدت الوحدات النمطية الخاصة بك قاعدة البيانات والملفات الخاصة بك؟ أو ذهب البرنامج النصي للنشر الخاص بك مساعدًا؟ حسنًا ، ستساعدك هذه الوحدة النمطية على مراقبة ومعرفة الملفات التي لا تتم مزامنتها.

من خارج الصندوق يحتوي جدول الملفات على نوعين من الحالات: مؤقت (0) ودائم (1). يقدم مدقق الملف حالة إضافية مفقودة (2). في نطاق عملية التحقق التي يمكن تشغيلها بطرق مختلفة ، يتم تحديث عمود الحالة في جدول الملفات.

الميزات

  • تشغيل عملية التحقق: عند الطلب ، عبر cron ، عبر drush (قيد التخطيط)
  • صفحة نظرة عامة على قائمة الملفات مع الفلاتر
  • تكامل المشاهدات
  • أمر Drush لفحص الملف

إذا كنت ترغب في تصدير نتائج طريقة عرض ، فمن المستحسن استخدام وحدة views_data_export.

لذا ما يمكنك فعله هو مثل ذلك:

  • انسخ (انسخ) موقعك إلى بعض بيئة التطوير ، ولكن لا تنسخ أيًا من الملفات في الدليل الذي تريد التحقق منه. كنوع من الاختلاف (إذا كان هذا السؤال حول موقع حالة غير إنتاج) ، فقم بنقل جميع الملفات مؤقتًا من هذا الدليل.
  • استخدم File Checker الوحدة النمطية لمعرفة الملفات "المفقودة": هذه هي الملفات التي من الواضح أنها ليست غير مستخدمة. ولكن أي ملف لا تجادل فيه هذه الوحدة هو ... غير مستخدم!
  • من خلال نسخ جميع الملفات المفقودة إلى الموقع الصحيح للدليل الذي تريد التحقق منه ، فإنك تعيد إنشاء محتوى مثالي من دليلك خطوة بخطوة.

ملاحظة : على الرغم من أن هذا السؤال يدور حول D7 ، إلا أنه نسخة (ألفا) منه أيضًا لـ D8.

3
Pierre.Vriens

هناك وحدة واحدة تزيل الملفات غير المرغوب فيها حذف ملف فاخر .

عرض جميع الملفات المُدارة مع خيار فرض حذفها عبر إجراءات VBO المخصصة يدويًا حذف الملفات المُدارة بواسطة FID (وخيار فرض الحذف إذا كنت تريد ذلك حقًا). حذف الملفات غير المستخدمة من دليل الملفات الافتراضي غير الموجود في الجدول المُدار للملفات. AKA حذف جميع الملفات غير المدارة. حذف الملفات غير المستخدمة من التثبيت بالكامل التي لم تعد مرتبطة بالعقد وجدول استخدام الملف. AKA حذف جميع الملفات المعزولة.

2
vgoradiya

يمكنك حذف ملف غير مستخدم من قبل

  1. حذف يدويًا من الجدول file_managed ، حسب بعض الاستعلامات مثل

    $this->database ->delete('file_managed') ->condition('fid', $fid, '=') ->execute();

  2. تعيين حالة الملف ، لوضع علامة كملف مؤقت ، لذلك سيحذفه cron بعد وقت معين.
    $file = File::load ($fid); $file->setTemporary();

0
Jasodeep Chatterjee

حذف ملف خيالي الوحدة النمطية لم تعمل على الإطلاق بالنسبة لي. هنا بديل أكثر يدوية.

لحذف الملفات من مجلد غير موجود في جدول الملفات المُدارة ، يمكنك:

1) إنشاء قائمة بجميع الملفات المدارة:

mysql whateverdb -e "select filename from file_managed" > ~/managed-files.txt

2) حذف جميع الملفات من دليل غير موجود في تلك القائمة. للقيام بذلك ، استخدمت سكربت باش صغير:

#!/bin/bash

IMG_FOLDER='/var/www/html/yoursite/docroot/sites/default/files/certain-images'
EXCLUDES='/home/yourhomeuser/managed-files.txt'

for FILE in $IMG_FOLDER/*; do
  if ! grep "$FILE" "$EXCLUDES"; then
        echo "Deleting $FILE"
        rm -f "$FILE"
  fi
done

فقط قم بتغيير IMG_FOLDER متغير إلى مسار أي مجلد تريد حذف الملفات منه (وتحديث المسار إلى ملف الاستثناءات)

0
Felix Eve