يتضمن Nextcloud بالفعل الأدوات اللازمة لتنظيف الملفات المحذوفة تلقائيًا، لذا لا يحتاج معظم المسؤولين إلى كتابة سكربت مخصص. وفقًا لوثائق إدارة Nextcloud 35 الحالية، لا يزال النهج المُوصى به هو الجمع بين سياسة احتفاظ محددة بسلة المهملات وتنفيذ مهام موثوقة في الخلفية. والجدير بالذكر أن autoالسياسة الافتراضية لا تعني "حذف كل شيء بعد 30 يومًا بالضبط". فهي تحتفظ بالعناصر المحذوفة لمدة 30 يومًا على الأقل، ثم تُتيح حذفها عند الحاجة إلى مساحة تخزين.
إذا كان هدفك هو تنظيف البيانات بشكل متوقع، فحدد مدة احتفاظ قصوى واضحة، وتأكد من تشغيل مهام Nextcloud الخلفية عبر cron النظامي. تستخدم الخطوات التالية السلوك الموثق من قِبل Nextcloud فقط، وتوضح أيضًا متى تكون occ trashbin:expireالأوامر trashbin:cleanupمناسبة.
ما الذي تقوم به عملية التنظيف التلقائي لصناديق القمامة فعلياً؟
عند تفعيل تطبيق الملفات المحذوفة files_trashbin، تُنقل الملفات التي يحذفها المستخدمون إلى سلة المهملات بدلاً من حذفها نهائياً. يمنح هذا المستخدمين فرصة لاستعادة الملفات المحذوفة، ولكنها مع ذلك تستهلك مساحة تخزين. يتحكم Nextcloud في مدة بقائها من خلال الإعدادات trashbin_retention_obligationالمتاحة config/config.php.
تحدد وثائق تكوين سلة المهملات الحالية في Nextcloud أشكال السياسات هذه:
| جلسة | معنى | مناسب تمامًا |
auto | احتفظ بالأغراض لمدة 30 يومًا على الأقل؛ وبعد ذلك، قم بإزالة الأغراض المؤهلة عند الحاجة إلى مساحة. | المنشآت الصغيرة التي تشعر بالراحة مع السلوك الافتراضي. |
D, auto | احتفظ بالأشياء لمدة D أيام على الأقل، ثم اسمح بالتنظيف حسب المساحة المتاحة. | أنت بحاجة إلى فترة استعادة دنيا ولكن ليس لديك موعد نهائي محدد للحذف. |
auto, D | ضمان الحذف بعد مرور D يومًا، مع السماح في الوقت نفسه بالتنظيف المبكر الذي يعتمد على المساحة. | أنت تريد أقصى مدة للاحتفاظ بالبيانات ولكن يمكنك تحمل حذفها مبكراً عند حدوث ضغط التخزين. |
D1, D2 | احتفظ بالعناصر لمدة لا تقل عن D1 يومًا واحذفها عندما تتجاوز D2 يومًا. | أنت بحاجة إلى فترة تعافي دنيا وعمر احتفاظ أقصى ثابت. |
disabled | تعطيل انتهاء صلاحية سلة المهملات تلقائيًا. | فقط عندما يكون الاحتفاظ غير المحدد مقصودًا ويتم إدارة نمو التخزين بطريقة أخرى. |
هناك قاعدة تخزين أخرى يجب مراعاتها: إذا تجاوز المستخدم حصته المخصصة بسبب حذف ملفات، فقد يتجاهل Nextcloud إعدادات الاحتفاظ ويحذف الملفات غير المرغوب فيها حتى يتم استيفاء متطلبات الحصة. لذا، لا ينبغي اعتبار الاحتفاظ بمثابة ضمانة نسخ احتياطي غير قابلة للتغيير.
الخطوة الأولى: اختر سياسة الاحتفاظ بالبيانات قبل تغيير أي شيء
حدد الغرض من سلة المهملات في بيئة عملك. إذا كان المستخدمون يستعيدون الملفات المحذوفة عن طريق الخطأ بشكل متكرر، فامنحهم فترة زمنية دنيا مناسبة. وإذا كانت أولويتك هي التخزين المحدود أو سياسة الاحتفاظ بالبيانات الموثقة، فحدد فترة زمنية قصوى أيضًا.
على سبيل المثال، يسمح هذا الإعداد بالتنظيف بناءً على المساحة في أي وقت ولكنه يضمن إزالة الملفات التي يزيد عمرها عن 30 يومًا:
'trashbin_retention_obligation' => 'auto, 30',
إذا كنت ترغب في الاحتفاظ بالملفات المحذوفة لمدة 30 يومًا على الأقل وإزالتها أيضًا بعد 30 يومًا، فاستخدم سياسة محدودة بدلاً من ذلك:
'trashbin_retention_obligation' => '30, 30',
اختر القيم التي تناسب متطلبات الاستعادة لديك. فترة أقصر توفر مساحة التخزين بشكل أسرع ولكنها تقلل من الوقت المتاح للمستخدمين لاستعادة الملفات. فترة أطول توفر وقت استعادة أطول ولكنها قد تزيد من استخدام القرص.
الخطوة الثانية: قم بتعيين trashbin_retention_obligation في ملف config.php
افتح ملف إعدادات Nextcloud، الموجود عادةً في config/config.phpمجلد التثبيت. أضف أو غيّر الإعدادات داخل $CONFIGالمصفوفة. مثال نموذجي:
<?php
$CONFIG = array (
// Other Nextcloud settings...
'trashbin_retention_obligation' => 'auto, 30',
);
لا تقم بتعديل القيم غير ذات الصلة، واحرص على عدم كشف محتويات config.phpالتذاكر أو لقطات الشاشة لأنها قد تحتوي على معلومات حساسة خاصة بالخادم.
يمكنك أيضًا فحص التكوين الفعال من خلال أدوات سطر الأوامر الخاصة بـ Nextcloud بدلاً من نسخ محتويات الملف إلى رسالة استكشاف الأخطاء وإصلاحها.
الخطوة 3: استخدم نظام cron لتنفيذ مهام الخلفية الموثوقة
لا تُجدي سياسة الاحتفاظ بالبيانات نفعًا إلا إذا كانت مهام Nextcloud الخلفية قيد التشغيل بالفعل. وتوصي وثائق مهام Nextcloud الخلفية باستخدام cron الخاص بنظام التشغيل في بيئات الإنتاج. يُعد AJAX الوضع الافتراضي، ولكنه يعتمد على عدد زيارات الصفحات، وهو الخيار الأقل موثوقية.
في تثبيت نموذجي لنظام لينكس باستخدام www-dataحساب خادم الويب، قم بتحرير ملف crontab الخاص بهذا الحساب:
crontab -u www-data -e
ثم قم بتشغيل Nextcloud cron.phpكل خمس دقائق:
*/5 * * * * php -f /var/www/nextcloud/cron.php
استبدل /var/www/nextcloudالمسار الفعلي لتثبيت PHP لديك. تتطلب بعض الأنظمة المسار الكامل لواجهة سطر أوامر PHP، مثل /usr/bin/php.
يمكنك أيضًا تحديد وضع cron بشكل صريح باستخدام:
sudo -E -u www-data php /var/www/nextcloud/occ background:cron
تُوثّق Nextcloud عملية التحقق من انتهاء صلاحية سلة المهملات في الخلفية بأنها تُنفّذ كل 30 دقيقة. cron.phpولا يعني تشغيلها كل خمس دقائق تفريغ سلة المهملات كل خمس دقائق، بل يعني أن المُجدوِل يحصل على فرص متكررة لتشغيل المهام المستحقة.
الخطوة الرابعة: التحقق من أن المجدول يعمل
بعد إعداد cron، تحقق أولاً من إدخال نظام التشغيل:
crontab -u www-data -l
ثم تحقق من إعدادات إدارة Nextcloud لمعرفة حالة المهام التي تعمل في الخلفية. يجب أن تُظهر الصفحة أن المهام قد نُفذت مؤخرًا. إذا استمر وقت آخر تشغيل مُبلغ عنه في التزايد، فقم بإصلاح cron قبل تشخيص سياسة الاحتفاظ.
في Nextcloud 35، occتتضمن الأوامر الموثقة أيضًا أوامر فحص المهام التي تعمل في الخلفية، مثل background-job:list`cron` background-job:runningو`cron` و` background-job:historycron`. يمكن أن تساعدك هذه الأوامر عند الحاجة إلى التحقق من معالجة المهام بدلاً من مجرد افتراض أن cron نشط.
الخطوة 5: استخدم trashbin:expire لتشغيلات يدوية قائمة على السياسات
إذا قمت بتكوين فترة احتفاظ مخصصة، يمكنك تطبيق تلك السياسة يدويًا باستخدام:
sudo -E -u www-data php /var/www/nextcloud/occ trashbin:expire
يشير مرجع أوامر ملفات Nextcloud وسلة المهملات الحالي إلى قيد هام: trashbin:expireلا يتم حذف الملفات يدويًا إلا عند ضبط فترة احتفاظ مخصصة. أما مع autoالسياسة الافتراضية، فيتوقف الأمر برسالة إعلامية دون أي إجراء، لأن عملية الحذف التلقائي تتم في الخلفية.
إذا كنت ترغب عمداً في إنشاء إدخال cron منفصل للنظام trashbin:expire، فإن Nextcloud توثق طريقة لتعطيل مهمة انتهاء صلاحية سلة المهملات المدمجة في التطبيق أولاً:
sudo -E -u www-data php /var/www/nextcloud/occ config:app:set --value=no files_trashbin background_job_expire_trash
يمكنك بعد ذلك جدولة المهمة occ trashbin:expire --quietبنفسك. هذا خيار متقدم. بالنسبة لمعظم عمليات التثبيت، يُعد ترك مهمة انتهاء الصلاحية المدمجة مُفعّلة وتشغيل cron.phpمُجدول Nextcloud العادي أبسط وأسهل في الصيانة.
لا تخلط بين trashbin:expire و trashbin:cleanup
تتشابه الأسماء، لكن للأوامر تأثيرات مختلفة تمامًا. trashbin:expireيزيل الأمر الأول العناصر التي تندرج ضمن سياسة الاحتفاظ المحددة. أما الأمر trashbin:cleanupالثاني فيزيل محتويات سلة المهملات نهائيًا للمستخدمين الذين تحددهم.
على سبيل المثال:
sudo -E -u www-data php /var/www/nextcloud/occ trashbin:cleanup --all-users
يُعدّ هذا الأمر عملية تنظيف شاملة لجميع المستخدمين. وهو مفيد عند الحاجة إلى إفراغ سلة المهملات لكل مستخدم، ولكنه عادةً ما يكون غير مناسب لأتمتة عمليات الاحتفاظ الروتينية لأنه يتجاهل فترة الاسترداد التي حددتها. لا تُضِف أمر تنظيف شامل لجميع المستخدمين إلى cron إلا إذا كانت سياسة التنظيف الدائمة وغير المشروطة هي سياستك المُعتمدة.
الخطوة 6: التحقق من حجم سلة المهملات والتحكم فيه على Nextcloud 35
تتضمن وثائق أوامر Nextcloud 35 الحالية trashbin:sizeميزةً تُمكّن المسؤولين من فحص أو تحديد حجم سلة المهملات على مستوى النظام أو لكل مستخدم على حدة. لعرض القيمة العامة الحالية:
sudo -E -u www-data php /var/www/nextcloud/occ trashbin:size
لعرض الهدف الفعال لمستخدم معين:
sudo -E -u www-data php /var/www/nextcloud/occ trashbin:size --user USER_ID
يمكن أن يُكمّل تحديد حجم مُستهدف مُسبقًا الاحتفاظ بالملفات بناءً على عمرها عندما تكون سعة التخزين هي الشاغل الرئيسي. تُشير Nextcloud إلى أن تغيير الحجم الافتراضي العام يُؤدي فورًا إلى تنظيف صناديق المهملات الموجودة، لذا تعامل مع تغييرات الحجم كإجراء تشغيلي، وليس مجرد إعداد عرض غير ضار.
كيفية معرفة ما إذا كانت عملية التنظيف التلقائي تعمل
- تُظهر حالة المهمة الخلفية عمليات التشغيل الأخيرة.
- يحتوي ملف crontab الخاص بنظام التشغيل على
cron.phpالإدخال المتوقع.
- تتوافق إعداداتك
trashbin_retention_obligationمع السياسة التي كنت تنوي استخدامها.
- تختفي النفايات القديمة في نهاية المطاف وفقًا للحد الأقصى للعمر المحدد، إن وجد.
trashbin:expireيتصرف البرنامج كما هو موثق عند تكوين سياسة مخصصة.
- يتوقف استخدام القرص أو الحصة عن النمو بشكل غير متوقع لأن الملفات المحذوفة القديمة لم تعد تُحتفظ بها إلى أجل غير مسمى.
إذا بقيت الملفات القديمة لفترة أطول من المتوقع، فتأكد أولاً من أن سياستك تتضمن بالفعل قيمة قصوى. autoالإعداد الافتراضي لا يضمن الحذف بدقة في اليوم الثلاثين. بعد ذلك، تحقق من عمليات التشغيل في الخلفية. فقط بعد هذه الفحوصات، يمكنك التحقق من الأذونات، أو وحدات التخزين، أو سجلات التطبيقات.
تكوين عملي لمعظم الخوادم ذاتية الاستضافة
بالنسبة لخادم نموذجي مُستضاف ذاتيًا، يُنصح بالبدء بتشغيل مهمة cron النظامية كل خمس دقائق وتحديد مدة صلاحية قصوى واضحة للملفات المحذوفة. على سبيل المثال، 'auto, 30'يُمنح المستخدمون مدة تصل إلى شهر تقريبًا في الظروف العادية، مع ضمان عدم بقاء العناصر إلى أجل غير مسمى. إذا كان على المستخدمين دائمًا الاحتفاظ بفترة الاسترداد الكاملة بغض النظر عن ضغط التخزين، فيُفضل استخدام سياسة حد أدنى وحد أقصى محددين '30, 30'.
احتفظ بنسخ احتياطية منفصلة عن سلة المهملات. سلة المهملات هي ميزة لاستعادة البيانات من قِبل المستخدم، وتخضع لحصص تخزين وسلوك احتفاظ محددين؛ وهي ليست بديلاً عن استراتيجية نسخ احتياطي مستقلة.
المراجع الرسمية لـ Nextcloud