PDA

Pogčedajte punu verziju : Dir content modification time, za linux


ivanhoe
13. 03. 2009., 12:29
Da li u linuxu (ext3) postoji neki flag na osnovu koga mogu da proverim da li su u direktorijumu menjani fajlovi, bez da gledam jedan po jedan fajl ?

cvele
13. 03. 2009., 18:12
zar nemozes da pogledas modified time na parent folderu ?

ivanhoe
13. 03. 2009., 20:58
ne menja se, koliko vidim


EDIT: eh, u pravu si, ipak se izgleda menja ako se promeni fajl, ja sam uradio samo touch fajla, i onda se nije promenilo.. ok onda problem solved...

nn.nn
13. 03. 2009., 23:34
^ Neće baš biti tako:

$ mount | grep ext3
/dev/sda3 on / type ext3 (rw)
$ mkdir dir && touch dir/file && stat dir && sleep 5
File: `dir'
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 803h/2051d Inode: 12242987 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 1000/ nn) Gid: ( 1000/ nn)
Access: 2009-03-13 23:07:06.000000000 +0100
Modify: 2009-03-13 23:07:06.000000000 +0100
Change: 2009-03-13 23:07:06.000000000 +0100
$ cat > dir/file
test
$ stat dir
File: `dir'
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 803h/2051d Inode: 12242987 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 1000/ nn) Gid: ( 1000/ nn)
Access: 2009-03-13 23:07:16.000000000 +0100
Modify: 2009-03-13 23:07:06.000000000 +0100
Change: 2009-03-13 23:07:06.000000000 +0100
$ stat dir/file
File: `dir/file'
Size: 5 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 10666088 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ nn) Gid: ( 1000/ nn)
Access: 2009-03-13 23:07:06.000000000 +0100
Modify: 2009-03-13 23:07:18.000000000 +0100
Change: 2009-03-13 23:07:18.000000000 +0100


Koliko znam, ne postoji flag kakav ti tražiš.

ivanhoe
14. 03. 2009., 01:01
zanimljivo, gledao sam na dva servera i ako se uradi mv test dir/ ili se iz vi izmeni neki fajl unutar dir/ onda stat dir/ pokazuje promenu fajla... koji FS imas?

Extra mi je bitno da imam resenje koje ce raditi na svim linuxolikim boxovima jer skripta treba da se slobodno distribuira, necu imati nikakvu kontrolu nad okruzenjem...

nn.nn
14. 03. 2009., 02:02
Evo kako ja to razumem: direktorijum je fajl koji sadrži listu drugih fajlova. Promena sadržaja direktorijuma znači menjanje te liste i tako se menja mtime direktorijuma. Ako upišeš u dir (mv test dir/), onda si promenio njegov sadržaj. Komanda "vi fiile" pravi privremeni fajl ".file.swp", pa kad završiš snimi to kao "file" (drugi inode) i tako u suštini menjaš sadržaj direktorijuma. Ako samo menjaš sadržaj fajla u direktorijumu, nisi promenio sadržaj direktorijuma, jer je fajl ostao tu gde jeste, lista fajlova se nije promenila (inode fajla je isti). Inače, fs je ext3.

robi-bobi
14. 03. 2009., 13:31
kod mene radi modified ukoliko promenim neki fajl unutar foldera

ALI
ukoliko promenim neki fajl u nekom podfolderu foldera onda modified time ovog prvog foldera se ne menja

ne znam da li ti ovo treba kao feature ...

nn.nn
14. 03. 2009., 17:41
^ Sad sam već postao znatiželjan. Kako menjaš fajl?

robi-bobi
16. 03. 2009., 11:24
odoh da double check :)
....


$ stat dpt
Modify: 2009-03-16 12:19:26.000000000 +0200
$ vi dpt/one
$ stat dpt
Modify: 2009-03-16 12:19:49.000000000 +0200

(ostavljen samo deo stat outputa)

ubuntu, 2.6.24-23-generic

nn.nn
16. 03. 2009., 12:11
^ Kao što rekoh, kad pokreneš vi, on napravi dtp/.one.swp, što je samo po sebi dovoljno da promeni timestamp na dtp direktorijumu, čak i ako odustaneš od snimanja. Pri tome, briše se onaj .swp fajl, pa se opet menja mtime direktorijuma. Dodatno, kad snimiš dtp/one, promeni mu se i inode, pa je to još jedna modifikacija direktorijuma.

Za razliku od vi, cat ne pravi novi fajl (izuzev ako ne postoji), ne menja inode, pa se ne menja ni mtime direktorijuma.

robi-bobi
16. 03. 2009., 14:36
jeste, evo proverio sa cat
u pravu si