Tipik bir Unix dosya sisteminde, genel olarak inode temelli bir dosyayı taşımak yapısal olarak imkansızdır. Bunun nedeni, bir dosyayı yeniden adlandırmak, dizin girişini, onu içeren dizinden kaldırmak ve başka bir yerde bir dizin oluşturmak anlamına gelir. Ancak inode, dizin girişine bir işaretçi içermez, yalnızca dosya meta verilerini (zaman damgaları, izinler, vb.) Ve dosya içeriğini (işaretçiler) içerir.
Birden çok sabit bağlantı içeren bir dosya için, bunlardan hangilerini yeniden adlandırırsınız? İnode yeterli bilgi değil.
Bir dizin için, bazı dosya sistemlerinde, yalnızca inode verildiğinde işlem yapmak mümkün olacaktır:
- Kesinlikle inode'dan erişilebilen dizinin içeriğini okuyun.
- İçin dizin girişini bulun
..
. Bu üst dizine işaret eder.
- Üst dizinde, doğru inode numarasına sahip bir dizin girişi arayın.
Ancak bu birkaç varsayım yapar:
- Aynı inode için birden fazla giriş varsa ne olur? Aslında, bu bir sorun değil: çoğu unix varyantı dizinlere açık sabit bağlantıları yasakladığı için uygulamada neredeyse hiç olmayacak.
- Does
..
ilk etapta mevcut? Bu, dosya sistemi türüne bağlıdır. Bazı dosya sistemlerinde açık bir giriş vardır ..
; diğerleri için bu girdiler dosya sistemi sürücüsü tarafından taklit edilir. Eğer ..
yoksa, bu yaklaşım temel olarak imkansızdır.
- Dosya sistemi
..
bağlantılar içeriyor olsa bile, belirgin olmayabilecek başka bir engel var: adım 1 çekirdek içinde mümkün olabilir, ancak bunun için bir arayüz yok. Birçok unix varyantı, bir dosyanın inode'u yoluyla açılmasına izin veren hiçbir arabirime sahip değildir, çünkü bu izinleri atlar. Örneğin, izinleri rwxr-xr-x
olan bir dizinde bulunan rwx------
(yani yalnızca sahibinin erişebildiği ) izinlere sahip bir dosya (örneğin, dünya tarafından okunabilir) , dizin sahibi dışında kimseye erişemez. Bu yalnızca inode'dan belirlenemez - dosyaya başka bir sabit bağlantı üzerinden erişilebilir!
Sonuçta, hayır, sadece inode verilen bir dosya ile yeniden adlandırma da dahil olmak üzere hiçbir şey yapmak mümkün değildir. Dosya için bir yol olması gerekir.
İnode verildiğinde bir dosya üzerinde işlem yapmanın tek pratik yolu, önce bir yol bulmak, örneğin ile find -inum
hareket etmektir. Bu, dosyanın bir bağlama noktası tarafından gölgelendiği durumda size yardımcı olmaz. Bir bağlama noktasının gölgesindeki dosyalara erişmenin taşınabilir bir yolu yoktur; Linux'ta, keşfettiğiniz gibi, bir bağlama aparatı kullanabilirsiniz.