====== شرح بنية نظام ملفات لينكس ======
نظام الملفّات هو القطعة البرمجية المسؤولة عن تنظيم عمليات القراءة والكتابة على أقراص البيانات الموجودة في الحاسوب ضمن نظام التشغيل، بالإضافة إلى كيفية تعامل المستخدم والتطبيقات معها. لم يكن ليكون من الممكن للمستخدمين أن ينشؤوا الملفات والمجلدات ويتعاملوا معها من دون وجود أنظمة ملفات مختلفة لتقوم بتنظيم المساحة المتوفرة على القرص الصلب وتقطيعها وتجهيزها تلقائيًا لخدمة بيانات الملفات.
نظام الملفات على لينكس مختلف عن الذي على ويندوز وسنرى في هذه الصفحة الفروقات بينهما.
===== الفرق بين مجلد الجذر ومجلد المنزل على لينكس =====
دعنا نشرح بالبداية مفهوميّ** مجلد الجذر (Root directory)** و**مجلد المنزل (Home directory)**.
بيانات المستخدمين على لينكس مفصولة عن ملفّات التطبيقات، فعلى عكس ويندوز الذي قد يخزّنها في نفس المجلد أو في مجلد AppData أو غيرها من الأماكن، تكون جميع ملفّات التطبيقات على لينكس مخزّنة على قرص الجذر (Root directory) ضمن مجلدات مختلفة. بينما تكون بيانات المستخدمين وإعدادات التطبيقات التي يستعملونها وملفّاتهم الشخصية وكل ما يتعلق بهم مخزّنةً في مجلد المنزل (Home directory)، وهو ما يسمح للمستخدمين مثلًا بإزالة التطبيقات لكن مع الاحتفاظ ببياناتهم وإعداداتهم.
تكون مجلدات المنزل الخاصّة بالمستخدمين موجودة تحت المسار /home/، فمثلًا إذا كان على نظام 3 مستخدمين هم خالد وأحمد ومحمد، فستجد 3 مجلدات منزل مختلفة تحت /home/ منفصلة عن بعضها وتحوي ملفّات مختلفة عن غيرها مثل /home/khalid و/home/ahmed و/home/mohammed.
هذه الميزة مفيدة جدًا على لينكس، لأن هذا يعني أن بيانات كل مستخدم مفصولة عن بيانات المستخدمين الآخرين، ويمكن أخذ نسخة احتياطية عنها أو تأمينها بشكل منفصل عن ملفّات التطبيقات والحزم الخاصّة بالنظام، وبالتالي تصبح العملية أسهل. كما أن لكل مستخدم إعداداته الخاصّة للتطبيقات التي على النظام. لينكس مرن جدًا فيما يتعلق بتقسيم قرص التخزين (Storage Disk) إلى أقراص (Partitions) مختلفة على عكس ويندوز، فيمكنك مثلًا أن تختار أن تجعل مجلد المنزل على قرص منفصل عن قرص مجلد الجذر، بل يمكنك حتى أن تجعل قرص الملفّات الإقلاعية الخاصّة بالنظام (التي على /boot/) هي الأخرى في قرص منفصل إن أردت ذلك. ويمكنك أيضًا بطبيعة الحال أن تضعهم جميعًا على قرصٍ واحد (وهو الخيار الافتراضي).
===== بنية مجلد المنزل على لينكس =====
ستجد الكثير من المجلدات المخفية في مجلد المنزل الخاصّ بك، وكل واحد منها يحوي ملفات مخصصة لأمورٍ مختلفة عن غيره، منها نذكر:
^ اسم المجلد ^ الوظيفة |
|.themes|يحوي سِمات تطبيقات GTK الخاصّة بالمستخدم.|
|.icons|يحوي سِمات الأيقونات وسِمات مؤشّر الفأرة الخاصّة بالمستخدم.|
|.config|يحوي مجموعةً من إعدادات التطبيقات الخاصّة بالمستخدم، بالإضافة إلى إعدادات بيئة سطح المكتب الحالية. لكن ليس من الضروري أن تكون جميع إعدادات التطبيقات في هذا المجلد، بل قد تكون في مجلدات منفصلة.|
|.fonts|يحوي الخطوط التي اختار المستخدم تثبيتها لنفسه (أي لن تظهر هذه الخطوط للمستخدمين الآخرين على النظام، بل فقط لهذا المستخدم). هناك عمومًا مسار آخر للخطوط على النظام هو /usr/share/fonts/|
|.mozilla|مجلد يحوي بيانات متصفح فيرفكس الخاصّة بالمستخدم.|
|.local|مجلد آخر لإعدادات التطبيقات وبعض إعدادات النظام الخاصّة بالمستخدم.|
وبالطبع هناك المجلدات غير المخفية العادية لتخزين ملفات المستخدم؛ مثل المستندات والصور والموسيقى والتنزيلات وغيرها (تتبع أسماء هذه المجلدات لغة النظام، فقد تجدها بالإنجليزية إن كان نظامك بالإنجليزية وستجدها بالعربية إن كان نظامك بالعربية).
\\
يمكنك عرض المجلدات المخفية في أي مجلد في متصفح الملفات على لينكس عبر الضغط على مفتاحيّ Ctrl + H.\\
===== بنية مجلد الجذر على لينكس =====
يُرمز لقرص الجذر بالرمز /، ولهذا يمكنك مثلًا كتابة الأمر cd / في الطرفية وبعدها ls لترى محتويات هذا القرص ومجلّداته:
mhsabbagh@ryzenpc:~$ cd /
mhsabbagh@ryzenpc:/$ ls
bin dev lib libx32 mnt root snap sys var
boot etc lib32 lost+found opt run srv tmp
cdrom home lib64 media proc sbin swapfile usr
إليك شرحًا ببعض هذه المجلدات وما تحويه من ملفات تحتها:
^ اسم المسار ^ وظيفته |
|/usr|يحتوي معظم ملفّات التطبيقات التي يثبّتها المستخدم على جهازه، ولا يحويها مباشرةً بل يضعها في مجلدات أخرى ضمنه مثل /usr/share أو /usr/games وغيرها.|
|/bin|يحتوي الملفّات التنفيذية الخاصّة بالحزم والتطبيقات المثبّتة على الجهاز. بعض توزيعات لينكس لا تضع جميع الملفّات التنفيذية في هذا المسار (مثل أوبن سوزا) بل تفصل بينها وبين الملفات التنفيذية التي تتطلب صلاحيات الجذر فتضع هذه الأخيرة في المسار /usr/sbin وتضع التي لا تحتاج هذه الصلاحيات في /bin|
|/tmp|مسار يحوي ملفّات ذاكرة الخبيئة (Cache) والملفّات المؤقتة للعمليات التي تعمل حاليًا.|
|/var|غالبًا ما يحوي ضمنه مجلدات تفيد أنظمة الخواديم (Servers) أكثر؛ مثل ملفّات السجل في /var/log وملفّات مواقع الإنترنت في /var/www وملفّات أخرى.|
|/etc|مسار يحتوي إعدادات النظام والحزم التي ليست من طرف المستخدمين (أي تلك الإعدادات العامة لكامل النظام وليس لكل مستخدم على حدى).|
|lib64|مسار يحوي المكتبات المثبّتة على النظام بإصدار 64 بت.|
|/home|يحوي مجلّدات المنزل الخاصّة بالمستخدمين.|
|/root|مجلد المنزل الخاصّ بالمستخدم الجذر (Root user)؛ غالبًا لا يُستعمل.|
===== أنظمة الملفّات على لينكس =====
تأتي معظم توزيعات لينكس افتراضيًا بنظام الملفّات ext4؛ وهو نظام ملفات قوي ومتين أُطلق منذ 2008م ولا يزال مدعومًا بالتحديثات والتطويرات.
لكن هناك أنظمة ملفّات أخرى، وكل واحد منها يمتلك مميزات مختلفة عن غيره:
* XFS مثلًا يقال أنه أسرع من أنظمة الملفّات الأخرى في عمليات القراءة والكتابة، لكن عيبه هو أنه لا يدعم عمليات تصغير الأقراص.
* Btrfs نظام ملفّات من نوع Copy-on-write أو "إنشاء نسخة عند الكتابة"، وهو يدعم إنشاء "لقطات" (Snapshots) للملفّات مما يمكّن المستخدم من استرجاع الإصدارات السابقة من الملفّات في أي وقت، شبيه بميزة "نقطة الاستعادة" على أنظمة ويندوز غير أنه يقوم بها فوريًا وعلى جميع الملفّات. ما يزال تحت التطوير الكثير وقد واجهنا شخصيًا مشاكل فقد بيانات بسبب استخدامه.
* الكثير جدًا غيرها ولكلٍ استخداماته.
إن كنت مترددًا في اختيار نظام الملفّات المناسب لتوزيعتك عند مرحلة التثبيت، فأفضل ما تفعله هو أن تختار ext4؛ فهو الافتراضي ووضعه مستقر والعلل والمشاكل شبه معدومة معه.