ההבדל בין hard link ל- symbolic link

כדי להבין טוב יותר את ההבדלים בין שני המושגים צריך להבין מושג אחד נוסף שנקרא inode. במערכות קבצים ביוניקס מבדילים בין שני חלקים:

  • חלק המידע (inode) המכיל מיפוי מלא היכן המידע של הקובץ שמור בדיסק, מערכת ההרשאות (permision) של הקובץ ועוד…
  • חלק של שם הקובץ בו שמור שם הקובץ ומספר ה- inode שלו. כלומר שם הקובץ משמש כמצביע לנתוני הקובץ עצמו (באמצעות ה- inode).

דוגמא:

בפקודה ביקשתי להציג רשימה של קבצים (il-) כולל פירוט על inode. ניתן לראות שמספר ה- inode של הקובץ filename הוא 1058765 ומספר זה משמש כמצביע לנתוני הקובץ עצמו.


symbolic link:
ממש כמו בחלונות: משמש כקיצור דרך. symbolic link (או בקיצור sym link) אינו מצביע ישירות על אזור המידע בו מאוחסן הקובץ כי אם על שם קובץ אחר בו מאוחסנים נתוני ה- inode. לפיכך ברור שמחיקת קיצור הדרך לא מוחקת את המידע שבדיסק. במידה ונמחק את קובץ המידע, הקישור הסימבולי לא יצביע יותר על קובץ אמיתי. מצב זה נקרא orphans.

יצירת symbolic link:

הערות:

  • ניתן לשים לב שלקובץ filename ולקובץ example1 יש מספר inode שונה, כלומר הם מצביעים על נתוני מידע שונים.
  • האות l ב- lrwxrwxrwx מציינת שמדובר בקישור.
  • בגלל באג בוורדפרס הסימול <- הוחלף ב – ;gt&-

hard link:

קישור hard link הוא קישור נוסף ל- inode של הקובץ.
דוגמא:

הערות:

  • ניתן לשים לב שהקובץ example2 מקבל את אותו מספר inode: 1058765 כמו הקובץ filename .
  • שימו לב למספר 2 ב: rw-r–r– 2. המספר מציין שיש שני hard links המצביעים על אותו ה- inode, כך שאם נמחק את הקובץ filename הנתונים לא ימחקו מהדיסק (כי עדיין קיים hard link מהקובץ example2 ורק אם נמחק גם את הקובץ example2 נתוני ה- inode ימחקו).
  • האות l ב- lrwxrwxrwx מציינת שמדובר בקישור.
  • בגלל באג בוורדפרס הסימול <- הוחלף ב – ;gt&-

[ratings]

My Signature
פורסם בקטגוריה לינוקס ותוכנה חופשית. אפשר להגיע לכאן עם קישור ישיר.

9 תגובות בנושא ההבדל בין hard link ל- symbolic link

  1. מאת ליאור קפלן‏:

    היי,

    כמה נקודות ראויות לציון:
    1. גודל קובץ symlink הוא כאורך הטקסט שאליו הוא מצביע, וזאת מאחר והקובץ בעצם מכיל את הנתיב לקובץ שאליו הוא מצביע. כלומר קובץ המכילה הצבעה ל-kaplan יהיה בגודל 6 בתים. בעוד שקובץ שמכיל הפניה ל-/kaplan יהיה בגודל 7 בתים.

    2. ההרשאות של symlink הן תמיד lrwxrwxrwx. ההרשאות תכלס נקבעות לפי הקובץ הרגיל שאליו הוא מפנה.

    3. כדאי לציין כי המונה של ה-hardlink קיים בכל קובץ, ומחיקת קובץ מתרחשת כאשר המונה מגיע ל-0.

    4. אם זה לא היה ברור, ספריות הן בסה"כ מיפוי של inode לשם קריא עבורנו.

    5. בהקצאת קבצים חדשים, הקובץ תמיד יקבל את מספר ה-inode הנמוך ביותר הפנוי.

  2. מאת ארתיום‏:

    כמה הערות קטנות:

    לא ניתן ליצור hardlink בין מחיצות שונות (וזה די ברור בגלל המבנה של hardlink).
    אבל symlink תמיד מצביע לכל מקום.

    בנוסף תמיד רצוי להשתמש ב-symlink יחסי למשל aaa/bbb.txt/…
    בצורה כזו ניתן להזיז ספריות בקלות בלי ש-sym links ייפגעו.

    ד"א לא מזמן גיליתי שב-Vista יש שיפור משמעותי שלא היה בגרסאות קודמות, הם סוף סוף מימשו hard/soft links

    🙂

  3. מאת אריאל‏:

    אולי תאיר את עינינו בעניין המספר המופיע אחרי קטע ההרשאות, והמספר המופיע מיד אחרי הפקודה ls, בשורה "total "N?

    1. האם שניהם סופרים hardlinkים?

    הערה: מונה ה-hardlink המופיע ליד ספריות (מה שמצוין ב-d) מציין את מספר הקבצים והספריות (כולל הספריות . ו-.. וכולל הקבצים הנסתרים) ברמה הראשונה תחת ספריה זו.

  4. מאת שי‏:

    הלוואי שבחלונות זה היה ככה (כמו לינקים סימבוליים) בחלונות אין לינקים יש רק קיצורי דרך דפוקים.
    ההבדל שקיצורי דרך זה רק בשביל לקצר לבני אדם את הדרך לתוכנה\מסמך בעוד הלינקים מקשרים קובץ מסויים לקובץ לכל דבר ועניין.

  5. מאת תומר‏:

    שי: אולי תופתע, אבל בחלונות (NTFS) ניתן לממש קישורים גם ללא "קיצורי דרך", ואפילו לעשות mount למחיצות אחרות באמצעות mountvol (או subst שקיים אבל לא נתמך מזה שנים).

    "קיצורי דרך" של ווינדוס קיימים גם בלינוקס. כל אותם הקבצים עם הסיומת desktop אינם אלא קיצורי דרך זהים לאלו שקיימים בווינדוס, כולל קביעת הצלמית והתיאור.

  6. מאת מיטל‏:

    סחטיין על הצבע שבחרת להדגשה! 😉
    (אחלה הסבר!)

  7. מאת ilanshavit‏:

    אתייחס למספר נקודות שהחברים העלו:
    ליאור: את הנקודות 1 ו- 5 לא הכרתי, תודה.
    ארתיום: אף נקודה לא הכרתי 😉
    אריאל: אני בודק את מה ששאלת…
    מיטל: תודה על המחמאה. בכל אופן כנראה שלא צריך להתאמץ אלא רק לבחור בצבע המתאים 😉

  8. מאת אנה‏:

    היי שאלה קצת טיפשית אולי 🙂
    מההסבר שלך הבנתי שגם ל- symbolic link יש inode שמייצג אותו,
    אבל מדוע? אם זה רק קישור לשם קובץ אחר בו מאוחסנים נתוני ה- inode האמיתי?
    תודה!

  9. מאת גולן‏:

    תודה על הסבר קצר וממצה בעברית

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *