1、ext2/ext3(日志功能)文件系统(Linux标准文件系统、一种索引式文件系统)
SuperBlock:Superblock是记录整个filesystem 相关信息的地方,没有Superblock就没有这个filesystem了。他记录的信息主要有:
a、block与inode 的总量;
b、未使用与已使用的inode/block数量;
c、一个block与一个inode的大小;
d、filesystem 的挂载时间、最近一次写入数据的时间、最近一次检验磁盘 (fsck) 的时间等档案系统的相关信息;
e、一个 valid bit 数值,若此档案系统已被挂载,则 valid bit 为 0 ,若未被挂载,则valid bit 为 1 。
Group Description:纪录此 block 由由何处开始记录;
Block bitmap:此处记录哪个block有没有被使用;
Inode bitmap:此处记录哪个inode有没有被使用;
Inode table:为每个inode数据存放区,记录文件属性,包括文件所在的block号码,一个文件占一个inode;
Data Blocks:为每个block数据存放区,记录文件的内容。
2、文件系统查看命令:dumpe2fs
[root@linux ~]# dumpe2fs /dev/hda1
Filesystem volume name: /
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 1537088
Block count: 1536207
Free blocks: 735609
Free inodes: 1393089
First block: 0
Block size: 4096
Filesystem created: Sat Jun 25 16:21:13 2005
Last mount time: Sat Jul 16 23:45:04 2005
Last write time: Sat Jul 16 23:45:04 2005
Last checked: Sat Jun 25 16:21:13 2005
First inode: 11
Inode size: 128
Journal inode: 8
Group 0: (Blocks 0-32767)
Primary superblock at 0, Group descriptors at 1-1
Reserved GDT blocks at 2-376
Block bitmap at 377 (+377), Inode bitmap at 378 (+378)
Inode table at 379-1400 (+379)
0 free blocks, 32424 free inodes, 11 directories
Free blocks:
Free inodes: 281-32704
Group 1: (Blocks 32768-65535)
Backup superblock at 32768, Group descriptors at 32769-32769
Reserved GDT blocks at 32770-33144
Block bitmap at 33145 (+377), Inode bitmap at 33146 (+378)
Inode table at 33147-34168 (+379)
18 free blocks, 24394 free inodes, 349 directories
Free blocks: 37882-37886, 38263-38275
Free inodes: 38084-38147, 39283-39343, 41135, 41141-65408
因为数据很多略去了一些信息了~上面是比较精简的显示内容。在 Group 0之前的都是Superblock的内容,记录了inode/block的总数,还有其它相关的讯息。至于由 Group 0之后,则是说明各个bitmap及inode table与block area等等。
3、Linux支持的文件系统
传统档案系统:ext2 / minix / MS-DOS / FAT (用vfat模块) / iso9660 (光盘)等等;
日志式档案系统: ext3 / ReiserFS / Windows' NTFS / IBM's JFS / SGI's XFS
网络档案系统: NFS / SMBFS
查看你的Linux支持的档案系统有哪些?
[root@linux ~]# ls -l /lib/modules/`uname -r`/kernel/fs
系统目前已启用的档案系统有哪些?
[root@linux ~]# cat /proc/filesystems
4、断行符问题
DOS使用的断行字符为^M$,称为CR与LF两个符号。而在Linux底下,则是仅有LF($)这个断行符号。在Linux底下的指令在开始执行时,他的判断依据是『Enter』,而Linux的Enter为LF符号, 不过,由于DOS的断行符号是CRLF ,也就是多了一个^M的符号出来, 在这样的情况下,如果是一个shell script的程序档案,将可能造成『程序无法执行』的状态~ 因为他会误判程序所下达的指令内容! 解决的办法是使用dos2unix命令。
[root@linux ~]# dos2unix [-kn] file [newfile]
[root@linux ~]# unix2dos [-kn] file [newfile]
参数:
-k :保留该档案原本的mtime时间格式 (不更新档案上次内容经过修订的时间)
-n :保留原本的旧档,将转换后的内容输出到新档案,如:dos2unix -n old new
范例一:将我们提供的hosts档案格式更新为 dos 格式。
[root@linux ~]# unix2dos -k hosts
unix2dos: converting file hosts to DOS format ...
此时hosts这个档案的时间不会改变,但是内容主要将断行字符修改成为DOS的CRLF了。
范例二:将范例一已经变成DOS格式的hosts改名成为hosts.dos,并转换Linux格式到hosts.linux
[root@linux ~]# mv hosts hosts.dos
[root@linux ~]# dos2unix -k -n hosts.dos hosts.linux
dos2unix: converting file hosts.dos to file hosts.linux in UNIXformat ...
[root@linux ~]# ll
-rw-r--r-- 1 root root 288 Aug 1 13:30 hosts.dos
-rw------- 1 root root 279 Aug 1 13:30 hosts.linux
由于DOS格式当中多了CR字符,所以,档案比较大点!
5、语序编码转换
iconv [选项...] [文件...]
常用选项:
输入/输出格式规范:
-f, --from-code=名称 原始文本编码
-t, --to-code=名称 输出编码
信息:
-l, --list 列举所有已知的字符集
输出控制:
-c 从输出中忽略无效的字符
-o, --output=FILE 输出文件
-s, --silent 关闭警告
--verbose 打印进度信息
例子:
1)iconv -f utf-8 -t gb2312 test.txt > test1.txt
2)iconv -f big5 -t utf8 test.txt -o testuf8.txt