قد يبدو نقل مجلد بيانات Nextcloud إلى قرص صلب خارجي أكبر عملية نسخ وتعديل بسيطة، لكنها ليست كذلك. تكمن المشكلة في أن Nextcloud يتعرف على وحدة التخزين المحلية من خلال مسارها المطلق على القرص. إذا تغير هذا المسار دون قصد، فقد يتعامل الخادم مع الملفات على أنها في موقع تخزين مختلف، مما قد يؤدي إلى تكرار الملفات أو فقدانها، أو تلف البيانات الوصفية، أو فقدان علاقات المشاركة.
لذا، فإنّ الطريقة الأكثر أمانًا وفعاليةً لتثبيتٍ قائم هي الإبقاء على مسار دليل البيانات نفسه في Nextcloud مع نقل البيانات الفعلية إلى القرص الخارجي. يوصي دليل إدارة Nextcloud الحالي صراحةً بنقل الدليل ثم إنشاء رابط رمزي من المسار الأصلي إلى الموقع الجديد. كما يحذر الدليل من أن التغيير المباشر datadirectoryيتطلب تغييرات في قاعدة البيانات، وهو ليس أسلوبًا مدعومًا للهجرة. راجع إرشادات استكشاف أخطاء دليل بيانات Nextcloud وإصلاحها .
قبل البدء: ما الذي تم التحقق منه، وما الذي يعتمد على إعداداتك؟
| سؤال | إجابة عملية |
هل يمكنني التعديل datadirectoryمباشرةً config.php؟ | لا يُنصح باستخدامه بمفرده. تشير وثائق Nextcloud إلى أن تغيير مسار التخزين المحلي المطلق قد يؤدي إلى تعطيل علاقات قاعدة البيانات. يُفضل الاحتفاظ بالمسار الأصلي باستخدام رابط رمزي. |
| هل أحتاج إلى نسخة احتياطية كاملة؟ | نعم. تتضمن وثائق النسخ الاحتياطي لـ Nextcloud معلومات التكوين، ومجلد البيانات، وقاعدة البيانات، وبيانات التطبيقات/السمات المخصصة ذات الصلة. لا تعتمد على القرص القديم كنسخة احتياطية وحيدة. |
| هل يجب أن يكون القرص الصلب الخارجي بنظام الملفات ext4؟ | لا يفرض هذا الإجراء استخدام نظام ملفات محدد. تستخدم الأمثلة أدناه نظام ext4 لأن سلوك الملكية والأذونات في لينكس بسيط ومباشر. قد تتطلب أنظمة الملفات الأخرى خيارات ربط مختلفة. |
هل يجب أن أركض files:scan --allبعد ذلك؟ | لا يُنصح باستخدامه عادةً عند نقل الملفات مع الحفاظ على مسارها. استخدمه عندما تكون الملفات مفقودة بالفعل من ذاكرة التخزين المؤقت للملفات أو عندما يتم نسخ الملفات إلى شجرة البيانات خارج Nextcloud وتحتاج إلى إعادة فحص فورية. |
| هل القرص الصلب الخارجي (USB) موثوق به مثل القرص الصلب الداخلي؟ | يعتمد ذلك على نوع الحاوية، والكابل، ومصدر الطاقة، ونظام الملفات، والجهاز المضيف. يُعدّ تعطل محرك الأقراص القابل للإزالة خطرًا على التوافر، لذا اجعل عملية التثبيت دائمة وتحقق منها قبل تشغيل Nextcloud. |
1. قم بتثبيت محرك الأقراص الخارجي في مسار ثابت
حدد أولًا الجهاز ونظام الملفات. في لينكس، تُظهر أوامر مثل ` lsblk -ffstab` و`fstab` blkidمُعرّف نظام الملفات الفريد (UUID). تجنب إنشاء تكوين دائم حول اسم جهاز مثل `fstab`؛ إذ قد تتغير أسماء أجهزة لينكس عند إضافة أجهزة جديدة أو تغيير ترتيب الكشف. يوصي دليل fstab/dev/sdb1 في لينكس باستخدام مُعرّفات UUID أو LABEL للتركيبات الدائمة.
lsblk -f
sudo blkid /dev/sdb1
sudo mkdir -p /mnt/nextcloud-data-storage
أضف إدخالاً مناسباً إلى الملف /etc/fstab. استبدل مُعرّف UUID ونوع نظام الملفات في المثال بقيم من قرصك الخاص:
UUID=YOUR-FILESYSTEM-UUID /mnt/nextcloud-data-storage ext4 defaults 0 2
ثم اختبر التثبيت قبل لمس Nextcloud:
sudo mount -a
findmnt /mnt/nextcloud-data-storage
df -h /mnt/nextcloud-data-storage
تحقق من القرص الخارجي باستخدام UUID وتأكد من نقطة التحميل قبل نقل أي ملفات Nextcloud.
مفهوم خاطئ شائع: وجود مجلد باسم معين /mnt/nextcloud-data-storageلا يثبت بالضرورة أن القرص مُثبّت عليه. في حال عدم وجود القرص، قد يظل مجلد نقطة التثبيت موجودًا على قرص النظام. الإجراء: استخدم findmntالأمر المناسب mountpointفي كل مرة تختبر فيها عملية النقل وبعد إعادة تشغيل الجهاز.
٢. قم بعمل نسخة احتياطية من Nextcloud وأوقف عمليات الكتابة
يشير دليل النسخ الاحتياطي الحالي لـ Nextcloud إلى أن النسخة الاحتياطية القابلة للاسترداد تشمل مجلد البيانات، والإعدادات، وقاعدة البيانات، ومحتويات أخرى خاصة بالنشر مثل التطبيقات والقوالب المخصصة. راجع وثائق النسخ الاحتياطي الرسمية لـ Nextcloud وتأكد من تخزين النسخة الاحتياطية في مكان آخر غير القرص الذي تنوي إعادة تقسيمه أو استخدامه.
بعد ذلك، فعّل وضع الصيانة من مجلد تثبيت Nextcloud. في نظامي Debian وUbuntu، يكون حساب خادم الويب عادةً كالتالي www-data:
cd /var/www/nextcloud
sudo -E -u www-data php occ maintenance:mode --on
تنص إرشادات الترحيل أيضًا على عدم تشغيل أي مهمة مجدولة (cron job) أثناء عملية النقل، وتوصي بإيقاف خوادم الويب/التطبيقات أثناء نقل البيانات. وتختلف طريقة القيام بذلك باختلاف بيئة النشر: فلكل من Apache وNginx مع PHP-FPM وDocker Compose وSnap وAIO وKubernetes حدود خدمة مختلفة.
الإجراء: عطّل إدخال Cron الخاص بـ Nextcloud أو أوقف خدمة Cron ذات الصلة، ثم أوقف خدمة الويب/التطبيق قبل النسخ النهائي. إذا كانت مجموعة البيانات كبيرة جدًا، يمكنك تهيئة القرص الخارجي مسبقًا أثناء اتصال الموقع بالإنترنت، ثم الدخول في وضع الصيانة، وإيقاف عمليات الكتابة، وإجراء عملية rsyncنسخ نهائية لالتقاط التغييرات.
3. انسخ مجلد البيانات بالكامل، بما في ذلك الملفات المخفية
لا تنسخ مجلدات المستخدم فقط. يحتوي مجلد البيانات أيضًا على ملفات مخفية مثل .ncdataبيانات التطبيق التي تنتمي إلى وحدة التخزين. يُشير Nextcloud صراحةً إلى الملفات المخفية/الملفات التي تنتهي بنقطة في عملية النقل.
افترض أن المجلد الحالي هو [ /var/www/nextcloud/dataالمجلد الحالي] وأن القرص الخارجي مُثبّت في [ المجلد الخارجي /mnt/nextcloud-data-storage]. أنشئ الوجهة وانسخ المجلد:
sudo mkdir -p /mnt/nextcloud-data-storage/data
sudo rsync -Aax --info=progress2 /var/www/nextcloud/data/ /mnt/nextcloud-data-storage/data/
تستخدم وثائق استعادة Nextcloud rsync -Aaxمثالًا للحفاظ على شجرة الدليل والبيانات الوصفية. بالنسبة للتركيبات الكبيرة جدًا، قم بتشغيل عملية ثانية بعد إيقاف جميع عمليات الكتابة وافحص الناتج. قد تختلف الخيارات المطلوبة إذا كان مصدرك يستخدم قوائم التحكم بالوصول (ACLs) أو السمات الموسعة أو أنظمة الملفات غير التقليدية أو التخزين المُثبَّت على الحاوية.
أوقف عمليات الكتابة في الخلفية وانسخ شجرة البيانات بالكامل، بما في ذلك ملفات بيانات تعريف Nextcloud المخفية.
مفهوم خاطئ شائع: اكتمال النسخ يعني انتهاء عملية النقل. هذا غير صحيح. لا يزال Nextcloud بحاجة إلى المسار المتوقع، ويجب أن يكون مستخدم HTTP قادرًا على الوصول إلى الموقع الجديد والكتابة فيه. الإجراء: تحقق من عدد الملفات أو قيم التحقق من سلامة الملفات قبل تغيير المسارات، واحتفظ بمجلد المصدر كما هو حتى يجتاز التخزين الجديد الاختبارات.
4. الحفاظ على مسار البيانات الأصلي باستخدام رابط رمزي
هذا هو إجراء السلامة الأساسي. لنفترض أن Nextcloud يستخدم حاليًا ما يلي:
'datadirectory' => '/var/www/nextcloud/data',
لا تُغيّر هذه القيمة في عملية الترحيل الموصى بها مع الحفاظ على المسار. بدلاً من ذلك، احتفظ بالدليل القديم كنسخة احتياطية واستبدله برابط رمزي يشير إلى القرص الخارجي.
sudo mv /var/www/nextcloud/data /var/www/nextcloud/data.old
sudo ln -s /mnt/nextcloud-data-storage/data /var/www/nextcloud/data
ls -ld /var/www/nextcloud/data
يوثق Nextcloud طريقة الربط الرمزي هذه لأن التخزين المحلي يُعرَّف بالمسار المطلق. ومع وجود الرابط، يستمر Nextcloud في رؤية /var/www/nextcloud/dataالبيانات حتى وإن كانت موجودة على القرص الخارجي.
تحقق من ملكية البيانات قبل إجراء تغييرات واسعة النطاق على الأذونات:
stat -c '%U:%G %a %n' /var/www/nextcloud/data.old
stat -c '%U:%G %a %n' /mnt/nextcloud-data-storage/data
namei -l /mnt/nextcloud-data-storage/data
يجب أن يكون مستخدم HTTP قادرًا على تصفح الدلائل الرئيسية وقراءة/كتابة دليل البيانات. يختلف المالك الصحيح باختلاف التوزيعة وطريقة التثبيت. تشير وثائق Nextcloud (occ) إلى أن حساب HTTP شائع www-dataفي Debian/Ubuntu، apacheوفي Fedora/CentOS، ويختلف في الأنظمة الأخرى.
احتفظ بمسار دليل البيانات الأصلي وقم بتوجيهه إلى القرص الخارجي باستخدام رابط رمزي.
مفهوم خاطئ شائع: تشغيل أمر عام بشكل متكرر chmod 777يُصلح الأذونات. قد يُخفي هذا المشكلة الحقيقية ويُضعف الأمان. الحل: قارن المجلد الجديد مع ملكية المجلد الأصلي وأذوناته، واحتفظ بقوائم التحكم بالوصول (ACLs) حيثما استُخدمت، وقم بإجراء الحد الأدنى من التصحيحات اللازمة لمستخدم HTTP فقط.
ماذا لو كنت ترغب حقًا في التغيير datadirectory؟
يُقدّم Nextcloud شرحًا لإجراءٍ لا يعتمد على الروابط الرمزية، لكنّ نفس الوثائق تُصنّفه على أنّه غير مدعوم، وتُحذّر من أنّه قد يُؤدّي إلى تلف قاعدة البيانات. ويتطلّب هذا الإجراء تغيير config.phpوتحديث local::/old-data-dir/السجلّ المُطابق في oc_storagesالجدول.
هذا ليس مجرد صيغة بديلة لنفس العملية؛ بل يُغيّر مُعرّف التخزين الذي يُسجّله Nextcloud داخليًا. الإجراء: استخدم طريقة الرابط الرمزي إلا إذا كان لديك نسخة احتياطية مُختبرة، وعملية استعادة مُختبرة، وسبب تشغيلي مُحدد لإزالة المسار القديم. بالنسبة لتثبيت Nextcloud جديد، اختر موقع البيانات النهائي أثناء التثبيت. يُشير Nextcloud صراحةً إلى أن هذا أسهل من نقله لاحقًا.
5. أعد التشغيل، وتحقق من عملية التثبيت، وأعد تشغيل Nextcloud.
قبل بدء تشغيل Nextcloud، تأكد من أن نظام الملفات الخارجي مثبت بالفعل وأن الرابط الرمزي يؤدي إليه:
findmnt /mnt/nextcloud-data-storage
readlink -f /var/www/nextcloud/data
sudo -E -u www-data test -r /var/www/nextcloud/data/.ncdata && echo readable
أعد تشغيل خدمة الويب/التطبيق، ثم فعّل مهمة Nextcloud المجدولة باستخدام الطريقة المناسبة لبيئة النشر لديك. بعد ذلك، أوقف وضع الصيانة وتحقق من حالة الخادم.
cd /var/www/nextcloud
sudo -E -u www-data php occ maintenance:mode --off
sudo -E -u www-data php occ status
سجّل الدخول واختبر عدة عمليات: افتح ملفًا موجودًا، حمّل ملفًا جديدًا، أعد تسميته، احذفه، استعده من سلة المهملات، وتأكد من قدرة عميل آخر على مزامنته. أعد تشغيل الجهاز المضيف مرة واحدة وكرر العملية findmnt؛ فهذا يكشف أي /etc/fstabإدخال غير صالح قبل أن يصبح مفاجأة أثناء انقطاع الخدمة.
بعد التبديل، تحقق من كل من عملية تحميل نظام التشغيل وعمليات الملفات العادية في Nextcloud.
هل تحتاج occ files:scan --all؟
ليس تلقائيًا. تشير وثائق أمر الملفات في Nextcloud إلى files:scanأنه يُحدّث ذاكرة التخزين المؤقت للملفات الجديدة أو المُعدّلة، وقد يكون مفيدًا بعد النسخ اليدوي أو عند التحقق من تناقضات ذاكرة التخزين المؤقت. تهدف عملية النقل التي تحافظ على المسار، عند تنفيذها بشكل صحيح، إلى الاحتفاظ بنفس الملفات ونفس مسار التخزين المحلي المنطقي، لذا لا ينبغي أن يكون الفحص الكامل هو الخطوة الافتراضية "احتياطًا".
الإجراء: اختبر واجهة المستخدم أولاً وقارن الملفات المتوقعة. إذا كانت الملفات مفقودة من Nextcloud رغم وجودها على القرص، فاستخدم فحصًا مُوجَّهًا، أو عند الضرورة، قم بإصلاحها files:scan --all. يُرجى العلم أن الفحص الكامل على نظام كبير قد يستغرق وقتًا طويلاً.
قائمة التحقق النهائية للهجرة
- توجد قاعدة بيانات حالية، وتكوين، ونسخة احتياطية من البيانات خارج القرص الذي يتم ترحيله.
- يحتوي نظام الملفات الخارجي على نقطة تحميل مستقرة تم تكوينها بواسطة UUID أو LABEL.
findmntيؤكد ذلك أن القرص الصلب الخارجي مثبت بالفعل.
- يتم إيقاف عمليات الكتابة في Nextcloud ووظائف cron أثناء عملية المزامنة النهائية.
.ncdataتم نسخ دليل البيانات بالكامل، بما في ذلك المجلد .
- يتم الحفاظ على مسار الملف الأصلي
datadirectoryباستخدام رابط رمزي.
- يمكن لمستخدم HTTP اجتياز مسار التحميل وقراءة/كتابة البيانات.
- يبدأ Nextcloud بدون أخطاء في التخزين ويعمل
occ statusبشكل طبيعي.
- نجحت اختبارات التحميل وإعادة التسمية والحذف والاستعادة والتنزيل والمزامنة.
- تمت إعادة تشغيل الخادم مرة واحدة للتأكد من أن محرك الأقراص الخارجي يتم تثبيته بشكل موثوق عند بدء التشغيل.
- لم يتم حذف دليل البيانات القديم حتى يتم اختبار الإعداد الجديد وإجراء نسخ احتياطي منفصل له.
الفكرة الأهم بسيطة: نقل بيانات Nextcloud ليس مجرد نسخ لنظام الملفات. المسار جزء من هوية التخزين المحلي لـ Nextcloud. احتفظ بهذا المسار كلما أمكن، واجعل القرص الخارجي نقطة ربط نظام موثوقة، وأوقف عمليات الكتابة أثناء النسخ النهائي، واحتفظ بنسخة احتياطية حتى يجتاز التخزين الجديد اختبارات التطبيق وإعادة التشغيل بنجاح.