الفرق بين الروابط اللينة والروابط الصلبة في غنو لينكس

نشره طريف في الخميس, 2015/06/11 - 12:11ص

في نظام غنو لينكس هناك أسلوبين مختلفين في إنشاء روابط للملفات، وبالتالي نوعين من الروابط، يسمى الأول soft link أو symbolic ويمكننا ترجمته إلى "رابط مرن" أو ليّن، ويسمّى الآخر hard link أي "رابط صلب".

link in linux

الرابط اللين يعمل بذات أسلوب الاختصارات في ويندوز windows shortcuts، أي هو عبارة عن وصلة صغيرة يقتصر محتواها على المسار الكامل للملف أو المجلد المُحدّد، وأشبّهه بـ "ظل الملف"، فإذا حُذف الأصل يصبح الفرع عديم القيمة (وكأنه لا وجود له). لإنشاء رابط ليّن نستخدم الأداة ln مع الخيار -s.

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

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

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

لنأخذ مثال عمليّ يوضّح الفكرة:

echo "hello" > a
ln a b
ln -s a c

يُنشئ السطر الأول ملفًا جديدًا باسم a، يحتوي على الكلمة "hello".
يُنشئ السطر الثاني رابطًا صلبًا للملف a باسم b.
ينشئ السطر الثالث رابطًا لينًا للملف a باسم c.
وبالتأكيد سيكون الآن محتوى الملفات واحدًا:

cat a ---> hello
cat b ---> hello
cat c ---> hello

لنجرّب التعديل على الملف الأصل a

cat "change" >> a

عند استعراض محتويات الملفات الثلاثة سنجدها متشابهة أيضًا.
الآن لنحذف الملف الأصل a

rm a

الفرق بين الرابط اللين والرابط الصلب سيكون واضحًا عند استدعاء الملفات الثلاثة:

cat a ---> No such file or directory
cat b ---> hello
cat c ---> No such file or directory

هكذا يبدو الملف b وكأنه نسخة من الملف a (لأنه لم يتأثر بحذفه)، إلا أنها "نسخة حيّة" حسّاسة بشكل فوري للتغيرات التي تحصل على محتويات الملف الأصل، ودون أن تتأثر بحذفه.

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