Zdravím. Existuje v linuxu ještě nějaká jiná identifikace souboru než jeho název? Hledám nejlépe něco, co se vytvoří při jeho vytvoření a nezmění se po jeho přejmenování. Třeba nějaké UID. Děkuji
Nic takového neexistuje, a je to dáno z podstaty věci. Filename je jedinečný identifikátor pro entitu "souboru", ale už není s to řešit vazbu na skutečná data.
Může dojít k operacím, kdy se mění obsah vs. filename, ale k těm změnám dochází na obou stranách toho řetězu. Na straně "filename" se jedná zejména o přejmenování, ale taky o odlinkování či přelinkování, pokud jde o hardlink.
U změny dat, kromě těch běžných, si dovolím upozornit dvě funkce, které tu vazbu narušují: u windows shadow copy, u jiných filesystémů pak CoW (copy on write).
Tedy vazba mezi filenamem a jeho daty je M:N.
Jedinou možností, kterou máte, je sledovat např. číslo inode, nebo pár dalších údajů, které Vám zvýší jistotu určení, že se díváte stále na stejná data. K tomu můžete přidat digesty (např. SHA-3). Ani jedna z metod však není 100%, může dojít ke změnám, které nic z toho nezmění, i digest může být teoreticky stejný při rozdílných datech.
Nedotknutelnost dat v čase (včetně vazby soubor:data) může řešit např. snapshotování (ZFS).
Zkuste popsat situaci, kterou řešíte, třeba se na ni najde jiné řešení, které bude založené na něčem jiném.