# نظام ملفات يونكس

نظام ملفات يونكس أو (نظام إدارة الملفات على يونكس), هو وسيلة لتخزين المعلومات في الحاسوب وتنظيمها في ملفات على ذاكرة (قرص صلب، فلاش يو اس بي، قرص مضغوط، KSSD ، قرص مرن، الخ).
يستعمل هذا النظام في العديد من نسخ يونكس وأنظمة التشغيل الشبيه بيونكس مثل لينكس وماك او اس، وهذا للتمكن من إدارة الملفات وتخزين كميات كبيرة من البيانات ومشاركتها بين عدة برامج الكمبيوتر، تم إنشاء هذا النظام من طرف كين تومسون في عام 1969.
يتم الوصول إلى كل ملفات النظام على نظام يونكس من خلال ملف الكتلة الخاصة. تحفظ كل المعلومات في قاعدة بيانات النظام يسمى «جدول نظام الملفات»، ويكون عادتا الملف /var/fstab. وهو يتضمن معلومات عن اسم الجهاز، اسم الدليل التي بموجبها سوف يتم تركيبه، والقراءة وكتابة وامتيازات الجهاز. فمن الممكن لتركيب نظام الملف «للقراءة فقط»، لمنع المستخدمين من تغيير أي شيء.
مثل غيرها من أنظمة التشغيل (ماك أو ويندوز) يتم تخزين المعلومات على أنظمة يونكس "UNIX " في ملفات. وإلى جانب هذا، يتيح يونكس إنشاء المجلدات.

## بنية نظام الملفات

الدليل الجذر (/) هو بداية أو الدليل الأعلى لنظام الملفات. يتكون نظام الملفات يونكس من جدر والدلائل الفرعية (المجلدات). دليل الجذر لا يوجد لديه دلائل الأصل، ولكن يحتوي على العديد الدلائل الفرعية، مثل etc, var, bin, and home .
قد يكون المجلد عبارة عن قسم من القرص ويعمل مغاير للنظام، مثلا (دليل الجدر يعمل ب EXT4 و home يعمل بXFS), يتم تركيب أفسام النظام خلال إقلاع النواة من الإعدادات المتواجدة في fstab وفي بعض الأحيان يدويا عبر أمر mount.
يتم الفصل في مسار سلسلة المجدات المتداخلة بعارضة (/) عوض (\) المعمول به في وينداوز.

## أنواع البيانات

كل البيانات في نظام ملفات يونكس يمكن أن تنتمي إلى واحدة من أربعة أنواع محتملة:

### الملفات العادية

يمكن الملفات العادية تحتوي على نص أو بيانات أو معلومات للبرنامج. لا يمكن أن يحتوي ملف عادي ملف آخر، أو دليل. ملف عادي يمكن اعتباره مصفوفة أحادية الأبعاد من وحدات البايت.

### المجلدات

هي حاويات يمكن أن تحتوي ملفات، أو مجلدات أخرى.و المجلدات تعتبر ملف له سطر واحد لكل بند. كل سطر في ملف الدليل يحتوي فقط على اسم العنصر، وإشارة رقمية إلى الموقع في هذا البند.
خلافا لما حدث في أنظمة الملفات مثل NTFS، مجلدات يونكس لا «تحتوي على» ملفات بشكل فعلي. بدلا من ذلك، أنها تحتوي على أسماء الملفات المقترنة مع إشارات إلى ما يسمى inode، والتي بدورها تحتوي على كل من الملف وبيانات التعريف الخاصة بها (المستخدم، التصريحات، وقت الإنشاء، أخز تعديل). لا يوجد اسم فعلي للمجلد. الأسماء في نظام الملفات قد تشير إلى نفس الملف، هذه ميزة تعرف باسم الرابط (hard) .
اتخذ قرار عدم السماح للواصلات المتعددة لدليل واحد، هذا لصعوبة فهمه ولكي يبقى شكل الشجرة في ترابط مجلدات النظام.

### ملفات خاصة

تتمثل في ملفات الإدخال / الإخراج (I / O) الأجهزة، مثل TTY (محطة)، محرك أقراص، أو طابعة. لأن يونكس يتعامل مع الأجهزة على شكل ملفات، حيث يتم التخاطب مع الأجهزة عبر إرسال كتل من البيانات. بأحجام نموذجية هي 512 بايت، بايت 1024، و 2048 بايت.
هناك ملفات أخرى مثل ملفات التخاطب بين البرامج (pipes الأنبوبية) وملفات الشبكة المقبس sockets وهي ملفات غير موجودة في القرص ويتم إنشائها خلال تشغيل النظام أو البرامج، لا تبقى هذه الملفات في النظام لأنها لن تحفظ في القرص الصلب، إنما توضع في مجلدات الذاكرة RAM ; وهي مجلد /proc , مجلد tmp أو run.

### وصلات

أو الارتباطات، هي مؤشر إلى ملف آخر. تذكر أن المجلدات ليس أكثر من قائمة من الأسماء وأرقام من الملفات. وخلافا لوينداوز، الوصلة لا يمكن تمييزها عن الملف الأصلي لأن الدليل يشير إلى نفس العقدة في inode . عندما يتم ارتباط ثابت (hard).
لهذا السبب، وجدت. الوصلة اللينة (أو الارتباط الرمزي) وهي مؤشر غير مباشر إلى ملف. يتم تنفيذ وصلة لينة كإدخال ملف الدليل الذي يحتوي على اسم مسار.
الروابط لينة يمكن تمييزها عن الملفات، ويمكن أن تمتد عبر أنظمة الملفات. (ليس كل إصدارات UNIX تدعم الروابط اللينة).

## ملفات المستخدم

UNIX يتتبع الملفات والمجلدات باستخدام نظام الملفات. عند تسجيل الدخول إلى حساب يونكس الخاص بك، يتم وضعك في الدليل الخاص"/home/user". وبالتالي الدليل الرئيسي الخاص بك يصبح «دليل العمل الحالي»، هنا يمكنك إنشاء الملفات والمجلدا.
لكن عند تغيير دليل العمل إلى مجلدات النظام، يتطلب منك تصريح مدير النظام Root لتتمكن من التغيير في الملفات.
مجلدات النظام:
| المجلد أو الملف | الوصف |
| / | تشير الشرطة المائلة / وحدها إلى جذر شجرة نظام الملفات. |
| /bin | يرمز إلى الملفات الثنائية ويحتوي على بعض الأدوات الأساسية، مثل ls أو cp، اللازمة لتركيب /usr، عندما يكون نظام ملفات منفصل، أو للتشغيل في وضع المستخدم الواحد (الإداري) عندما لا يمكن تركيب /usr. في نظام V.4، يعد هذا ارتباطًا رمزيًا بـ /usr/bin. وإلا، فيجب أن يكون على نظام ملفات الجذر نفسه. |
| /boot | يحتوي على جميع الملفات المطلوبة لعملية بدء التشغيل الناجحة. في Research Unix، كان هذا ملفًا واحدًا وليس دليلًا. في الوقت الحاضر، عادةً ما يكون موجودًا على نظام الملفات الجذر نفسه، ما لم يتطلب النظام أو برنامج التشغيل غير ذلك. |
| /dev | ترمز إلى الأجهزة (devices). تحتوي على تمثيلات ملفات للأجهزة الطرفية والأجهزة الوهمية. ويجب أن تكون على نظام ملفات الجذر نفسه. |
| /etc | يحتوي على ملفات إعداد على مستوى النظام وقواعد بيانات النظام؛ يرمز الاسم إلى (et cetera) ولكن الآن هناك توسع أفضل وهو (editable-text-configurations). يحتوي في الأصل أيضًا على "أدوات صيانة خطيرة" مثل init، ولكن تم نقلها عادةً إلى المجلد /sbin أو في مكان آخر. ويجب أن يكون موجودًا على نظام الملفات الجذر نفسه. |
| /home | تحتوي على المجلدات الرئيسية للمستخدم في اللينكس وبعض الأنظمة الأخرى. وفي الإصدار الأصلي من اليونكس، تتواجد المجلدات الرئيسية في /usr بدلاً من ذلك. وبعض الأنظمة استخدمت أو لا تزال تستخدم مواقع مختلفة: يحتوي نظام macOS على مجلدات رئيسية في /Users، والإصدارات الأقدم من BSD في /u، ويحتوي FreeBSD على /usr/home. |
| /lib | للمكتبات الأساسية: مكتبات C، ولكن ليست مكتبات الفورتران. وفي الأنظمة الحديثة، تحتوي على المكتبات المشتركة التي تحتاجها البرامج في /bin، وربما برنامج تعريف الأجهزة أو وحدات الأنوية قابلة التحميل. قد تحتوي توزيعات اللينكس على إصدارات /lib32 و/lib64 لدعم تعدد المعماريات. |
| /media | نقطة التثبيت الافتراضية للأجهزة القابلة للإزالة، مثل أجهزة USB ومشغلات الوسائط وما إلى ذلك. ومن المنطقي أن المجلد نفسه، الذي يتكون مجلدات فرعية خاصة به عبارة عن نقاط تثبيت، موجود على قسم الجذر نفسه. |
| /mnt | ترمز إلى كلمة mount (تركيب). وهو دليل فارغ يستخدمه عادةً مسؤول النظام كنقطة تثبيت مؤقتة. وفقًا للمنطق السليم، فإن المجلد نفسه، والذي يتكون مجلدات فرعية خاصة به كنقاط تثبيت، موجود على قسم الجذر نفسه. |
| /opt | يحتوي على برامج مثبتة محليًا. نشأ في نظام يونكس الخامس، الذي يحتوي على مدير حزم يقوم بتثبيت البرامج في هذا الدليل (دليل فرعي واحد لكل حزمة). |
| /proc | نظام الملفات الافتراضي procfs ويعرض معلومات حول العمليات كملفات. |
| /root | الدليل الرئيسي لجذر المستخدم المسؤول عن النظام. يوجد الدليل الرئيسي لهذا الحساب عادةً على نظام الملفات الأولي، وليس في /home (الذي قد يكون نقطة تثبيت لنظام ملفات آخر) في حالة الحاجة إلى إجراء صيانة معينة، والتي لا تتوفر خلالها أنظمة ملفات أخرى، على سبيل المثال، إذا تعرض محرك القرص الصلب لعطب ولم يتمكن من التثبيت بشكل صحيح. |
| /sbin | تعني (system or superuser binaries) وتحتوي على أدوات مساعدة أساسية، مثل init، والتي عادة ما تكون مطلوبة لبدء تشغيل النظام وصيانته واستعادته. يجب أن تكون موجودة على قسم الجذر نفسه. |
| /srv | بيانات الخادم (بيانات الخدمات التي يقدمها النظام). |
| /sys | في بعض توزيعات لينكس، يحتوي على نظام الملفات الافتراضي sysfs، ويشمل معلومات تتعلق بالأجهزة ونظام التشغيل. في أنظمة BSD، عادةً ما يكون وصلة لينة لمصادر النواة kernel في /usr/src/sys. |
| /tmp | مكان للملفات المؤقتة التي لا يُتوقع أن تبقى بعد إعادة التشغيل. تقوم العديد من الأنظمة بمسح هذا الدليل عند بدء التشغيل أو استخدام الملف المؤقت tmpfs لتنفيذه. |
| /unix | نواة يونكس في أبحاث يونكس والنظام الخامس. ومع إضافة دعم الذاكرة الافتراضية إلى توزيعة 3BSD، وقد تم إعادة تسميتها إلى /vmunix. |
| /usr | "نظام ملفات المستخدم": كان في الأصل المجلد الذي يحتوي على مجلدات المستخدم الرئيسية، ولكن بحلول النسخة الثالثة من يونكس مركز البحوث، حوالي عام 1973، أعيد استخدامه لتقسيم برامج نظام التشغيل على قرصين (أحدهما محرك ذو رأس ثابت سعة 256 كيلو بايت) بحيث تظهر الأوامر الأساسية إما في /bin أو /usr/bin. يحتوي الآن على ملفات قابلة للتنفيذ ومكتبات وموارد مشتركة ليست بالغة الأهمية للنظام، مثل نظام X Window ومديري النوافذ ولغات البرمجة النصية وما إلى ذلك. في أنظمة Unix القديمة، قد تظل مجلدات المستخدم الرئيسية تظهر في /usr إلى جانب المجلدات التي تحتوي على البرامج، على الرغم من أن هذا كان يعتمد بحلول عام 1984 على العادات المحلية. |
| /usr/include | يخزن ملفات التطوير الترويسة (headers) المستخدمة في جميع النظام. تُستخدم ملفات الترويسة في الغالب بواسطة التضمين #include في لغة C، وهو ما كان يُستخدم تاريخيًا لاختيار اسم هذا المجلد. |
| /usr/lib | يخزن المكتبات وملفات البيانات اللازمة للبرامج المخزنة داخل /usr أو في أي مكان آخر. |
| /usr/libexec | يحتوي على البرامج التي من المفترض أن يتم تنفيذها بواسطة برامج أخرى بدلاً من المستخدمين مباشرةً. على سبيل المثال، يمكن العثور على الملف القابل للتنفيذ "Sendmail" في هذا المجلد. ولم يكن موجودًا في التسلسل الهرمي القياسي لنظام الملفات (FHS) حتى عام 2011؛ توزيعات لينكس تنقل محتويات هذا الدليل تقليديًا إلى /usr/lib، حيث كانت موجودة أيضًا في توزيعة برمجيات بيركلي (4.3BSD). |
| /usr/local | Resembles /usr in structure, but its subdirectories are used for additions not part of the operating system distribution, such as custom programs or files from a BSD المنقولات. Usually has subdirectories such as /usr/local/lib or /usr/local/bin. |
| /usr/share | Architecture-independent program data. On Linux and modern BSD derivatives, this directory has subdirectories such as man for manpages, that used to appear directly under /usr in older versions. |
| /var | Stands for variable. A place for files that might change frequently - especially in size, for example e-mail sent to users on the system, or process-ID lock files. |
| /var/log | Contains system log files. |
| /var/mail | The place where all incoming mail is stored. Users (other than root) can access their own mail only. Often, this directory is a symbolic link to /var/spool/mail. |
| /var/spool | Spool directory. Contains print jobs, mail spools and other queued tasks. |
| /var/src | The place where the uncompiled source code of some programs is. |
| /var/tmp | The /var/tmp directory is a place for temporary files which should be preserved between system reboots. |

## تحرير ملفات النظام
### دليل أوامر النظام /bin System commands

يحتوي هذا الدليل على الأوامر (commands) الضرورية للنظام. ويمكن أن يستخدمها المشرف على النظام (administrator) والمستخدم العادي ويجب أن لا تكون هناك دلائل فرعية في هذا الدليل.

### دليل ملفات الأجهزة /Device Files

هذا المجلد خاص بالأجهزة المرفقة بالحاسب الآلي. ويحتوي على إدخال لكل جهاز تم تجهيز نواة النظام للتعامل معه. فمثلا للقرص المرن الأول يوجد الملف /dev/fd0 و للمودم يوجد الملف /dev/modem وتوجد أوامر خاصة بهذا الدليل مثل الأمر mknod لإنشاء ملفات الأجهزة.

### الإعدادات الخاصة بالنظام / System Configuration

يحتوي مجلد /etc على ملفات الإعداد الخاصة بالنظام. فمثلا برنامج ليلو (Lilo) يخزن إعداداته في الملف lilo.conf الموجود في هذا الدليل. ولأيمكن وضع الملفات القابلة للتشغيل (binaries) في هذا الدليل. و تصنف أنواع الملفات الموجودة تحت هذا الدليل كما يلي.
* ملفات عامة
{ adjtime, csh.login, disktab, fdprm, fstab, gettydefs, group, inittab, confissue, ld.so.conf, lilo.conf, motd, mtab, mtools, passwd, profile, securetty, shells, syslog.conf, ttytype }
* ملفات الشبكة
{ exports, ftpusers, gateways, host.conf, hosts, hosts.allow, hosts.deny, hosts.equiv, hosts.lpd, inetd.conf, networks, printcap, protocols, resolv.conf, rpc, services }
كما يندرج تحت هذا الدليل دليل باسم X11 وهو المكان الأفضل لتخزين ملفات الإعدادات الخاصة ببيئة الواجهة الرسومية X11. ومن أهم الملفات في هذا الدليل الملف xorg.conf الذي يتضمن إعدادات الشاشة وبطاقة VGA .