2016-11-22 5 views
0

Я ищу способ создания файла со старым ctime в разных файловых системах. На Linux внутр, это достигается за счет использованияИзменение ctime файла под FreeBSD UFS/MacOS X HFS

touch /path/to/file debugfs -w -R 'set_inode_field /path/to/file ctime 201001010101' /dev/sdX echo 3 > /proc/sys/vm/drop_caches

Есть ли какие-либо эквивалент на УФС во FreeBSD? А может быть, даже на MacOSX HFS +?

ответ

1

На FreeBSD, то touch команда с помощью опции -f может работать для этого, например:

touch -t 0510242022.13 file 

установит дату 2005 года, 24 ноября в 20:22:13

Формат [[CC]YY]MMDDhhmm[.SS], из man touch:

-t  Change the access and modification times to the specified time 
      instead of the current time of day. The argument is of the form 
      ``[[CC]YY]MMDDhhmm[.SS]'' where each pair of letters represents 
      the following: 

        CC  The first two digits of the year (the century). 
        YY  The second two digits of the year. If ``YY'' is 
          specified, but ``CC'' is not, a value for ``YY'' 
          between 69 and 99 results in a ``CC'' value of 19. 
          Otherwise, a ``CC'' value of 20 is used. 
        MM  The month of the year, from 01 to 12. 
        DD  the day of the month, from 01 to 31. 
        hh  The hour of the day, from 00 to 23. 
        mm  The minute of the hour, from 00 to 59. 
        SS  The second of the minute, from 00 to 61. 

Для изменения CTIME можно использовать fsdb, вероятно, вам нужно будет загружаться на одиночном режиме, чтобы диск в режиме только для чтения, например:

> fsdb /dev/vtbd0p2 
** /dev/vtbd0p2 (NO WRITE) 
Editing file system `/dev/vtbd0p2' 
Last Mounted on/
current inode: directory 
I=2 MODE=40755 SIZE=1024 
     BTIME=Sep 29 01:45:50 2016 [0 nsec] 
     MTIME=Nov 26 09:47:37 2016 [339135000 nsec] 
     CTIME=Nov 26 09:47:37 2016 [339135000 nsec] 
     ATIME=Nov 26 09:28:38 2016 [679268000 nsec] 
OWNER=root GRP=wheel LINKCNT=20 FLAGS=0 BLKCNT=8 GEN=37b9b524 
fsdb (inum: 2)> 

Оттуда я перейдите в каталог и в следующем выберите его:

fsdb (inum: 2)> cd /usr/home/nbari 

И

fsdb (inum: 644816)> lookup file 

Вы можете ввести active для двойной проверки является файл, например:

fsdb (inum: 642101)> active 
current inode: regular file 
I=642101 MODE=100644 SIZE=29 
     BTIME=Oct 24 20:22:13 2005 [0 nsec] 
     MTIME=Jan 1 12:12:12 2012 [0 nsec] 
     CTIME=Jan 1 12:12:12 2012 [0 nsec] 
     ATIME=Jan 1 12:12:12 2012 [0 nsec] 
OWNER=nbari GRP=nbari LINKCNT=1 FLAGS=0 BLKCNT=8 GEN=384445f7 

А потом просто изменить CTIME вам нужные даты:

fsdb (inum: 642101)> ctime 20121212010101 

формат YYYYMMDDHHMMSS[.nsec]

Тогда просто выйти, набрав q или exit, двойной проверки запуска stat, например:

> stat -x test_file 
    File: "test_file" 
    Size: 29   FileType: Regular File 
    Mode: (0644/-rw-r--r--)   Uid: (1002/ nbari) Gid: (1002/ nbari) 
Device: 0,68 Inode: 642101 Links: 1 
Access: Sun Jan 1 12:12:12 2012 
Modify: Sun Jan 1 12:12:12 2012 
Change: Sun Jan 1 12:12:12 2012 
+0

Извините, но ваш ответ действителен только для изменения atime или mtime, а не ctime. – deajan

 Смежные вопросы

  • Нет связанных вопросов^_^