رابط صلب

في مجال الحوسبة ، الرابط الصلب هو مدخل في دليل (في نظام ملفات قائم على الدليل ) يربط اسمًا بملف . لذا، يجب أن يحتوي كل ملف على رابط صلب واحد على الأقل. إنشاء روابط صلبة إضافية لملف ما يجعل محتوياته متاحة عبر مسارات إضافية (أي عبر أسماء مختلفة أو في أدلة مختلفة). [ 1 ] وهذا يُحدث تأثيرًا بديلًا : إذ يمكن لأي عملية فتح الملف من أي مسار من مساراته وتغيير محتواه. في المقابل، الرابط الرمزي أو "الاختصار" لملف ما ليس رابطًا مباشرًا إلى البيانات نفسها، بل هو إشارة إلى رابط صلب أو رابط رمزي آخر.

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

تدعم أنظمة التشغيل المتوافقة مع معيار POSIX ، مثل لينكس وأندرويد وماك أو إس ، وأنظمة ويندوز إن تي غير المتوافقة مع معيار POSIX ، [ 2 ] روابط صلبة متعددة لنفس الملف، وذلك بحسب نظام الملفات. فعلى سبيل المثال، يدعم نظاما NTFS و ReFS الروابط الصلبة، [ 3 ] بينما لا يدعمها نظام FAT .

عملية

توضيح لمفهوم الربط الصلب

لنفترض وجود رابطين ثابتين، يُسميان "LINK A.TXT" و"LINK B.TXT"، يشيران إلى نفس البيانات. يقوم محرر نصوص بفتح "LINK A.TXT"، وتعديله، ثم حفظه. وعندما يفتح المحرر (أو أي تطبيق آخر) "LINK B.TXT"، فإنه يرى التغييرات التي أُجريت على "LINK A.TXT"، لأن كلا اسمي الملفين يشيران إلى نفس البيانات. لذا، من وجهة نظر المستخدم، هذا ملف واحد بأسماء ملفات متعددة. يؤدي تعديل أي اسم ملف إلى تعديل جميع الملفات، بينما يؤدي حذف أي اسم ملف باستثناء الأخير إلى الاحتفاظ بالملف.

مع ذلك، تُخالف بعض المحررات، مثل GNU Emacs ، مفهوم الروابط الصلبة. فعند فتح ملف للتعديل، مثلاً "LINK B.TXT"، يُعيد Emacs تسمية "LINK B.TXT" إلى "LINK B.TXT~"، ثم يُحمّل "LINK B.TXT~" في المحرر، ويحفظ المحتوى المُعدّل في ملف "LINK B.TXT" جديد. الآن، لم يعد الملفان "LINK A.TXT" و"LINK B.TXT" يتشاركان البيانات نفسها. (يمكن تغيير هذا السلوك باستخدام متغير Emacs backup-by-copying).

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

عدّ المراجع

رسم توضيحي مبسط للروابط الصلبة في نظام ملفات يونكس النموذجي. لاحظ أن الملفين "A" و"D" يشيران إلى نفس مدخل الفهرس في جدول inode الخاص بنظام الملفات ، مما يجعل عدد المراجع 2.

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

هذه طريقة بسيطة لنظام الملفات لتتبع استخدام مساحة تخزين معينة، حيث تشير القيم الصفرية إلى المساحة الحرة، بينما تشير القيم غير الصفرية إلى المساحة المستخدمة. يضمن الحفاظ على هذه القيمة عدم وجود روابط صلبة معلقة لا تشير إلى أي مكان. يتم الحفاظ على قسم البيانات وعقدة البيانات المرتبطة به طالما أن هناك رابطًا صلبًا واحدًا (مرجع دليل) يشير إليه، أو طالما أن أي عملية تُبقي الملف المرتبط به مفتوحًا.

في أنظمة التشغيل المتوافقة مع POSIX ، يتم إرجاع عدد المراجع لملف أو دليل بواسطة استدعاءات النظام stat()st_nlink أو fstat() في حقل struct stat.

القيود

لمنع حدوث حلقات في نظام الملفات، وللحفاظ على ..اتساق تفسير ملف " " (المجلد الأصل)، لا تسمح أنظمة التشغيل عمومًا بالروابط الصلبة للمجلدات. كان نظام UNIX System V يسمح بها، ولكن كان المستخدم المتميز فقط هو من يملك صلاحية إنشاء هذه الروابط. [ 4 ] يستخدم نظام Mac OS X v10.5 (Leopard) والإصدارات الأحدث الروابط الصلبة على المجلدات لآلية النسخ الاحتياطي Time Machine فقط. [ 5 ]

لا يمكن إنشاء روابط صلبة إلا للملفات الموجودة على نفس وحدة التخزين، أي ضمن نفس نظام الملفات. (وذلك لأن الرابط الصلب عبارة عن ارتباط "اسم ← عقدة" حيث تُعرَّف العقدة برقمها ، وأرقام العقد فريدة فقط ضمن قسمها. كما أن وحدات التخزين المختلفة قد تحتوي على أنظمة ملفات مختلفة. ولا يوجد ضمان بأن نظام ملفات وحدة التخزين المستهدفة متوافق مع الروابط الصلبة.)

يُحدَّد الحد الأقصى لعدد الروابط الصلبة لملف واحد في نظام ملفات معين بحجم عداد المراجع الخاص بنظام الملفات، وحجم نسخة عداد المراجع في بنية بيانات كل ملف الموجودة في ذاكرة نظام التشغيل؛ وقد يُحدَّد أيضًا بسياسة مُحدَّدة في كود نظام التشغيل. ويؤدي تجاوز العدد المسموح به من الروابط إلى حدوث خطأ. في نظام AT&T Unix System 6 ، الذي صدر عام 1975، كان عدد الروابط الصلبة المسموح به 127. [ 6 ] [ 7 ] في الأنظمة الشبيهة بنظام Unix، يبلغ عداد الذاكرة 4,294,967,295 (على الأجهزة ذات 32 بت) أو 18,446,744,073,709,551,615 (على الأجهزة ذات 64 بت). في بعض أنظمة الملفات، يكون عدد الروابط الصلبة محدودًا بشكل أكثر صرامةً بتنسيقها على القرص. على سبيل المثال، بدءًا من إصدار لينكس 3.11، يحد نظام الملفات ext4 عدد الروابط الصلبة للملف الواحد إلى 65000 رابط. [ 8 ] ويفرض نظام ويندوز حدًا أقصى قدره 1024 رابطًا صلبًا للملف الواحد على وحدات تخزين NTFS . [ 9 ]

في مقالٍ نُشر على موقع "Linux Weekly News" ، انتقد نيل براون الروابط الصلبة ووصفها بأنها تتطلب صيانةً مُكلفة، إذ تُعقّد تصميم البرامج التي تُدير بنية المجلدات، بما في ذلك برامج الأرشفة وأدوات إدارة القرص. إذ يجب على هذه التطبيقات الحرص على إزالة الملفات المُكررة المرتبطة عدة مرات في التسلسل الهرمي . ويشير براون إلى أن نظام التشغيل "Plan 9" من مختبرات بيل ، وهو النظام المُراد تطويره ليونكس، لا يتضمن مفهوم الروابط الصلبة. [ 10 ]

دعم المنصة

يدعم نظام التشغيل Windows NT 3.1 والإصدارات الأحدث الروابط الصلبة على نظام ملفات NTFS . [ 11 ] ويُقدّم نظام Windows 2000 CreateHardLink()وظيفةً لإنشاء روابط صلبة، ولكن للملفات فقط، وليس للمجلدات. [ 12 ] ويمكن لهذه الوظيفة DeleteFile()إزالتها.

لإنشاء رابط ثابت على نظام ويندوز، يمكن للمستخدمين النهائيين استخدام ما يلي:

للاستعلام عن الروابط الصلبة لملف ما، يمكن للمستخدمين النهائيين استخدام ما يلي:

  • المنفعة [ 13 ]fsutil
  • أوامر PowerShell Get-Itemو Get-ChildItemcmdlets. تمثل هذه الأوامر كل ملف بكائن؛ ويضيف PowerShell خاصية LinkType للقراءة فقط إلى كل منها. تحتوي هذه الخاصية على السلسلة " HardLink" إذا كان للملف المرتبط روابط صلبة متعددة. [ 16 ]

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

في الأنظمة الشبيهة بنظام يونكس ، يمكن link()لاستدعاء النظام إنشاء روابط صلبة إضافية للملفات الموجودة. لإنشاء روابط صلبة، يمكن للمستخدمين النهائيين استخدام ما يلي:

  • المنفعة اللوغاريتمية
  • أداة الربط
  • الأمر New-Itemالبرمجي لـ PowerShell [ 15 ]

للاستعلام عن الروابط الصلبة لملف ما، يمكن للمستخدمين النهائيين استخدام ما يلي:

  • الأمرstat
  • الأمرls -l
  • أوامر PowerShell Get-Itemو cmdlets (انظر أعلاه) [ 16 ]Get-ChildItem

تسمح برامج المحاكاة أو التوافق الشبيهة بنظام Unix التي تعمل على نظام التشغيل Microsoft Windows، مثل Cygwin و Subsystem for UNIX-based Applications ، باستخدام واجهات POSIX.

يدعم نظام التشغيل OpenVMS الروابط الصلبة على نظام الملفات ODS-5 . [ 17 ] على عكس نظام Unix، يمكن لنظام VMS إنشاء روابط صلبة إلى الدلائل.

انظر أيضاً

  • الرابط الرمزي : يشير إلى رابط ثابت، وليس إلى بيانات الملف نفسها؛ وبالتالي، فهو يعمل عبر وحدات التخزين وأنظمة الملفات.
  • روابط نظام الملفات NTFS : توضح أنواع الروابط الأربعة التي يدعمها نظام الملفات NTFS - الروابط الصلبة، والروابط الرمزية، ونقاط الوصل، ونقاط تحميل وحدات التخزين
  • اختصار : ملف صغير يشير إلى ملف آخر في موقع محلي أو بعيد
  • freedup : يقوم هذا freedupالأمر بتحرير مساحة القرص عن طريق استبدال مخازن البيانات المكررة بروابط صلبة يتم إنشاؤها تلقائيًا.
  • rsync : يدعم --link-dest=DIRاستخدام الروابط الصلبة للنسخة الاحتياطية السابقة في مجلد النسخ الاحتياطي الجديد إذا لم يتم تغييرها [ 18 ] كميزة لتوفير المساحة والوقت ( النسخ الاحتياطي التزايدي ) [ 19 ] [ 20 ] [ 21 ]

مراجع

  1. بيتشير، ليو. "سؤال وجواب: الفرق بين الروابط الصلبة واللينة" .
  2. "امتداد Link Shell" .
  3. "نظرة عامة على نظام الملفات المرن (ReFS)" . مايكروسوفت ليرن . 26 أكتوبر 2022 - عبر مستندات مايكروسوفت .
  4. باخ، موريس ج. (1986). تصميم نظام التشغيل يونكس . برنتيس هول. ص 128. ISBN  9780132017992.
  5. بوند، جيمس (31 أغسطس 2013). "كيف تعمل آلة الزمن بسحرها" . مخزن أحداث نظام الملفات، الروابط الصلبة. مؤرشف من الأصل في 21 يونيو 2019. تم الاسترجاع في 19 مايو 2019 .
  6. "2.2 رموز الخطأ" . gnu.org . مؤسسة البرمجيات الحرة . تم الاطلاع عليه في 2 أبريل 2025 .
  7. ليونز، جون (1977). "رابط 19.5" . سيدني، أستراليا: جامعة نيو ساوث ويلز. السطر 5917. تم الاطلاع عليه في 2 أبريل 2025 .
  8. "شجرة مصدر نواة لينكس، fs/ext4/ext4.h، السطر 229" .
  9. "دالة CreateHardLinkA (winbase.h)" . تطوير تطبيقات ويندوز . 13 أكتوبر 2021 - عبر مستندات مايكروسوفت .
  10. براون، نيل (23 نوفمبر 2010). "أشباح ماضي يونكس، الجزء 4: التصاميم التي تتطلب صيانة عالية" . أخبار لينكس الأسبوعية . تم الاطلاع عليه في 20 أبريل 2014 .
  11. "كيفية عمل الروابط الصلبة" . مستندات مايكروسوفت . 6 يناير 2011.
  12. "دالة إنشاء رابط صلب" . تطوير ويندوز . مايكروسوفت . 10 مارس 2011. مؤرشفة من الأصل في 2 يوليو 2011 - عبر MSDN . تُنشئ هذه الدالة رابطًا صلبًا بين ملف موجود وملف جديد. وهي مدعومة فقط على نظام ملفات NTFS، وللملفات فقط، وليس للمجلدات.
  13. 1 2 "Fsutil hardlink" . تطوير تطبيقات ويندوز . مايكروسوفت . 18 أبريل 2012 - عبر وثائق مايكروسوفت.
  14. "Mklink" . مستندات مايكروسوفت . مايكروسوفت . 18 أبريل 2012.
  15. 1 2 "New-Item (PowerShell 3.0)" . وثائق مايكروسوفت . مايكروسوفت . 22 يونيو 2020. إذا كان موقعك على محرك أقراص نظام الملفات، فإن القيم التالية مسموح بها: File[,] Directory[,] Junction[,] HardLink
  16. 1 2 "FileSystemProvider.cs" . PowerShell / مستودع PowerShell . مايكروسوفت . 20 نوفمبر 2021. الأسطر 8139–8234 عبر GitHub .
  17. "دليل مدير نظام OpenVMS، المجلد الأول" (ملف PDF) . VSI. أغسطس 2019. تاريخ الاسترجاع: 23 يناير 2021 .
  18. "rsync(1) - صفحة دليل لينكس" . linux.die.net . مؤرشفة من الأصل بتاريخ 26-01-2026 . تم الاطلاع عليها بتاريخ 31-01-2026 . يعمل هذا الخيار مثل --copy-dest، ولكن يتم ربط الملفات غير المتغيرة بروابط ثابتة من الدليل DIR إلى دليل الوجهة. يجب أن تكون الملفات متطابقة في جميع السمات المحفوظة (مثل الأذونات، وربما الملكية) حتى يتم ربطها معًا.
  19. "رابط وجهة Rsync: ليس مثاليًا لعمليات النشر - كونستانتين كوفشينين" . تم الاطلاع عليه بتاريخ 31 يناير 2026. يسمح لك الوسيط --link-dest بإنشاء روابط صلبة للملفات من وجهة مختلفة إذا لم تتغير، مما يوفر وقت النقل ومساحة القرص.
  20. "النسخ الاحتياطي التزايدي باستخدام rsync والروابط الصلبة | مدونة Digitalis" . digitalis.io . تاريخ الاطلاع: 31 يناير 2026. إذا كان الملف الموجود في /backup/server1Old مطابقًا للملف الموجود على الخادم البعيد، فبدلاً من نسخه، سيقوم rsync بإنشاء رابط صلب من الملف الموجود في /backup/server1Old إلى /backup/server1New.
  21. بريستون، دبليو. كورتيس (2007-01-03). النسخ الاحتياطي والاستعادة: حلول نسخ احتياطي غير مكلفة للأنظمة المفتوحة . دار نشر أورايلي ميديا، ص 189. ISBN  978-0-596-55504-7نسخ التغييرات إلى الدليل الجديد، وإنشاء روابط صلبة حيثما أمكن للملفات التي لم تتغير