Portál AbcLinuxu, 8. května 2025 06:36

Dotaz: Jde zjistit skutečný datum a čas vytvoření souboru a adresáře ?

28.1.2016 02:48 Marek
Jde zjistit skutečný datum a čas vytvoření souboru a adresáře ?
Přečteno: 2617×
Odpovědět | Admin
Zdravím, potřebuji poradit, ale nejdříve se zeptám. Existuje možnost získat ze souboru i z adresáře skutečný datum a čas vytvoření ? Pokud ano, existuje způsob jak je změnit ? Jedná se mi opravdu o datum a čas vytvoření, ne o poslední úpravu. Díky
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

28.1.2016 07:32 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Jde zjistit skutečný datum a čas vytvoření souboru a adresáře ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Obecně se taková informace ve filesystému neudržuje.
AraxoN avatar 28.1.2016 07:54 AraxoN | skóre: 47 | blog: slon_v_porcelane | Košice
Rozbalit Rozbalit vše Re: Jde zjistit skutečný datum a čas vytvoření souboru a adresáře ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Niektoré súborové systémy to majú. Obvykle sa to dá nájsť na wikipédii, napr. Ext4, rámček vpravo, citujem:
Dates recorded     modification (mtime), attribute modification (ctime), access (atime), delete (dtime), create (crtime)
28.1.2016 10:06 ikar
Rozbalit Rozbalit vše Re: Jde zjistit skutečný datum a čas vytvoření souboru a adresáře ?
ten Ext4 asi jen teoreticky:
$ stat -c %w filename
-
Nehledal jsem to nějak extensivně, ale nenašel jsem způsob, jak ext4 donutit, aby birthtime ukládal. Man mount i man mke2fs mlčí.

28.1.2016 10:16 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Jde zjistit skutečný datum a čas vytvoření souboru a adresáře ?
Jedna věc je, jestli filesystém (jako formát uložení dat na zařízení) má příslušnou položku, druhá jestli jádro poskytuje rozhraní pro přístup k této položce, a třetí jestli userspace utility toto rozhraní umějí využít. Aby to "fungovalo" z pohledu uživatele, potřebujete všechny tři.
AraxoN avatar 28.1.2016 13:00 AraxoN | skóre: 47 | blog: slon_v_porcelane | Košice
Rozbalit Rozbalit vše Re: Jde zjistit skutečný datum a čas vytvoření souboru a adresáře ?
hmm, áno... Niečo som našiel v tom zmysle, že linuxové jadro to nevypĺňa (ignoruje) a malo by to náväznosti na glibc a ďalšie veci, takže to nie je jednoduché a teda nikomu sa do toho nechce ... link

Takže filesystém má na dátum a čas vytvorenia pripravené miesto, ale linuxové jadro tam žiaden dátum a čas nezapisuje.
28.1.2016 09:43 ikar
Rozbalit Rozbalit vše Re: Jde zjistit skutečný datum a čas vytvoření souboru a adresáře ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Co myslíte tím "skutečným časem vytvoření" souboru? U souborů, u kterých to má smysl se to řeší např. informací v EXIFu nebo třeba datem revize v souboru z textového procesoru.
pavlix avatar 28.1.2016 09:43 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Jde zjistit skutečný datum a čas vytvoření souboru a adresáře ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Existuje možnost získat ze souboru i z adresáře skutečný datum a čas vytvoření?
Ta otázka trochu zavání. Jsou to pořád jenom metadata. Člověk si nemůže být jistý, že získal údaj odpovídající realitě.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
28.1.2016 09:57 ikar
Rozbalit Rozbalit vše Re: Jde zjistit skutečný datum a čas vytvoření souboru a adresáře ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Hlavně by měl Marek říci, o co mu přesně jde, jestli o birthtime jako v BSD, který se třeba nedá měnit, nebo o něco jako creation time ve windows, kde se měnit dá. Pokud neřekne o jaké soubory na jakém OS a filesystému mu vlastně jde, tak mu asi těžko někdo může rozumně odpovědět (otime, crtime, ... ).
28.1.2016 10:14 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Jde zjistit skutečný datum a čas vytvoření souboru a adresáře ?

Měnit se dá vždy… i kdyby jen ruční editací obrazu filesystému na zařízení.

Ale těch nejasností je IMHO víc, např. by si bylo dobré ujasnit, jak by se takový "creation time" měl chovat třeba při

  • přejmenování souboru
  • přesunu v rámci filesystému
  • přesunu na jiný filesystém
  • kopírování
  • cp -a
  • zálohování a obnovení ze zálohy
28.1.2016 11:45 Marek
Rozbalit Rozbalit vše Re: Jde zjistit skutečný datum a čas vytvoření souboru a adresáře ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Uf, tak to je hodně špatný :( čekal jsem spíše jednu odpověď typu ano ano, ale tohle ne. Rychle budu muset vymyslet jiné řešení :( Každopádně všem děkuji za info.
28.1.2016 14:42 Filip Jirsák
Rozbalit Rozbalit vše Re: Jde zjistit skutečný datum a čas vytvoření souboru a adresáře ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Záleží na tom, k čemu to potřebujete. Pokud vám jde o nějaké prokazování existence dat, používají se k tomu časová razítka – spočítáte hash souboru, ke kterému autorita časových razítek přidá aktuální čas a výsledek elektronicky podepíše. Tím jste pak schopen prokázat, že daný soubor existoval nejpozději v okamžiku připojení časového razítka.
28.1.2016 16:55 Marek
Rozbalit Rozbalit vše Re: Jde zjistit skutečný datum a čas vytvoření souboru a adresáře ?
Chtěl jsem to využít pro nějaký uživatelem definovaný sort ve výpise seznamu, jelikož mám velmi omezené možnosti jak toho dosáhnout, napadlo mě, že bych vypsal položky (soubory i adresáře) a pokud by uživatel chtěl změnit pozici položek v tom seznamu, tak by script zařídil to, že by změnil datum a čas požadované položky (nastavil by datum a čas dříve než položka před kterou se to má zobrazit). Za normálních okolností toho lze docílit mnoha způsoby ale pokud musím zachovat názvy souborů a adresářů je to docela problém. Když to shrnu, tak script pomocí echo vypisuje názvy pod sebe a potřebuji je vypsat v různém pořadí (bez úpravy nazvů). Třeba někoho něco napadne, ale nevěřím tomu, ten datum a čas bylo jediné co by šlo použít.
28.1.2016 17:14 Filip Jirsák
Rozbalit Rozbalit vše Re: Jde zjistit skutečný datum a čas vytvoření souboru a adresáře ?
Většina souborových systémů podporuje rozšířené atributy – číst a nastavovat je můžete pomocí programů getfattr/setfattr a samozřejmě pro to existuje API. Do těch si můžete zapsat, co se vám zlíbí. Takže si tam můžete zapsat třeba pořadí souboru, nebo alternativní název, který se má použít pro řazení. Ale záleží na tom, jak se s těmi soubory bude pracovat. Některé programy editují soubory tak, že vytvoří nový soubor, do něj zapíšou data, původní soubor smažou a nový přejmenují na jméno toho starého. Takže vznikne nový soubor, který z toho původního samozřejmě nepřevezme ty rozšířené atributy, ale ani nic jiného – jen název a oprávnění. Ale s tím byste měl problém i u jakéhokoli jiné systému ukládání dat k souborům. Pak už by zbyla jenom jedna možnost – vytvořit si tam nějaký skrytý soubor, a do něj si podle názvů souborů zapisovat pořadí. Pak už se s těmi soubory může dělat cokoli, dokud jim zůstane název, bude to fungovat. Pokud tedy uživatelé soubory nepřejmenovávají a nechtějí, aby soubor zůstal zařazen na původním místě.
28.1.2016 18:37 Marek
Rozbalit Rozbalit vše Re: Jde zjistit skutečný datum a čas vytvoření souboru a adresáře ?
Není to tak dlouho co jsem se hrál 'attr' což bude asi něco obdobného, ale na něčem mi to vyhořelo. Otázka ale bude, jak se na to bude tvářit 'tar' případná editace ve Windows, zda se nastavené údaje neztratí. Každopádně na to mrknu. Děkuji za info a tip.
28.1.2016 18:44 Filip Jirsák
Rozbalit Rozbalit vše Re: Jde zjistit skutečný datum a čas vytvoření souboru a adresáře ?
tar umí rozšířené atributy zachovat. Samba je také zachová, pokud „editace ve Windows znamená přístup přes Sambu. Ale samozřejmě to závisí na tom, aby ta Windowsovská aplikace nepoužívala tu taktiku s vytvořením nového souboru a přejmenováním na původní jméno.
28.1.2016 17:39 nobody
Rozbalit Rozbalit vše Re: Jde zjistit skutečný datum a čas vytvoření souboru a adresáře ?
jestli to dobre chapu, tak te nezajima cas vytvoreni, ale cas modifikace, ten muzes menit (bez zmeny souboru) ve skriptu pomoci touch, cas na ktery to budes menit nactes za pomoci stat ze souboru pred (nebo za) ktery to budes chtit umistit, s tim ze prictes nebo odectes milisekundu nez to tim touch nastavis...
28.1.2016 17:41 nobody
Rozbalit Rozbalit vše Re: Jde zjistit skutečný datum a čas vytvoření souboru a adresáře ?
jeste.. pokud by melo jit o nedestruktivni, tak ten adresar bindnout nekam jinam, nad tim pripojit aufs/overlayfs a po ukonceni zmeny zahodit, nebo je drzet pro kazdeho uzivatele zvlast
28.1.2016 18:00 Filip Jirsák
Rozbalit Rozbalit vše Re: Jde zjistit skutečný datum a čas vytvoření souboru a adresáře ?
Já jsem to pochopil tak, že uživatelé soubory modifikují, a změna souboru by jej zařadila na konec seznamu.
28.1.2016 18:32 Marek
Rozbalit Rozbalit vše Re: Jde zjistit skutečný datum a čas vytvoření souboru a adresáře ?
Ne, zajímal mě čas vytvoření, čas modifikace mi je v tomto případě k ničemu, jelikož se se soubory neustále pracuje.
28.1.2016 20:38 nobody
Rozbalit Rozbalit vše Re: Jde zjistit skutečný datum a čas vytvoření souboru a adresáře ?
tak pokud nepotrebujes udrzovat atime (cast posledniho pristupu/cteni), muzes mountnout zarizeni s parametrem noatime, pak budes mit atime nemenenej od crtime (cas vytvoreni)... viz:
sudo debugfs -R "stat /cesta/soubor" /dev/zarizeni
ve skriptu pak muzes cist atime pomoci -u a detailne pomoci --full-time (nebo jinej format jak budes chtit)
ls -l -u --full-time

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.