马哥博客作业第二周

                                                                                                                                                        文件管理

1.文件的系统目录结构

  • 文件和目录被组织成一个单根倒置树结构
  • 文件系统从根目录下开始,用“/”表示
  • 根文件系统(rootfs):root filesystem
  • 标准Linux文件系统(如ext4),文件名称大小写敏感,例如:MAIL, Mail, mail, mAiL
  • 以.开头的文件为隐藏文件
  • 路径分隔的 /文件名最长255个字节包括路径在内文件名称最长4095个字节
    蓝色-->目录 绿色-->可执行文件 红色-->压缩文件 浅蓝色-->链接文件 灰色-->其他文件
    除了斜杠和NUL,所有字符都有效.但使用特殊字符的目录名和文件不推荐使用,有些字符需要用引
    号来引用
    每个文件都有两类相关数据:
    元数据:metadata
    数据:data
    Linux的文件系统分层结构:FHS Filesystem Hierarchy Standard
    参考文档:http://www.pathname.com/fhs/

  • 1.1常见文件系统目录功能
  • /boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader, grub)都存放于此目录
  • /bin:所有用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序
  • /sbin:管理类的基本命令;不能关联至独立分区,OS启动即会用到的程序
  • /lib:启动时程序依赖的基本共享库文件以及内核模块文件(/lib/modules)
  • /lib64:专用于x86_64系统上的辅助共享库文件存放位置
  • /etc:配置文件目录
  • /home/USERNAME:普通用户家目录
  • /root:管理员的家目录
  • /media:便携式移动设备挂载点
  • /mnt:临时文件系统挂载点
  • /dev:设备文件及特殊文件存储位置
  • b: block device,随机访问
  • c: character device,线性访问
  • /opt:第三方应用程序的安装位置
  • /srv:系统上运行的服务用到的数据
  • /tmp:临时文件存储位置
  • /usr: universal shared, read-only data
  • bin: 保证系统拥有完整功能而提供的应用程序
  • sbin:
  • lib:32位使用
  • lib64:只存在64位系统
  • include: C程序的头文件(header files)
  • share:结构化独立的数据,例如doc, man等
  • 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相关的安全策略等信息的存储位置
  • 1.2 CentOS7 以后版本目录结构变化
  • /bin 和 /usr/bin
  • /sbin 和 /usr/sbin
  • /lib 和/usr/lib
  • /lib64 和 /usr/lib64
  • 1.3 应用程序组成部分
  •  二进制程序:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin
  • 库文件:/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64
  • 配置文件:/etc, /etc/DIRECTORY, /usr/local/etc帮助文档
  • /usr/share/man, /usr/share/doc, /usr/local/share/man, /usr/local/share/doc
  • 1.4Linux下的文件类型
  • -:普通文件
  • d: 目录文件
  • b: 块设备
  • c: 字符设备
  • l: 符号链接文件
  • p: 管道文件pipe
  • s: 套接字文件socket

2.文件的操作命令

2.1显示当前名作目录

 ♦每个shell和进程都有一个当前的工作目录

 ♦CWD:current work directory

 ♦显示当前shell CWD的绝对路径

 ♦pwd命令: printing working directory

 ♦-P 显示真实物理路径

 ♦-L 显示链接路径(默认)

2.2 绝对路径和相对路径

  ♦绝对路径   

ο以正斜杠开始

ο完成的文件的位置路径

ο想用于任何想指定一个文件名的时候

 

  ♦相对路径

ο不以斜线开始

ο指定相对于当前工作目录或某目录的位置

ο可以作为一个简短的形式指定一个文件名

 

  ♦基名:basename,只取文件名而不要路径
  ♦目录名:dirname,只取路径,不要文件名

 2.3相关命令

 cd  change directory 改变目录

♦选项: -p 切换至物理路径,而非软连接目录

♦ 可以使用绝对或相对路径

 ο 切换至父目录: cd...

 ο 切换至当前用户主目录  cd

 ο 切换至以前的工作目录 cd -

♦ 相关的环境变量

ο PWD : 当前目录路径

ο OLDPWD : 上一次目录路径

 

  PWD  printing working directory 

 ο -P 现实真实物理路径

 ο -L  显示软连接路径

 

   ls 

 ♦ 列出当前目录的内容或指定目录

 ♦ 用法 ls [options] [files_or_dirs]

 

♦ ls -a 包含隐藏文件
♦ ls -l 显示额外的信息
♦ ls -R 目录递归
♦ ls -ld 目录和符号链接信息
♦ ls -1 文件分行显示
♦ ls -S 按从大到小排序
♦ ls -t 按mtime排序
♦ ls -u 配合-t选项,显示并按atime从新到旧排序
♦ ls -U 按目录存放顺序显示
♦ ls -X 按文件后缀排序

 

  stat  查看文件状态

♦文件相关信息 :metadata data

♦每个文件有三个时间戳

οaccess time 访问时间,atime,读取文件内容
οmodify time 修改时间,mtime,改变文件内容(数据)
οchange time 改变时间,ctime,元数据发生改变

 

  touch 创建新文件或刷新文件的时间

♦ touch [OPTION]... FILE...

ο -a 仅改变atime和ctime

ο -m 仅改变mtime和ctime

ο -t [[CC]YY]MMDDhhmm[.ss] 指定atime和mtime的时间戳

ο -c 如果文件不存在,则不予创建

 

  CP 实现文件或目录的复制

♦ cp [OPTION]... [-T] SOURCE DEST

♦ cp [OPTION]... SOURCE... DIRECTORY

♦ cp [OPTION]... -t DIRECTORY SOURCE...

♦  常用选项

  -i 覆盖前提示
  -n 不覆盖,注意两者顺序
  -r, -R 递归复制目录及内部的所有内容
  -a 归档,相当于-dR --preserv=all
  -d --no-dereference --preserv=links 不复制原文件,只复制链接名
  --preserv[=ATTR_LIST]
  mode: 权限
  ownership: 属主属组
  timestamp:
  links
  xattr
  context
  all
  -p 等同--preserv=mode,ownership,timestamp
  -v --verbose
  -f --force
  -u --update 只复制源比目标更新文件或目标不存在的文件
  -b 目标存在,覆盖前先备份,形式为 filename~
  --backup=numbered 目标存在,覆盖前先备份加数字后缀

 

   MV  可以实现文件或目录的移动和改名

  ♦ 同一分区移动数据,速度很快:数据位置没有变化

 ♦ 不同分区移动数据,速度相对慢:数据位置发生了变化

  ♦  格式

  ο  mv [OPTION]... [-T] SOURCE DEST
  ο  mv [OPTION]... SOURCE... DIRECTORY
  ο  mv [OPTION]... -t DIRECTORY SOURCE...

  ♦  常用选项

   ο  -i 交互式
   ο  -f 强制
   ο  -b 目标存在,覆盖前先备份

 

     RM   可以删除文件   (慎用)

    ♦  格式

  ο  rm [OPTION]... FILE...

  ♦  常用选项

  ο  -i 交互式
  ο  -f 强制删除
  ο  -r 递归
  ο  --no-preserve-root 删除/

 

    tree   显示目录树
     ♦  常见选项:
  ο  -d: 只显示目录
  ο  -L level:指定显示的层级数目
  ο  -P pattern: 只显示由指定wild-card pattern匹配到的路径

 

    mkdir 创建目录
    ♦  常见选项:
  ο  -p: 存在于不报错,且可自动创建所需的各目录
  ο  -v: 显示详细信息
  ο  -m MODE: 创建目录时直接指定权限

 

    rmdir   删除空目录
  ♦  常见选项:
  ο  -p 递归删除父空目录
  ο  -v 显示详细信息
  ο  注意:rmdir只能删除空目录,如果想删除非空目录,可以使用rm -r 命令,递归删除目录树

 

 

 

 

 

  3.文件元数据和节点表结构

3.1  inode表结构

♦  每个文件的属性信息,比如:文件的大小,时间,类型等,称为文件的元数据(meta data)。这此元数
   据是存放在node(index node)表中。node 表中有很多条记录组成,第一条记录对应的存放了一个文
   件的元数据信息
♦  第一个node表记录对应的保存了以下信息:
 ο  inode number 节点号
 ο  文件类型
 ο  权限
 ο  UID
 ο  GID
 ο  链接数(指向这个文件名路径名称个数)
 ο  该文件的大小和不同的时间戳
 ο  指向磁盘上文件的数据块指针
 ο  有关文件的其他数据

♦ 示图 1

 

 

 ♦ 示图 2

 

 ♦  目录与indoe的关系

 ο 文件引用的是 inode号

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

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

♦ 示图

 

 

      cp和inode

 ♦  cp 命令:

分配一个空闲的inode号,在inode表中生成新条目
在目录中创建一个目录项,将名称与inode编号关联
拷贝数据生成新的文件

 

 ♦  rm和inode
 ♦  rm 命令:
链接数递减,从而释放的inode号可以被重用
把数据块放在空闲列表中
删除目录项
数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖

 

 ♦  mv和inode
如果mv命令的目标和源在相同的文件系统,作为mv 命令
用新的文件名创建对应新的目录项
删除旧目录条目对应的旧的文件名
不影响inode表(除时间戳)或磁盘上的数据位置:没有数据被移动!
如果目标和源在一个不同的文件系统, mv相当于cp和rm

 

 

 

  3.2  硬链接 ln
♦ 硬链接本质上就给一个文件起一个新的名称,实质是同一个文件
♦ 硬链接特性
♦ 创建硬链接会增加额外的记录项以引用文件
♦ 对应于同一文件系统上一个物理文件
♦ 每个目录引用相同的inode号
♦ 创建时链接数递增
♦ 删除文件时:rm命令递减计数的链接,文件要存在,至少有一个链接数,当链接数为零时,该文件被删除
♦ 不能跨越驱动器或分区
♦ 不支持对目录创建硬链接

 

  3.3  符号(或软)链接

♦ 一个符号链接指向另一个文件,就像windows中快捷方式,软链接文件和原文件本质上不是同一个文件

♦ 软链接特点
♦ 一个符号链接的内容是它引用文件的名称
♦ 可以对目录创建软链接
♦ 可以跨分区的文件实现
♦ 指向的是另一个文件的路径;其大小为指向的路径字符串的长度;不增加或减少目标文件inode的引用计数
♦ 软链接如果使用相对路径,是相对于原文件的路径,而非相对于当前目录

 

 

  3.4 硬链接和软链接区别总结
1. 本质:
♦ 硬链接:本质是同一个文件
♦ 软链接:本质不是同一个文件
2. 跨设备
♦ 硬链接:不支持
♦ 软链接:支持
3. inode
♦ 硬链接:相同
♦ 软链接:不同
4. 链接数
♦ 硬链接:创建新的硬链接,链接数会增加,删除硬链接,链接数减少
♦ 软链接:创建或删除,链接数不会变化
5. 文件夹
♦ 硬链接:不支持
♦ 软链接:支持
6. 相对路径
♦ 硬链接:原始文件相对路径是相对于当前工作目录
♦ 软链接:原始文件相对路径是相对于链接文件的相对路径
7. 删除源文件
♦ 硬链接:只是链接数减一,但链接文件的访问不受影响
♦ 软链接:链接文件将无法访问
8. 文件类型
♦ ln -s filename [linkname]
♦ #绝对路径
♦ ln -s /data/dir /data/dirlink
♦ #相对路径
♦ cd /data
♦ ln -s ../data/dir /root/dirlink
♦ rm -rf /data/dirlink #删除软链接本身,不会删除源目录内容
♦ rm -rf /data/dirlink/ #删除源目录的文件,不会删除链接文件
♦ 硬链接:和源文件相同
♦ 软链接:链接文件,和源文件无关

 

posted @ 2020-03-29 16:49  柴大坤  阅读(126)  评论(0)    收藏  举报