קבצים, תיקיות ונתיבים

מה באמת קורה מאחורי מערכת הקבצים: שמות, תיקיות, נתיבים מוחלטים ויחסיים, ".", "..", נרמול נתיבים, inode, hard links וקבצים מוסתרים.

פורסם 2026-07-20. תגיות: File Systems, Operating Systems, Data.

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

זהו תיאור נוח, אך מאחורי הקלעים מערכת הקבצים פועלת באופן מעט שונה ומעניין הרבה יותר.

קובץ הוא לא השם שלו

נניח שיש לנו קובץ בשם:

report.pdf

קל לחשוב שהשם הוא חלק בלתי נפרד מהקובץ. בפועל, השם הוא בדרך כלל רק הדרך שבה תיקייה מסוימת מפנה אל הקובץ.

כאשר משנים את השם:

report.pdf

ל:

final-report.pdf

תוכן הקובץ לא חייב להשתנות כלל. ברוב המקרים מערכת הקבצים רק מעדכנת את הרשומה שמקשרת בין השם לבין הקובץ.

גם שינוי הסיומת אינו ממיר את הקובץ. אם נשנה:

photo.png

ל:

photo.pdf

התוכן הפנימי עדיין עשוי להיות תמונת PNG. הסיומת היא חלק מהשם, לא מנגנון המרה.

תוכנות יכולות לזהות את סוג הקובץ באמצעות הסיומת, אבל גם באמצעות חתימת הקובץ, מבנה התוכן או MIME type.

מהי תיקייה?

תיקייה אינה בהכרח קופסה פיזית שבתוכה נמצאים הקבצים.

אפשר לחשוב עליה כעל טבלה שמקשרת שמות לאובייקטים במערכת הקבצים:

report.pdf  → קובץ מסוים
photo.jpg   → קובץ אחר
Projects    → תיקייה אחרת

כאשר אנחנו פותחים תיקייה, מערכת ההפעלה מציגה לנו את השמות שנרשמו בה ואת האובייקטים שאליהם הם מפנים.

מהו נתיב?

נתיב הוא הוראת ניווט שמסבירה למערכת כיצד להגיע לקובץ או לתיקייה.

לדוגמה:

/Users/evyatar/Documents/report.pdf

המערכת קוראת את הנתיב שלב אחר שלב:

/
└── Users
    └── evyatar
        └── Documents
            └── report.pdf

הנתיב אינו הקובץ עצמו. הוא הדרך להגיע אליו.

אם מעבירים את הקובץ מ:

/Users/evyatar/Documents/report.pdf

אל:

/Users/evyatar/Desktop/report.pdf

הדבר היחיד שבוודאות השתנה הוא הנתיב.

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

בהעברה בין כוננים או מערכות קבצים שונות, בדרך כלל צריך להעתיק את התוכן ולאחר מכן למחוק את המקור.

נתיב מוחלט ונתיב יחסי

נתיב מוחלט מתחיל מנקודת השורש של מערכת הקבצים.

ב-Linux וב-macOS:

/Users/evyatar/Documents/report.pdf

ב-Windows:

C:\Users\Evyatar\Documents\report.pdf

נתיב יחסי מחושב ביחס לתיקייה שבה אנחנו נמצאים כרגע.

אם התיקייה הנוכחית היא:

/Users/evyatar

אז הנתיב היחסי:

Documents/report.pdf

מוביל לאותו קובץ.

המשמעות של `.` ושל `..`

בנתיבים יחסיים קיימים שני סימונים חשובים.

`.` פירושו התיקייה הנוכחית.

`..` פירושו תיקיית האב, כלומר תיקייה אחת למעלה.

אם אנחנו נמצאים כאן:

/Users/evyatar/Documents

הנתיב:

./report.pdf

מוביל אל:

/Users/evyatar/Documents/report.pdf

והנתיב:

../Desktop/photo.jpg

עולה מ-`Documents` אל `evyatar`, נכנס אל `Desktop`, ומגיע אל:

/Users/evyatar/Desktop/photo.jpg

נרמול נתיבים

לעיתים נתיב מכיל חלקים מיותרים:

/Users/evyatar/Documents/Projects/../report.pdf

הכניסה אל `Projects` והיציאה ממנה באמצעות `..` מבטלות זו את זו, ולכן הנתיב מתנרמל ל:

/Users/evyatar/Documents/report.pdf

באופן דומה:

/Users/evyatar/./Documents/report.pdf

זהה ל:

/Users/evyatar/Documents/report.pdf

חשוב לעקוב אחר הנתיב לפי הסדר. לדוגמה:

../docs/../images

אינו זהה ל:

../../images

במקרה הראשון אנחנו עולים תיקייה אחת, נכנסים אל `docs`, ואז יוצאים ממנה. הכניסה והיציאה מ-`docs` מתבטלות.

במקרה השני אנחנו עולים בפועל שתי תיקיות.

inode ו-Hard Links

במערכות Unix-like, כגון Linux ו-macOS, קובץ מיוצג באמצעות מבנה פנימי שנקרא בדרך כלל `inode`.

ה-inode שומר מידע כגון:

שם הקובץ בדרך כלל אינו נשמר בתוך ה-inode. במקום זאת, התיקייה מקשרת בין שם לבין inode:

report.txt → inode 48291

אפשר ליצור שני שמות שונים שמפנים לאותו inode:

report.txt → inode 48291
backup.txt → inode 48291

זה נקרא `Hard Link`.

אלה אינם שני עותקים עצמאיים. שני השמות מפנים לאותו תוכן. לכן שינוי הקובץ דרך `report.txt` ייראה גם כאשר פותחים את `backup.txt`.

אם מוחקים את `report.txt`, התוכן לא נמחק כל עוד `backup.txt` עדיין מפנה אליו.

רק כאשר לא נשארים קישורים לקובץ ואף תהליך אינו מחזיק אותו פתוח, מערכת ההפעלה יכולה לשחרר את המקום שבו נשמר התוכן.

קבצים מוסתרים

ב-Linux וב-macOS, קובץ ששמו מתחיל בנקודה מוצג בדרך כלל כמוסתר:

.env
.gitignore
.profile

הנקודה היא פשוט חלק משם הקובץ. היא אינה אומרת שהקובץ הוא בהכרח קובץ מערכת או שאסור למחוק אותו.

כלים רבים פשוט בוחרים שלא להציג קבצים כאלה כברירת מחדל.

סיכום

ההבחנה בין קובץ, שם, תיקייה ונתיב עוזרת להבין פעולות רבות שנראות בתחילה מסתוריות:

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