Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> Файловая система —> ffsinfo

ffsinfo - программа создания дампа метаинформации UFS

Автор: lissyara.


    `Исчо` одна интересная програмулина для ковыряния FS - ffsinfo. Позволяет делать дамп всей метаинформации файловой системы UFS. Разумеется всю FS дампить никто не заставляет (если дампить всю, то объём дампа составит до 2% от размера FS), при желании можно сделать частичный дамп, определённой группы цилиндров, или даже одной иноды.
   Ключики:
-g cylinder_group этот ключ ограничит дамп только информацией об этой группе цилиндров. 0 - первая группа цилинров, -1 - последняя
-i inode - ограничит дамп только информацией об этой иноде. Минимальная разрешённая инода - 2. Если инода не выбрана, но группа цилиндров определена, то будет создан дамп только для инод в пределах этой группы цилиндров.
-l level - уровень детализации дампа. Значение `по-умолчанию` - 255.
-o outfile - имя файла в который будет сделан дамп. Должен быть обязательно. Если задать - то дамп будет выведен на стандартный вывод (в трубу, или на экран.).

Вот примеры использования:
/usr/home/lissyara/>ls -i
4945922 .cshrc             4945927 .mailrc       4945931 distfiles
4945924 .login             4945928 .profile      4945930 distfiles.tar.bz2
4945926 .login_conf        4945925 .rhosts       4946193 file.txt
4945923 .mail_aliases      4945929 .shrc
/usr/home/lissyara/>ffsinfo -o - -i 4945927 -l 0x100 /dev/ad1s1c
===== START UFS2 INODE DUMP =====
# 0@80a4700: Inode 0x004b7807
mode       u_int16_t      0100644
nlink      int16_t        0x0001
uid        u_int32_t      0x000003e9
gid        u_int32_t      0x00000000
blksize    u_int32_t      0x00000000
size       u_int64_t      0x000000000000014b
blocks     u_int64_t      0x0000000000000004
atime      ufs_time_t     1137673537
mtime      ufs_time_t     1137673537
ctime      ufs_time_t     1137673537
birthtime  ufs_time_t     1137673537
mtimensec  int32_t        0x00000000
atimensec  int32_t        0x00000000
ctimensec  int32_t        0x00000000
birthnsec  int32_t        0x00000000
gen        int32_t        0x1649ada8
kernflags  u_int32_t      0x00000000
flags      u_int32_t      0x00000000
extsize    int32_t        0x00000000
db         ufs2_daddr_t[0] 0x         12d7d9f
===== END UFS2 INODE DUMP =====
/usr/home/lissyara/>

Это инфа по одной иноде. Можно достать информацию, например по суперблоку:
/usr/home/lissyara/>ffsinfo -o - -l 0x001 /dev/ad1s1c
===== START SUPERBLOCK =====
# 0@80808c4: primary sblock
sblkno            int32_t          0x00000028
cblkno            int32_t          0x00000030
iblkno            int32_t          0x00000038
dblkno            int32_t          0x00000bb8
old_cgoffset      int32_t          0x00000000
old_cgmask        int32_t          0x00000000
old_time          int32_t                   0
old_size          int32_t          0x00000000
old_dsize         int32_t          0x00000000
ncg               int32_t          0x000000d6
bsize             int32_t          0x00004000
fsize             int32_t          0x00000800
frag              int32_t          0x00000008
minfree           int32_t          0x00000008
old_rotdelay      int32_t          0x00000000
old_rps           int32_t          0x00000000
bmask             int32_t          0xffffc000
fmask             int32_t          0xfffff800
bshift            int32_t          0x0000000e
fshift            int32_t          0x0000000b
maxcontig         int32_t          0x00000008
maxbpg            int32_t          0x00000800
fragshift         int32_t          0x00000003
fsbtodb           int32_t          0x00000002
sbsize            int32_t          0x00000800
spare1            int32_t[2]       0x00000000 0x00000000
nindir            int32_t          0x00000800
inopb             int32_t          0x00000040
old_nspf          int32_t          0x00000000
optim             int32_t          0x00000000
old_npsect        int32_t          0x00000000
old_interleave    int32_t          0x00000000
old_trackskew     int32_t          0x00000000
id                int32_t[2]       0x43cf81c1 0x85c2eb4f
old_csaddr        int32_t          0x00000000
cssize            int32_t          0x00001000
cgsize            int32_t          0x00004000
spare2            int32_t          0x00000000
old_nsect         int32_t          0x00000000
old_spc           int32_t          0x00000000
old_ncyl          int32_t          0x00000000
old_cpg           int32_t          0x00000000
ipg               int32_t          0x00005c00
fpg               int32_t          0x00016f88
===== START CYLINDER SUMMARY =====
# 1@8080984: internal old_cstotal
ndir   int32_t 0x00000000
nbfree int32_t 0x00000000
nifree int32_t 0x00000000
nffree int32_t 0x00000000
===== END CYLINDER SUMMARY =====
fmod              int8_t           0x00
clean             int8_t           0x00
ronly             int8_t           0x00
old_flags         int8_t           0xffffff80
fsmnt             u_char[MAXMNTLEN] "/usr"
volname           u_char[MAXVOLLEN] ""
swuid             u_int64_t        0x0000000000000000
pad               int32_t          0x00000000
cgrotor           int32_t          0x00000017
old_cpc           int32_t          0x00000000
maxbsize          int32_t          0x00004000
sblockloc         int64_t          0x0000000000010000
===== START CYLINDER SUMMARY TOTAL =====
# 1@8080cb4: internal cstotal
ndir        int64_t 0x00000000000063fc
nbfree      int64_t 0x000000000022a1f5
nifree      int64_t 0x00000000004a9303
nffree      int64_t 0x0000000000008a21
numclusters int64_t 0x0000000000000000
===== END CYLINDER SUMMARY TOTAL =====
time              ufs_time_t       1137745993
size              int64_t          0x0000000001324af1
dsize             int64_t          0x000000000128a067
csaddr            ufs2_daddr_t     0x0000000000000bb8
pendingblocks     int64_t          0x0000000000000000
pendinginodes     int32_t          0x00000000
snapinum          int32_t[ 0]      0x00000000
avgfilesize       int32_t          0x00004000
avgfpdir          int32_t          0x00000040
save_cgsize       int32_t          0x00000000
flags             int32_t          0x00000002
contigsumsize     int32_t          0x00000008
maxsymlinklen     int32_t          0x00000078
old_inodefmt      int32_t          0x00000000
maxfilesize       u_int64_t        0x000080100202ffff
qbmask            int64_t          0x0000000000003fff
qfmask            int64_t          0x00000000000007ff
state             int32_t          0x00000000
old_postblformat  int32_t          0x00000000
old_nrpos         int32_t          0x00000000
spare5            int32_t[2]       0x00000000 0x00000000
magic             int32_t          0x19540119
===== END SUPERBLOCK =====
/usr/home/lissyara/>

Другие примеры приводить не буду, тока один, чтобы был понятен общий объём инфы:
/usr/home/lissyara/>
/usr/home/lissyara/>ffsinfo -o - -l 255 /dev/ad1s1c | wc -l
   54452
/usr/home/lissyara/>ffsinfo -o file.txt -l 255 /dev/ad1s1c
/usr/home/lissyara/>ls -lah | grep file.txt
-rw-r--r--  1 root      wheel    13M Jan 20 11:53 file.txt
/usr/home/lissyara/>



размещено: 2006-01-20,
последнее обновление: 2008-07-01,
автор: lissyara



 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.05 секунд
Из них PHP: 41%; SQL: 59%; Число SQL-запросов: 76 шт.
Исходный размер: 19150; Сжатая: 5573