文件管理

一、文件系统

    单根架构,根文件系统rootfs

    不是linux大小写敏感,而是文件系统支不支持大小写。

    路径分割 /

    FHS:目录结构,文件分层标准

    文件有两种数据:

        元数据,数据。

        元数据与数据存放的位置不再一起

    

二、文件系统结构

        /boot:引导文件存放目录,内核文件、引导加载器都存放于此目录。

        /bin:供所有用户使用的基本命令;不能关联至独立分区,OS启动就会用到的程序。

        /sbin:管理类的基本命令;不能关联至独立分区,OS启动就会用到的程序。

        /lib:启动是程序来的基本共享库文件以及内核模块文件(/lib/modules)

        /lib64:专用于x86_64系统上的辅助共享库文件存放位置。

        /etc:配置文件目录。

        /home/USERNAME:普通用户家目录。

        /root:管理员的家目录。

        /media:便携式移动设备挂载点。

        /mnt:临时文件系统挂载点。

        /dev:设备文件及特殊文件存储位置。

            biock块设备:随机访问

            character字符设备:顺序访问

            空设备:/dev/null  /dev/zero

        /opt:第三方应用程序的安装位置。

        /srv:系统上运行的服务用到的数据。

        /tmp:临时文件存储位置。

        /usr:普通文件(universal),shared(共享文件),只读文件(read-only)

            bin:保证系统拥有完整功能而提供的应用程序。

            sbin:

            lib:32位实用。

            lib64:只存在64位系统。            

            include:C程序的头文件。    

            share:结构化独立的数据。

            local:第三方应用程序的安装位置。

                bin,sbin,lib,lib64,etc,share

        /var:变动数据文件(variable data files)

            cache:应用程序缓存数据目录。

            lib:应用程序状态信息数据。

            local:专用于为/usr/local下的应用程序存储可变数据。

            lock:锁文件。

            log:日志目录及文件。

            opt:专用于为/opt下的应用程序存储可变数据。

            run:运行中的进程相关数据,通常用于存储进程pid文件。

            spool:应用程序数据池。

            tmp:保存系统两次重启之间产生的临时数据。

        /proc:用于输出内核与进程信息相关的虚拟文件系统。

        /sys:用于输出当前系统上硬件设备相关信息虚拟文件系统。

        /selinux:(security enhanced Linux),selinux相关的安全策略等信息的存储位置。

    linux上的引用程序的组成部分

        二进制程序:/bin,/sbin,/use/bin,/ues/sbin,/usr/local/bin,/usr/local/sbin

        库文件:/lib,/lib64,/uer/,/uer/lib64,/uer/local/lib,/uer/local/lib64

        配置文件:/etc,/etc/DIRECTORY,/usr/local.etc

        帮助文件:/usr/share/man,/usr/share/doc,/usr/local/share/man,/usr/local/share/doc

三、文件名规则

    包括路径在内,文件名称最长4095个字节,用/分隔的路径不能超过255个字节

    蓝色:目录

     绿色:可执行文件

    红色:压缩文件

    浅蓝色:链接文件

    /和nul不能作为文件名,实用特殊字符的目录名和文件夹不推荐使用,有些字符需要引号来引用它们。

    linux标准文件系统:(如exe4)文件名称大小写敏感。

四、linux下的文件类型

    -:普通文件

    d:目录文件

    l:符号链接文件

    biock:块设备,随机访问,有缓存,物理存在。

    character:字符设备,顺序访问,没有缓存,逻辑存在。

    sockett:套接字文件,进程之间通讯。

    pipe:管道文件,钱一个命令的输出通过管道作为后面的输入。

五、文件通配符

    *:匹配另个或多个字符

    ?:匹配任何单个字符

    ~:当前用户家目录

    ~username:用户家目录

    ~+:当前工作目录

    ~-:前一个工作目录

    [0-9]:匹配数字范围

    [a-z]:大写和小写字母 顺序:小写大写

    [A-Z]:大写和小写字母 顺序:小写大写

六、更改目录cd

    cd:改变目录为绝对或相对路径

    cd..:到上一级目录

    cd -:到以前的工作目录

        相关的环境变量:

            PWD:保存了当前目录路径

            OLDPWD:上一次所在目录路径

[root@localhost ~]# pwd
/root
[root@localhost ~]# cd /etc
[root@localhost etc]# cd /bin
[root@localhost bin]# cd -
/etc
[root@localhost etc]# cd
[root@localhost ~]#

七、列出目录内容ls

    l.:只显示隐藏文件

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

    -l:显示额外的信息

    -R:目录递归通过,显示所有子目录里的文件。

    -ld:目录和符号链接信息。

    -n:文件分行显示,n代表几行

    -S:从大到小排序

[root@localhost ~]# ls
anaconda-ks.cfg  mulu1  mulu2  wenjian1  wenjian2

八、创建空白文件touch

    touch 文件名

    -a:改变atime

    -m:改变mtime

    -c:如果文件存在,只刷新时间。如果文件不存在,不会创建。

    -t:改变atime,mtime

        touch -t 年月日时分 文件名

[root@localhost ~]# touch -t 201607301846 /wang/DYW
[root@localhost ~]# ll /wang/DYW
-rw-r--r-- 1 root root 0 Jul 30  2016 /wang/DYW

    

九、复制文件和目录cp

    源是一个文件:

        目标不存在:复制过去并且改名

        目标存在是文件:覆盖文件

        目标存在是目录:复制都目录下

    源是多个文件:

        目标不存在:报错

        目标存在是文件:报错

        目标存在是目录:复制到目录下

    源是目录:必须加-r

        目标不存在:创建指定目录,把源目录中所有文件复制到指定目录

        目标存在是文件:报错

        目标存在是目录:复制到目标目录中,成为子目录

    cp常用选项:

        -i:交互式

        -r,-R:递归复制目录及内部的所有内容

        -a:归档,相当于-dR,–presevr=all

        -d:–no-dereference –presevr=links 不复制文件,只复制链接名

        –presevr=[ATTR_LIST]

            mode:权限

            ownership:属主属组,所有者

            timestamp:时间

            links:链接

            xattr

            context

            all:所有

        -p:相当于–presevr=mode,ownership,timestamp

        -v:看复制过程

[root@localhost ~]# cp mulu1 -r /wang/123
[root@localhost ~]# ls /wang/123
mulu1
[root@localhost ~]# ls wenjian1 /wang/123
wenjian1

/wang/123:
mulu1

十、别名alias

    alias name=''

    如果想永久生效,要定义在配置文件中。

        对当前用户:~/.bashrc

        对所有用户:/etc/bashrc

    编辑配置给出的新配置不会立即生效,

        bash进程重新读取配置文件:

            source /path/to/config_file

            . /path/to/config_file

[root@localhost ~]# alias asd='ls'
[root@localhost ~]# asd
anaconda-ks.cfg  mulu1  mulu2  wenjian1  wenjian2

十一、移动和重命名文件

    -i:交互式

    -f:强制

[root@localhost ~]# mv wenjian2 /wang/789
[root@localhost ~]# ll /wang/789
-rw-r--r-- 1 root root 0 Jul 29 11:50 /wang/789

十二、删除rm

    -i:交互式

    -f:强制删除

    -r:递归

[root@localhost ~]# ls /wang
123  789  dir  DYW
[root@localhost ~]# rm -rf /wang/123
[root@localhost ~]# ls /wang
789  dir  DYW

十三、显示目录树tree

    -d:只显示目录

    -l:指定显示的层级目录 

        tree -l n

    -d:只显示目录,不显示文件

[root@localhost ~]# tree /wang
/wang
├── 789
├── dir
│   ├── 1
│   ├── dir3-100
│   └── dir5
│       ├── 5
│       ├── dir
│       └── dir4
└── DYW

6 directories, 3 files

十四、创建目录mkdir 删除目录rmdir

    mkdir:

        -p:自动创建所需的个目录

        -v:显示穿件过程

    rmdir:删除目录 只能删除空白目录

        -p:删除目录树

[root@localhost ~]# mkdir -p /wang/dir/{1,2,3}
[root@localhost ~]# tree /wang
/wang
└── dir
    ├── 1
    ├── 2
    └── 3

4 directories, 0 files

十五、索引节点inode

   

    inode是什么:

    文件存储在硬盘上,硬盘的最小存储单位叫做“扇区”(Sector),每个扇区存储512字节(相当于0.5KB)

    操作系统读取硬盘的时候,不会一个个扇区的读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个“块”(block)。这种由多个扇区组成的“块”,是文件存取的最小单位。“块”的大小,最常见的是4KB,即连续八个sector组成一个block。

    文件数据都存储在“块”中,那么很显然还有一个地方存储文件的元信息,例如文件的创建者、文件的创建日期、文件的大小等。这种存储文件元信息的区域就叫做inode,中文译名为“索引节点”

    inode的内容:

    inode包含文件的元信息,具体内容:

        文件的字节数

        文件拥有者的UserID

        文件的Group ID

        文件的读、写、执行权限

        文件的三个时间戳:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间

        链接数,即有多少文件名指向这个inode

        文件数据block的位置

    可以用stat命令查看文件的inode信息。

    inode的大小

    inode也会消耗硬盘空间,所有硬盘格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区,存放文件数据;另一个inode区(inode table),存放inode所包含的信息。

    每个inode节点的大小,一般是128字节或256字节。inode节点的总数,在格式化时就给定,一般是每1KB或每2KB就设置一个inode。假定在一块1GB的硬盘中,每个inode节点的大小为128自己,每1KB就设置一个inode,那么inode,那么inode table的大小就会达到128MB,占整块硬盘的12.8%。

    每个文件都必须有一个inode,所以有可能发生inode已经用光,但是硬盘还未存满的情况,就无法在硬盘上创建新文件。

    查看每个硬盘分区的inode总数和已经实用的数量,可以实用df命令

         df-i

    inode号码

    没个inode都有一个号码,操作系统用inode号码来识别不同的文件

    linux系统内部不使用文件名,而inode号码来识别文件。对于系统来说,文件名知识inode号码便于识别的别称或者绰号。表面上,用户通过文件名打开文件。实际上,系统内部这个过程分成三步:首先,系统找到这个文件名对应的inode号码;其次,通过inode号码获取inode信息;最后,根据inode信息找到文件数据所在的block,读出数据。

    查看文件名对应的inode号码

        ls -i

    

    硬链接:

    ln 文件名 链接文件名

    创建硬链接会增加额外的记录项以引用文件

    对应统一文件系统上的一个物理文件

    每个引用相同的inode号

    创建时链接数递增

    不能跨分区、驱动器

    删除文件时:

         rm命令递减计数的链接

         文件要存在,至少有一个链接数

        当链接数为零时,该文件被删除

    软链接:

    也叫符号链接

    ln -s 文件名 链接文件名

    ls -l 显示链接的名称和引用的文件

    一个符号链接指向另一个文件

    可以对目录进行、可以跨分区

    指向的是另一个文件的路径,其大小为指向的路径字符串的长度,不增加或减少目标文件inode的引用技计数

    软链接文件:

        原始文件相对路径:相对于软链接文件路径,而不是相对于当前工作目录的路径

    硬链接与软链接的区别:

    硬链接就是同一个文件使用了多个别名(他们有共同的 inode)。

    硬链接可由命令 link 或 ln 创建,由于硬链接是有着相同 inode 号仅文件名不同的文件,因此,删除一个硬链接文件并不影响其他有相同 inode 号的文件。硬链接不能对目录进行创建,只可对文件创建。

    软链接(也叫符号链接)与硬链接不同,文件用户数据块中存放的内容是另一文件的路径名的指向。软链接就是一个普通文件,只是数据块内容有点特殊。软链接可对文件或目录创建。加-s选项表示创建的是软链接。删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接就变成了死链接

    file:

    file 选项 文件名

    用来识别文件类型,也可用来辨别一些文件的编码格式。它是通过查看文件的头部信息来获取文件类型,而不是像Windows通过扩展名来确定文件类型的。

    常用选项:

         -b:列出文件辨识结果时,不显示文件名称。

        -c:详细显示指令执行过程,便于排错或分析程序执行型

        -f:列出文件中文件名的文件类型

        -F:实用制定分隔符号替换输出文件名后默认的“:”分隔符

        -I:输出mime类型的字符串

        -L:查看对应软链接对应文件的文件类型

        -z:尝试去解读压缩文件的内容

原创文章,作者:DYW,如若转载,请注明出处:http://www.178linux.com/26918

(0)
DYWDYW
上一篇 2016-08-02
下一篇 2016-08-02

相关推荐

  • shell脚本编程的一些好习惯

    shell脚本编程的一些好习惯 1.命名规则   脚本命名以.sh结尾,名称尽量见名之意。以下是几种可供参考的脚本命名风格。通过以下清新脱俗的风格,读者能够很easy的明白脚本的作用。 clearlog.sh ClearLog.sh clearSql.sh snmp_install.sh Monitor.sh 2.脚本信息   为脚本加入…

    Linux干货 2017-04-14
  • 一起学WINS系列(二)安装、配置

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://jeffyyko.blog.51cto.com/28563/159128  此系列第二节:安装服务端、配置客户端。          完整的WINS系统…

    Linux干货 2015-03-25
  • 数据库

    数据库系统理论概述(一) –本文主要讲述: – 1.数据库和数据库管理系统 – 2.使用传统的文件系统对大量数据管理存在的问题 – 3.常见的数据库系统模型 – 4.数据库视图 – 5.数…

    Linux干货 2016-10-30
  • N26 第三周作业

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@localhost ~]# useradd tom [root@localhost ~]# echo "123456" | passwd –st…

    Linux干货 2017-01-20
  • 磁盘管理

    磁盘管理

    Linux干货 2017-10-27
  • 实时获取MySQL的TPS、QPS(输出到屏幕)

    这个脚本挺好用的,例如我们在主库执行了一个大事务,结果导致从库的show slave status\G 一直卡在 system lock状态,我们用下面这个脚本就能知道到底是hang住了,还是只是执行缓慢(反应在脚本执行结果里面就是qps\tps是不停变动的)。 当然,从库一直处于system lock 状态,一般是因为我们从库也设置双1导致,只要…

    Linux干货 2017-05-07