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

نظام ملفات يونكس أو (نظام إدارة الملفات على يونكس), هو وسيلة لتخزين المعلومات في الحاسوب وتنظيمها في ملفات على ذاكرة (قرص صلب، فلاش يو اس بي، قرص مضغوط، KSSD ، قرص مرن، الخ).[1]

صورة لمجلدات نظام لينكس

يستعمل هذا النظام في العديد من نسخ يونكس وأنظمة التشغيل الشبيه بيونكس مثل لينكس وماك او اس، وهذا للتمكن من إدارة الملفات وتخزين كميات كبيرة من البيانات ومشاركتها بين عدة برامج الكمبيوتر، تم إنشاء هذا النظام من طرف كين تومسون في عام 1969.

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

مثل غيرها من أنظمة التشغيل (ماك أو ويندوز) يتم تخزين المعلومات على أنظمة يونكس "UNIX " في ملفات. وإلى جانب هذا، يتيح يونكس إنشاء المجلدات.

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

عدل

الدليل الجذر (/) هو بداية أو الدليل الأعلى لنظام الملفات. يتكون نظام الملفات يونكس من جدر والدلائل الفرعية (المجلدات). دليل الجذر لا يوجد لديه دلائل الأصل، ولكن يحتوي على العديد الدلائل الفرعية، مثل etc, var, bin, and home .

قد يكون المجلد عبارة عن قسم من القرص ويعمل مغاير للنظام، مثلا (دليل الجدر يعمل ب EXT4 و home يعمل بXFS), يتم تركيب أفسام النظام خلال إقلاع النواة من الإعدادات المتواجدة في fstab وفي بعض الأحيان يدويا عبر أمر mount.

يتم الفصل في مسار سلسلة المجدات المتداخلة بعارضة (/) [2] عوض (\) المعمول به في وينداوز.

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

عدل

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

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

عدل

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

المجلدات

عدل

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

خلافا لما حدث في أنظمة الملفات مثل NTFS، مجلدات يونكس لا «تحتوي على» ملفات بشكل فعلي. بدلا من ذلك، أنها تحتوي على أسماء الملفات المقترنة مع إشارات إلى ما يسمى [3] 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، كان هذا ملفًا واحدًا وليس دليلًا.[4] في الوقت الحاضر، عادةً ما يكون موجودًا على نظام الملفات الجذر نفسه، ما لم يتطلب النظام أو برنامج التشغيل غير ذلك.
/dev
ترمز إلى الأجهزة (devices). تحتوي على تمثيلات ملفات للأجهزة الطرفية والأجهزة الوهمية. ويجب أن تكون على نظام ملفات الجذر نفسه.
/etc
يحتوي على ملفات إعداد على مستوى النظام وقواعد بيانات النظام؛ يرمز الاسم إلى (et cetera)[4] ولكن الآن هناك توسع أفضل وهو (editable-text-configurations). يحتوي في الأصل أيضًا على "أدوات صيانة خطيرة" مثل init،[5] ولكن تم نقلها عادةً إلى المجلد /sbin أو في مكان آخر. ويجب أن يكون موجودًا على نظام الملفات الجذر نفسه.
/home
تحتوي على المجلدات الرئيسية للمستخدم في اللينكس وبعض الأنظمة الأخرى. وفي الإصدار الأصلي من اليونكس، تتواجد المجلدات الرئيسية في /usr بدلاً من ذلك.[6] وبعض الأنظمة استخدمت أو لا تزال تستخدم مواقع مختلفة: يحتوي نظام macOS على مجلدات رئيسية في /Users، والإصدارات الأقدم من BSD في /u، ويحتوي FreeBSD على /usr/home.
/lib
للمكتبات الأساسية: مكتبات C، ولكن ليست مكتبات الفورتران.[4] وفي الأنظمة الحديثة، تحتوي على المكتبات المشتركة التي تحتاجها البرامج في /bin، وربما برنامج تعريف الأجهزة أو وحدات الأنوية قابلة التحميل. قد تحتوي توزيعات اللينكس على إصدارات /lib32 و/lib64 لدعم تعدد المعماريات.
/media
نقطة التثبيت الافتراضية للأجهزة القابلة للإزالة، مثل أجهزة USB ومشغلات الوسائط وما إلى ذلك. ومن المنطقي أن المجلد نفسه، الذي يتكون مجلدات فرعية خاصة به عبارة عن نقاط تثبيت، موجود على قسم الجذر نفسه.
/mnt
ترمز إلى كلمة mount (تركيب). وهو دليل فارغ يستخدمه عادةً مسؤول النظام كنقطة تثبيت مؤقتة. وفقًا للمنطق السليم، فإن المجلد نفسه، والذي يتكون مجلدات فرعية خاصة به كنقاط تثبيت، موجود على قسم الجذر نفسه.
/opt
يحتوي على برامج مثبتة محليًا. نشأ في نظام يونكس الخامس، الذي يحتوي على مدير حزم يقوم بتثبيت البرامج في هذا الدليل (دليل فرعي واحد لكل حزمة).[7]
/proc
نظام الملفات الافتراضي procfs ويعرض معلومات حول العمليات كملفات.
/root
الدليل الرئيسي لجذر المستخدم المسؤول عن النظام. يوجد الدليل الرئيسي لهذا الحساب عادةً على نظام الملفات الأولي، وليس في /home (الذي قد يكون نقطة تثبيت لنظام ملفات آخر) في حالة الحاجة إلى إجراء صيانة معينة، والتي لا تتوفر خلالها أنظمة ملفات أخرى، على سبيل المثال، إذا تعرض محرك القرص الصلب لعطب ولم يتمكن من التثبيت بشكل صحيح.
/sbin
تعني (system or superuser binaries) وتحتوي على أدوات مساعدة أساسية، مثل init، والتي عادة ما تكون مطلوبة لبدء تشغيل النظام وصيانته واستعادته. يجب أن تكون موجودة على قسم الجذر نفسه.
/srv
بيانات الخادم (بيانات الخدمات التي يقدمها النظام).
/sys
في بعض توزيعات لينكس، يحتوي على نظام الملفات الافتراضي sysfs، ويشمل معلومات تتعلق بالأجهزة ونظام التشغيل. في أنظمة BSD، عادةً ما يكون وصلة لينة لمصادر النواة kernel في /usr/src/sys.
/tmp
مكان للملفات المؤقتة التي لا يُتوقع أن تبقى بعد إعادة التشغيل. تقوم العديد من الأنظمة بمسح هذا الدليل عند بدء التشغيل أو استخدام الملف المؤقت tmpfs لتنفيذه.
/unix
نواة يونكس في أبحاث يونكس والنظام الخامس.[4] ومع إضافة دعم الذاكرة الافتراضية إلى توزيعة 3BSD، وقد تم إعادة تسميتها إلى /vmunix.
/usr
"نظام ملفات المستخدم": كان في الأصل المجلد الذي يحتوي على مجلدات المستخدم الرئيسية،[6] ولكن بحلول النسخة الثالثة من يونكس مركز البحوث، حوالي عام 1973، أعيد استخدامه لتقسيم برامج نظام التشغيل على قرصين (أحدهما محرك ذو رأس ثابت سعة 256 كيلو بايت) بحيث تظهر الأوامر الأساسية إما في /bin أو /usr/bin.[8] يحتوي الآن على ملفات قابلة للتنفيذ ومكتبات وموارد مشتركة ليست بالغة الأهمية للنظام، مثل نظام X Window ومديري النوافذ ولغات البرمجة النصية وما إلى ذلك. في أنظمة Unix القديمة، قد تظل مجلدات المستخدم الرئيسية تظهر في /usr إلى جانب المجلدات التي تحتوي على البرامج، على الرغم من أن هذا كان يعتمد بحلول عام 1984 على العادات المحلية.[4]
/usr/include
يخزن ملفات التطوير الترويسة (headers) المستخدمة في جميع النظام. تُستخدم ملفات الترويسة في الغالب بواسطة التضمين #include في لغة C، وهو ما كان يُستخدم تاريخيًا لاختيار اسم هذا المجلد.
/usr/lib
يخزن المكتبات وملفات البيانات اللازمة للبرامج المخزنة داخل /usr أو في أي مكان آخر.
/usr/libexec
يحتوي على البرامج التي من المفترض أن يتم تنفيذها بواسطة برامج أخرى بدلاً من المستخدمين مباشرةً. على سبيل المثال، يمكن العثور على الملف القابل للتنفيذ "Sendmail" في هذا المجلد.[9] ولم يكن موجودًا في التسلسل الهرمي القياسي لنظام الملفات (FHS) حتى عام 2011؛[10] توزيعات لينكس تنقل محتويات هذا الدليل تقليديًا إلى /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 .[11]

المراجع

عدل
  1. ^ "General overview of the Linux file system". مؤرشف من الأصل في 2019-06-03.
  2. ^ "Tutorial 2: UNIX File System". مؤرشف من الأصل في 6 أبريل 2015. اطلع عليه بتاريخ أكتوبر 2020. {{استشهاد ويب}}: تحقق من التاريخ في: |تاريخ الوصول= (مساعدة)
  3. ^ UNIX and Linux Files and Directories نسخة محفوظة 06 يناير 2018 على موقع واي باك مشين.
  4. ^ ا ب ج د ه Kernighan، Brian W.؛ Pike، Rob (1984). The UNIX Programming Environment. Prentice-Hall. ص. 63–65. Bibcode:1984upe..book.....K.
  5. ^ [[[:قالب:Man/v7]] hier(قالب:Man/v7)] – قالب:Man/v7
  6. ^ ا ب Ritchie، Dennis. "Unix Notes from 1972". مؤرشف من الأصل في 2024-11-23. اطلع عليه بتاريخ 2018-01-14.
  7. ^ System V Application Binary Interface Edition 4.1 (1997-03-18)
  8. ^ M. D. McIlroy (1987). "A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986" (PDF). Bell Labs. CSTR 139. مؤرشف من الأصل (PDF) في 2018-10-19.
  9. ^ "Chapter 7. sendmail". يو إن آي سي أو إس/mp Networking Facilities Administration. كراي (شركة). مؤرشف من الأصل في 2013-09-14. اطلع عليه بتاريخ 2013-09-14.
  10. ^ "fhs-spec revision 44". مؤرشف من الأصل في 2017-03-05. اطلع عليه بتاريخ 2024-11-03.
  11. ^ مجتمع لينكس العربي