您的位置:首页 > Web前端 > Node.js

EBB-5、文件系统

2013-07-03 22:11 197 查看
一、文件系统
1、文件数据包含:
1)文件数据的内容
2)metadata:元数据,主要是描述数据属性(property)的信息,用来支持如指示存储
位置、史数据、资源查找、文件记录等功能。元数据算是一 种电子式 目录
2、
1)Linux中,文件的数据的内容保存在block中,文件的元数据内容保存在inode中,
2)查看文件的inode,执行stat file
stat install.log



(1)文件名本身不保存在inode中,也就是说文件名不是文件的元数据:文件名存放在该
文件目录的block中(即文件名是目录的数据)。
(2)Size:文件的大小
(3)Blocks:该文件所占用的block数量。当前文件系统所划分的最小存储单位称之为
block。默认 情况下,分区时默认值是1个1024个字节,或者称为1个block,
或者1个k。
(4)IO block:存放该文件所涉及的相应block总数。
(5)regular file:表示这是一个普通文件。
(6)Device:魔法数字或者设备文件名称。表示该文件具体所在设备以及相应存放的位置
信息。
(7)Inode:表示该文件的inode编号值
(8)Links:连接数
(9)Access:权限
Uid:所有者
Gid:所有组
(10)时间戳:
Access :即atime,表示文件最后一次被访问的时间
某些情况下关闭该时间戳,节省I/O资源,提高效率
例如web网站内部的文件
Modify: 即mtime,文件最后一次更改时间(当文件内容发生变化时,该时间
戳发生变更;如果文件内容发生变化,其属性也会发生变
化,所以ctime时间戳也会发生变更)
Change: 即ctime,文件最后一次更改时间(当文件属性信息发生更改时(如
权限、拥有者等),该时间戳发生变更)



3、查找文件时,系统的后台过程
cat file时先查找该文件的inode,读出inode中所保存的文件属性信息(即元数据),
读出元数据存储的文件数据存储的位置(即block位置),然后系统找到相应的block,
读取对应的数据。

4、对于目录而言,目录的inode存放的是该目录的属性信息(即该目录的元数据),目录
也有block,目录block下存放的信息是该目录下的文件名称以及与该文件名称所对应的
inode值。

过程原理:系统首先确定当前目录位置,如在/tmp/work,然后先找根目录当前的inode以及
block,读出根目录下的所有目录,得出/tmp/目录的inode,然后读取/tmp/的
inode信息,得知/tmp/目录下的拥有的目录以及文件,得知/work/目录,再读
取/work/目录的相应数据,得出/work/目录下存在的目录及文件,再找到file的
inode,再读取file的inode,得知file的inode所指向的block位置,再读取那个
block,然后显示文件内容。
5、链接文件
1)硬链接文件:
创建硬链接文件
ln 创建链接的原文件 创建的链接文件
2)软链接文件:
创建软链接文件,文件属性以l开头
ln –s 创建链接的原文件 创建的链接文件



2)ll -i file :列出文件内容,包括inode值



3)链接数是记录指向同一个inode值的文件名的数量;当我们删除一个文件的时候,会减
少相应文件的链接数。
当文件的链接数减1得0时候,才真正的删除文件。
4)硬链接是多个文件指向同一个inode,是文件的另一个名称,本质上是同一个文件。
5)软链接文件是一个新的文件,软链接文件的block中存放的是原来的文件的位置信息。

用途:
1)硬链接必须在同一个文件系统内部使用,不可跨分区使用。可以是文件的另外一个保存
位置。
访问时节省系统资源。
2)软链接文件可以跨目录分区保存。可以在另外一个位置创建文件的访问途径和访问
方式。
不占硬盘更多的空间.

使用方法举例:
ll -a /etc/rc.d






K:表示开机时不启动
92:启动的顺序编号
S:开机时启动

3)创建目录的链接文件
目录不可以创建硬链接,原因:无限循环,无法判断位置;目录对应的inode信息不仅
包含目录本身的inode信息,还包含了相应的文件名和文件inode号,这个相应的文件名
描述的是文件名所在的目录以及文件名称,系统将无法处理文件位置。
4)软链接死循环演示:



6、编辑文件命令
1)vi:(RHEL版本中默认是vim程序)
vi file:打开并编辑文件
首先进入普通(命令)模式,按i键进入插入模式
在普通模式下:
(1)复制一行,执行双击y
(2)p,快速粘贴
(3)行剪贴,双击d
(4)块剪贴,停在行首,d3d
3表示剪贴3行

shift: 进入可视模式,该模式下
(1) set nu 快速定位到某一行
(2) /关键词: 查找关键词
(3):s /bash/hsab 将bash文字替换为hsab
(4)shift g :快速到达底部
(5)退出:
q!不保存强制退出
wq 保存并退出
wq!强制保存并退出
注意:
vi编辑时
:s/str1/str2/ 用字符串 str2 替换行中首次出现的字符串 str1
:s/str1/str2/g 用字符串 str2 替换行中所有出现的字符串 str1
:s/str1/str2/gi 用字符串 str2 替换行中所有出现的字符串 str1,在查找时不区分大小写
2)vim:
3)gedit:只能在GNOME图形界面下使用
打开方式
(1)Terminal下直接执行gedit



(2)Applications -->Accessories --> TextEditor



4)echo

7、文件查找命令
1)whereis
2)whichis



这两个命令只能寻找PATH变量声明的目录文件。
3)查询PATH变量值外的文件
locate file

局限:首先查找自身数据库。该数据库默认凌晨4:02更新一次。但是在上一次和下一次的
更新时间之内变动或创建的文件搜索不到。可以执行updatedb手动更新,但是当系
统变得非常庞大,或挂载了非常多的文件的时候,更新时间很长。
4)find
命令格式
find 起始目录 expression(搜索条件) (动作)
(1)find /root :默认显示/root下所有的文件目录
(2)find /root/ -name newfile :显示/root下的名称为newfile的文件。-name:表示
按照指定的文件名过滤



(3)find /etc -name passwd



(4)find /etc -type 文件类型:按文件类型查找
f:表示普通文件
d:表示目录文件
l:表示软链接文件
b:表示特殊块文件
c:表示特殊字符文件
p:表示命名管道
s:表示套接字
(5)find /etc -id8 :按文件所有者查找
(6)find /root -user 500 :



(7)find 目录 -size n:按照大小查询
(8)find 目录 -ctime n :查找最近一次修改是在 n 分钟之前的文件状态的。
(9)find -type f -exec file 命令 {} \; 查找的过程中执行动作
{}括号内不能有空格;
/转译符,
;表示命令结束
找到这种文件并执行放在{}内
find . -name newfile –exec ls –l {} \:
查找newfile文件并显示出来
find . -name file2 –ok rm {} \:
找到file2并执行删除
-ok表示执行该命令时,每一次都会再次确认是否真的执行

8、文件压缩命令
gzip、bzip2是linux下两种常见的文件格式;bzip2压缩率比gzip高
1)gzip file :压缩gzip文件
2)gunzip file :解压缩文件
3)bzip2 file:压缩bzip2文件
4)bunzip2 file :解压缩bzip2文件
参数:-1 -9:-1速度最快,压缩比小,体积大
-9速度最慢,压缩比大,体积小
5)tar :ar演变而来
(1)打包可以节省硬盘空间;避免拷贝大量文件时,部分文件出现问题无法检测;提高拷
贝效率
参数:c:打包
v:查看打包过程
f:保存打包的相应文件系统的格式,包括目录关系。后面跟文件名,必须的把
参数f放在最后,否则系统会报错
z:表示使用gzip压缩或解压文件
j:表示使用bzip2压缩或解压文件
tar cvf work.tar work:将work打包并查看保存成work.tar(文件为被压缩)
tar zcvf work.tar.gz work :将work打包并用gzip格式压缩保存成work.tar.gz
tar jcvf work.tar.bz2 work :将work打包并用bzip2压缩保存成work.tar.bz2

(2)x:解包
-C:指定解压位置
tar xvf work.tar 当前目录下解压缩
tar xvf work.tar -C /tmp/ : -C指定目录
tar zxvf work.tar.gz
tar jxvf work.tar.bz2

6)RHEL下zip压缩与解压缩
(1)zip -r new.zip /:将当前目录以及子目录下的所有文件全部压缩成new.zip
(2)unzip new.zip -d /tmp: 解压缩new.zip到/tmp;
-d指定目录
7)解压xz文件:
首先在下面这个站点下载解压工具:http://tukaani.org/xz
tar -jxvf xz-xxxxx.tar.bz2
./configure --prefix=/opt/gnu/xz(路径可以自定义)
make
sudo make install
ln -s /opt/gnu/xz/bin/xz /bin/xz (前面那个路径可能有差异)
xz -d ***.tar.xz
tar -xvf ***.tar
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息