Identifikace souboru

Mára

Identifikace souboru
« kdy: 12. 11. 2017, 14:16:25 »
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


MD

Re:Identifikace souboru
« Odpověď #1 kdy: 12. 11. 2017, 14:34:26 »
To záleží na souborovém systému. Pokud je interně založen na tabulce inodů (EXT, NTFS), číslo i-nodu reprezentujícího soubor může být takovým identifikátorem.

https://www.cyberciti.biz/faq/linux-bsd-appleosx-unix-find-file-inode/

Mára

Re:Identifikace souboru
« Odpověď #2 kdy: 12. 11. 2017, 14:48:44 »
Díky za info, zkoušel jsem ho přejmenovat, přesunout do windows a zase zpět a pořád je to číslo stejný, to je super ale je opravdu unikátní? Jak může systém vědět, že již takové číslo přidělil?

Kit

Re:Identifikace souboru
« Odpověď #3 kdy: 12. 11. 2017, 15:02:34 »
Díky za info, zkoušel jsem ho přejmenovat, přesunout do windows a zase zpět a pořád je to číslo stejný, to je super ale je opravdu unikátní? Jak může systém vědět, že již takové číslo přidělil?

i-node je vždy unikátní, protože fyzicky ukazuje na umístění metadat daného souboru na diskovém oddílu.

Re:Identifikace souboru
« Odpověď #4 kdy: 12. 11. 2017, 15:10:53 »
Díky za info, zkoušel jsem ho přejmenovat, přesunout do windows a zase zpět a pořád je to číslo stejný, to je super ale je opravdu unikátní? Jak může systém vědět, že již takové číslo přidělil?
Nevím, co znamená „přesunout do Windows“, ale pokud jste ten soubor přesunul do jiného souborového systému, číslo i-node se změnilo. I-node je identifikátor souboru v jednom souborovém systému (typicky na jednom oddílu, ale třeba btrfs to má složitější).

Mimochodem, spousta programů se chová tak, že když mají něco zapsat do souboru, vytvoří nový soubor, do něj zapíšou data, a pak jej přejmenují na jméno původního souboru. Takže na disku budete mít soubor se stejným názvem, ale i-node bude mít jiný.

Bylo by lepší, kdybyste napsal, co se pokoušíte řešit.


Mára

Re:Identifikace souboru
« Odpověď #5 kdy: 12. 11. 2017, 15:14:28 »
Zkoušel jsem to vytvořit na dalších x serverech a při stejném názvu je to číslo stený. Super, potřebuji ale slyšet to "ALE..."
Škoda, že to nefunguje i pro adresáře :( Zkoušel jsem ls -i /dir1/dir2 ale vypíše to hromadně soubory uvnitř toho adresáře. Myslel jsem, že v linuxu jsou všechno soubory.

n

Re:Identifikace souboru
« Odpověď #6 kdy: 12. 11. 2017, 15:32:40 »
To ale je, ze to neni pravda...
$ ls -i test
69923469 test
$ mv test /Volumes/Transcend/
$ mv /Volumes/Transcend/test .
$ ls -i test
69923489 test

Bez toho, abys nam prozradil to sladke tajemstvi o co ti vlastne jde, ti asi tezko pomuzeme vic.

Pavouk106

  • *****
  • 2 395
    • Zobrazit profil
    • Můj blog
    • E-mail
Re:Identifikace souboru
« Odpověď #7 kdy: 12. 11. 2017, 15:37:05 »
Jedině mít jako součást souboru vlastní identifikátor. i-node je sice fajn, ale jen dokud se ten soubor někam nepřesune (na stejný oddíl ale jiné místo, na jiný oddíl, na jiné médium, do jiného PC...). Pokud chceš jednoznačnou identifikaci souboru po libovolných operacích s ním, musí to být uloženo v něm.

Jenda

Re:Identifikace souboru
« Odpověď #8 kdy: 12. 11. 2017, 15:41:08 »
Škoda, že to nefunguje i pro adresáře :( Zkoušel jsem ls -i /dir1/dir2 ale vypíše to hromadně soubory uvnitř toho adresáře. Myslel jsem, že v linuxu jsou všechno soubory.
Vždyť jo, akorát ls si domyslí, že chceš obsah adresáře, nikoli přímo ten adresář (je to uživatelsky přivětivější, adresář potřebuju vypsat fakt málokdy). Přepíná se to parametrem -d.

Mára

Re:Identifikace souboru
« Odpověď #9 kdy: 12. 11. 2017, 15:51:07 »
Pokud chceš jednoznačnou identifikaci souboru po libovolných operacích s ním, musí to být uloženo v něm.
To jako že mám do každého souboru třeba na první řádek uložit nějaké unikátní číslo které pak budu načítat? Neexistuje nějaký rozšířený atribut do kterého by se to dalo uložit?

Mára

Re:Identifikace souboru
« Odpověď #10 kdy: 12. 11. 2017, 15:52:37 »
Bez toho, abys nam prozradil to sladke tajemstvi o co ti vlastne jde, ti asi tezko pomuzeme vic.
Jaké tajemství, potřebuji navázat nějaké akce pro daný soubor a název souboru nic neřeší, jelikož jde přejmenovat.

Mára

Re:Identifikace souboru
« Odpověď #11 kdy: 12. 11. 2017, 15:53:58 »
Škoda, že to nefunguje i pro adresáře :( Zkoušel jsem ls -i /dir1/dir2 ale vypíše to hromadně soubory uvnitř toho adresáře. Myslel jsem, že v linuxu jsou všechno soubory.
Vždyť jo, akorát ls si domyslí, že chceš obsah adresáře, nikoli přímo ten adresář (je to uživatelsky přivětivější, adresář potřebuju vypsat fakt málokdy). Přepíná se to parametrem -d.
Tak to je jiná ;)

Kit

Re:Identifikace souboru
« Odpověď #12 kdy: 12. 11. 2017, 16:00:00 »
Pokud chceš jednoznačnou identifikaci souboru po libovolných operacích s ním, musí to být uloženo v něm.
To jako že mám do každého souboru třeba na první řádek uložit nějaké unikátní číslo které pak budu načítat? Neexistuje nějaký rozšířený atribut do kterého by se to dalo uložit?

Rozšířené atributy můžeš používat a můžeš podle nich i filtrovat, ale každý souborový systém je nemá. Pokud takový soubor přesuneš třeba na FAT a zpět, tak obsah rozšířených atributů zmizí.

Velmi často se tohle řeší druhou či třetí příponou souboru. Je to vidět, dá se podle toho hledat, neztrácí se to a je to úsporné.

Kit

Re:Identifikace souboru
« Odpověď #13 kdy: 12. 11. 2017, 16:02:50 »
Bez toho, abys nam prozradil to sladke tajemstvi o co ti vlastne jde, ti asi tezko pomuzeme vic.
Jaké tajemství, potřebuji navázat nějaké akce pro daný soubor a název souboru nic neřeší, jelikož jde přejmenovat.

V tom případě budeš potřebovat řešení klient-server.

Co kdybys použil nějakou databázi?

Mára

Re:Identifikace souboru
« Odpověď #14 kdy: 12. 11. 2017, 16:06:56 »
Pokud chceš jednoznačnou identifikaci souboru po libovolných operacích s ním, musí to být uloženo v něm.
To jako že mám do každého souboru třeba na první řádek uložit nějaké unikátní číslo které pak budu načítat? Neexistuje nějaký rozšířený atribut do kterého by se to dalo uložit?

Rozšířené atributy můžeš používat a můžeš podle nich i filtrovat, ale každý souborový systém je nemá. Pokud takový soubor přesuneš třeba na FAT a zpět, tak obsah rozšířených atributů zmizí.

Velmi často se tohle řeší druhou či třetí příponou souboru. Je to vidět, dá se podle toho hledat, neztrácí se to a je to úsporné.
Rozšířené atributy bych vyzkoušel ale nevím co přesně hledat?