码迷,mamicode.com
首页 > 系统相关 > 详细

Linux入门——文件管理

时间:2018-07-17 18:13:58      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:节点   容量   元数据   重用   list   身份证   add   不能   不可   

 

我们知道Linux有一个思想“一切都是一个文件(包括硬件)”,这是一篇关于基础文件管理的心得

文件系统结构元素

 技术分享图片

                                                  文件系统与目录结构

Linux文件的特点:

  1. 文件名区分大小写
  2. 技术分享图片
  3. 以 . 开头文件为隐藏文件(可通过ls  –a  查看
  4. 技术分享图片
  5. 文件有两类数据

                        元数据:metadata   (文件属性:类型,权限,从属关系,大小,时间,等等)

                        数据:data  (文件本身内容)

         4.文件名最长255个字节

         5.文件的划分

                       -:普通文件             d: 目录文件          b: 块设备

                        c: 字符设备             l: 符号链接文件      p: 管道文件pipe

                        s: 套接字文件socket

          技术分享图片

Cd:改变目录

切换至上一级目录:cd ..

切换至当前用户主目录:cd (回到根目录)

切换至以前的工作目录:cd -(只能在两个目录间切换)

技术分享图片

创建和查看文件

Ls

ls (list): 列出文件名 ,若不指定文件名或目录名,则列出当前 目录,默认自动展开列出一级子目录的文件名

技术分享图片

ls -a 显示所有文件,包含隐藏文件

技术分享图片

ls  -l = (ll) 列出文件的类型、权限、链接数、owner、group、大小,时间,名字

技术分享图片

ls -d 列出目录但不展目录

ls  -R  目录递归通过(不举例子了,我曹列个没完没了)

stat

stat   文件名    查看文件的状态,我们主要关注的是三个时间戳::

技术分享图片

access time:访问时间,atime,读取文件内容(访问时改变)

modify time: 修改时间, mtime,改变文件内容(文件本身内容改变时改变)

change time: 改变时间, ctime,元数据发生改变(文件元数据改变时改变)

Touch

Touch   文件名    若文件不存在,则创建一个空文件,若文件存在则更新时间戳

技术分享图片

Mkdir

 mkdir    目录名  

mkdir  -p  a/b/c/d/e 连续创建多级目录

技术分享图片

 

复制和删除文件

Cp

cp 目标文件   目的文件(若目的文件不存在则创建改文件,但只能创建一级文件,两级不行:

cp -r /etc /app/123/234/456  会报错)

cp  -r或-R  递归复制,如源包含目录,一定要递归才能复制

技术分享图片

cp  -d 当复制的源是一个软链接时,复制出的文件,也是软链接,若不加d,则复制完整的源文件

cp  -p 保留复制文件的 权限,owner,group,时间 戳不变

cp  -v  显示复制详细信息

技术分享图片

rm

rm –rf * 强制删除所有文件

rm –rf / 慎用

索引节点

在当前文件系统中,文件分为两部分: 块和节点 ,块内存储文件的数据,节点存储文件的元数据

一个节点(inode)是在一个表项,包含有关文件的信息(元数据),包括:

         1.文件类型,权限,UID,GID

         2.链接数(指向这个文件名路径名称个数)

         3.该文件的大小和不同的时间戳

         4.指向磁盘上文件的数据块指针

         5.有关文件的其他数据

对于一个文件来说有且只有一个节点(inode节点就好比文件的身份证)

Inode只有126B(现在好像大了是256B)而一个节点大小是2B,inode是如何存储文件的呢

 技术分享图片

 

Inode分为 12 直接指针,一个间接指针, 一个双重间块接指针,一个三重间接块指针

间接指针指用一个块去存储Inode的指针

我们假设一个block(块)大小是1K,那么我们存储文件的在最大容量是:

(12*1K +256*1k+256*256*1K+256*256*256*1K)/1024/1024=16G

如果你这个磁盘存储的文件比较大可以扩大block容量提升性能(毕竟你的指针就少了)

目录的实质:

我们要明白文件的名字是不可能唯一的,但文间的inode号是唯一的

在block中是不存在子文件这一说法的,所有文件都是平级关系,目录的inode中存储目录的元数据,目录的block存储的是子文件的名字和子文件的inode号

          文件引用一个是inode号

          人是通过文件名来引用一个文件

          一个目录是目录下的文件名和文件inode号之间的映射

 技术分享图片

 

CP命令的实质:

         分配一个空闲的inode号,在inode表中生成新条目

         在目录中创建一个目录项,将名称与inode编号关联

         拷贝数据生成新的文件

Mv命令的实质

1.如果mv命令的目标和源在相同的文件系统,作为mv命令

           用新的文件名创建对应新的目录项

           删除旧目录条目对应的旧的文件名

          不影响inode表(除时间戳)或磁盘上的数据位置:没有数据被移动!?

2.如果目标和源在一个不同的文件系统,mv相当于cp和rm

rm命令的实质:

     链接数递减,从而释放的inode号可以被重用

      把数据块放在空闲列表中

      删除目录项

      数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖。

硬链接

我们做个试验

1.我们创建两个目录dir1,dir2,以及一个文件a并向其输入内容hi

技术分享图片

2.在dir1中创建一个a的硬链接b,dir2创建一个a的硬链接b,并查看ls –iRl

技术分享图片

技术分享图片

3.删除a(此时b,c内容不变)

技术分享图片

4.修改dir1中的b(此时c中的内容也发生改变)
技术分享图片

还是那句话一个文件只有一个inode号只要inode号不变无论他有多少名字都是同一个文件,就好比人可以有多个名字,但只有一个身份证号

用一个形象的例子来表示硬链接,a要给c打电话,但他没有c的电话,b有,b告诉a电话号码,以后a再去联系c就不需要b了

我们亦可以了解到

1.硬链接一旦创建成功,则没有源和目的文件关系

2.硬链接必须在相同的分区下

3.硬链接不能对目录创建

4.目录的硬链接数包含目录自身的名字,以及 . 和子目录里的 ..

软连接

同样我们也举个例子

1在dir1 创建b的软连接b.txt通过相对路径

技术分享图片

2在dir1 创建b的软连接b1.txt通过绝对路径,并查看

技术分享图片

3删除b(b.txt,b1.txt都不可用),并查看

技术分享图片

4重新创建一个b并输入hello,并查看(都可用)

技术分享图片

这就好a要给c打电话,但他没有c的电话,b有,b用自己手机把c号码拨通后给了a,以后a再去联系c依旧需要b

1.软连接就相当于windos下快捷方式

2.软链接可以跨分区

3.可以相对路径 ,也可以绝对路径,在创建相对路径时,推荐进入到最终目录,再创建

4.删除源,软链接不可用,同时软连接不关心源是什么,只要有源就行

5.软连接存储的是地址

6.软连接相当于创建一个新文件

 

 

Linux入门——文件管理

标签:节点   容量   元数据   重用   list   身份证   add   不能   不可   

原文地址:https://www.cnblogs.com/angge/p/9308942.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!