Jak mogę zmienić datę „zmiany” pliku?

23

Jak mogę zmienić datę „zmiany”?

$ touch -t 9901010000 test;stat test
  File: `test'
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: fe01h/65025d    Inode: 11279017    Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/    x)   Gid: ( 1000/    x)
Access: 1999-01-01 00:00:00.000000000 +0100
Modify: 1999-01-01 00:00:00.000000000 +0100
**Change: 2012-04-08 19:26:56.061614473 +0200**
 Birth: -
Someone1234
źródło
3
Ustalanie arbitralne ctimenie jest łatwe. Powiązane pytanie dotyczące SO.
jw013

Odpowiedzi:

23

Nie możesz zmienić czasu w zwykły sposób. Jest tak z założenia: ctime jest zawsze aktualizowany do bieżącego po zmianie któregokolwiek z metadanych pliku i nie ma sposobu narzucenia innego ctime. Aby zmienić czas pliku, wykonaj jedną z następujących czynności:

  • Ustaw czas systemowy na czas, który chcesz nałożyć, następnie dotknij pliku, a następnie zresetuj czas systemowy.
  • Zmodyfikuj jądro, aby dodać interfejs do zmiany ctime.
  • Uzyskaj dostęp do obrazu dysku bezpośrednio (np. Za pomocą debugfs) i przekręć bity na dysku (nie rób tego, gdy system plików jest zamontowany).
Gilles „SO- przestań być zły”
źródło
2
Ustawienie czasu systemowego i chmod działało dla mnie. Zobacz skrypt tutaj: stackoverflow.com/questions/16126992/...
gaoithe
12

Masz odpowiedź na powiązane pytanie SO wskazane przez jw013, dla extX, na odmontowanym dysku :

# Update ctime
debugfs -w -R 'set_inode_field /tmp/foo ctime 201001010101' /dev/sda1

# Drop vm cache so ctime update is reflected
echo 2 > /proc/sys/vm/drop_caches
Coren
źródło
4

Czas pliku jest aktualizowany po zmianie któregokolwiek z metadanych.

$ ls -l x.py
-rw-rw-r--. 1 ignacio ignacio 485 Mar 26  2010 x.py
$ stat -c %z x.py
2010-03-26 11:57:56.237068175 -0400
$ chown ignacio x.py
$ stat -c %z x.py
2012-04-08 15:31:33.682383575 -0400
$ ls -l x.py
-rw-rw-r--. 1 ignacio ignacio 485 Mar 26  2010 x.py
Ignacio Vazquez-Abrams
źródło
ale jak to zmodyfikować bez aktualizacji
Someone1234