文件管理

这里我们主要介绍LinuxFHS,文件类型,文件的创建、复制、移动与删除。

Linux下软、硬链接以及其区别,inode工作原理

文件和目录被组织成一个单根倒置树结构
文件系统从 根目录 下开始,用“/” 表示
根文件系统(rootfs) :root filesystem
名称是大小写敏感(FAT格式下大小写不敏感)
以. 开头的文件为隐藏文件
路径分隔的 /


文件有两类数据:
元数据:metadata 文件的属性 inode table
数据:data 文件里的内容
元数据和数据不存放在一起


文件系统分层结构:LSB Linux Standard Base

FHS: (Filesystem Hierarchy Standard)
/
├── bin 供所有用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序
├── boot 引导文件存放目录,内核文件都存放在此目录
├── dev 设备文件及特殊文件存储位置(b: block device,块设备,随机访问)
(c: character device,字符设备通常是逻辑上的设备,不是物理设备顺序访问 无缓存)
├── etc 配置文件目录
├── home 普通用户的家目录
├── lib 启动时程序依赖的基本共享库文件以及内核模块文件
├── lib64 专用于x86_64 系统上的辅助共享库文件存放位置
├── media 便携式移动设备挂载点
├── mnt 手动挂载
├── opt 第三方应用程序的安装位置
├── proc 用于输出内核与进程信息相关的虚拟文件系统
├── root root用户的家目录
├── sbin
├── selinux 相关的安全策略等信息的存储位置
├── srv 系统上运行的服务用到的数据
├── sys 用于输出当前系统上硬件设备相关信息虚拟文件系统
├── tmp 临时文件存储位置
├── usr usr文件系统包含所有的命令、库文件以及正常操作时所需的其他一些非改变文件
└── var 动态数据文件 cache(应用程序缓存),local (专用于为/usr/local 下的应用程序存储可变 数据),lock (锁文件),log(日志文件),opt: ( 专用于为/opt 下的应用程序存储可变数据), run(运行中的进程相关数据),spool(应用程序数据池),tmp(保存两次重启之间产生的临时数据 )

Linux 上的应用程序的组成部
二进制程序:/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


包括路径在内文件名称最长4095 个字节,用/ 分隔的路径不能超过255
pwd:显示当前工作目录
pwd -P:真实路径
绝对路径与相对路径
绝对路径
以正斜杠开始
完整的文件的位置路径
可用于任何想指定一个文件名的时候
相对路径
不以斜线开始
指定相对当前的工作目录位置
可以作为一个简短的形式指定一个文件名


ls命令:
列出当前目录的内容或指定目录
用法:
ls [options] [files_or_dirs]
ls -a 包含隐藏文件
ls -l 显示额外的信息
ls -R 目录递归通过
ls -ld 目录和符号链接信息
ls -1 文件分行显示
ls –S 按从大到小排序
ls –u 配合-t 选项,显示并按atime 从新到旧排序
ls –U 不排序按目录存放顺序显示


Linux 下的文件类型

  • :普通文件
    d: 目录文件
    b: 块设备
    c: 字符设备
    l: 符号链接文件
    p: 管道文件pipe
    s: 套接字文件socket
    蓝色-->目录文件
    绿色--> 可执行文件
    红色--> 压缩文件
    浅蓝色--> 链接文件
    灰色--> 其他文件
    除了斜杠和NUL, 所有字符都有效. 但使用特殊字符的目录名和文件不推荐使用,有些字符需要用引号来引用它们。 标准Linux 文件系统(如ext4 ),文件名称大小写敏感。例如 :MAIL, Mail, mail, mAiL

文件通配符 

*匹配零个或多个字符
? 匹配任何单个字符
~ 当前用户家目录
~username 用户家目录
~+ 当前工作目录
~- 前一个工作目录
[0-9] 匹配一个数字范围
[a-z] :[a,A,b,B,c,C...z]
[A-Z] :[A,b,B,c,C...z,Z]
[wxc] 匹配列表中的任何的一个字符
[^wxc] 匹配列表中的所有字符以外的字符
[:digit:] :任意数字,相当于0-9
[:lower:] :任意小写字母
[:upper:]: 任意大写字母
[:alpha:]: 任意大小写字母
[:alnum:] :任意数字或字母
[:space:] :空格
[:punct:]:标点符号


touch -a 刷新atime ctime也随之改变
touch -c 不创建文件 存在文件刷新
touch -t 指定时间戳
touch -d


cp 复制文件和目录 

cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
单个文件
-f 删除原文件并且新建与源文件同名的文件在覆盖内容
-i 提示信息 提示是否覆盖
-n 文件存在不进行操作

[root@localhost ~]# cp zhl1 /testdir/
[root@localhost ~]# ls
anaconda-ks.cfg  Documents  Music     Public     Videos  zhl1
Desktop          Downloads  Pictures  Templates  z       zhl2
[root@localhost ~]# ls /testdir/zhl1
zhl1

多个文件
多个文件复制时目标必须是目录且必须存在
目标是目录必须 -r 递归
复制的原文件是目录,目标目录不存在,新建目标目录,并把原目录里面的文件复制到目标目录
复制的原文件是目录,目标目录存在直接复制原文件
-a 归档(备份)相当于-dR
-d只复制链接文件 不复制原文件
-p 等同--preserv=mode,ownership,timestamp
-v 显示复制过程

[root@localhost ~]# cp -rv /testdir /test‘/testdir’ -> ‘/test/testdir’
‘/testdir/zhl1’ -> ‘/test/testdir/zhl1’
[root@localhost ~]# ls /testtestdir

mv 移动和重命名文件 

mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...
: 常用选项:
-i: 交互式 -f: 强制

[root@localhost ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'alias mv='mv -i'
root账户cp命令为命令别名,需要直接使用cp命令需要:\cp
[root@localhost ~]# mv zhl2 /test/testdir/
[root@localhost ~]# ls /test/testdir/
zhl1  zhl2

rm 删除 \rm = rm -f

[zhl@localhost ~]$ ls
zz.log  zz.txt
[zhl@localhost ~]$ pwd
/home/zhl
[zhl@localhost ~]$ rm zz.txt

tree 显示目录树 -d: 只显示目录
-L level :指定显示的层级数目
-P pattern: 只显示由指定pattern 匹配到的 路径

[root@localhost /]# tree /test1

/test1

└── test2

└── test3

└── test4


makdir

-p:  存在于不报错,且可自动创建所需的各目录;

-v:  显示详细信息

-m MODE:  创建目录时直接指定权限;


Linux下软、硬链接以及其区别
Linux链接分两种,一种被称为硬链接,另一种被称为符号链接(Symbolic Link,也称软连接)。 硬连接 inode索引编号 ls -i 查看inode 同意分区不能相同不在同一个分区可以相同(centos7) 任何目录最少有两个硬链接

创建软连接 ln -s 原始文件路径 软连接

软连接文件 原始文件的路径如果用相对路经一定是相对于软连接文件的路经,而不是相对于当前工作目录的路经 硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为节点号(InodeIndex)。多个文件名指向同一索引节点,这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个路径名。因为对应该目录的索引节点有一个以上的连接,只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。而文件想要真正被删除的条件是把所有硬连接文件全部删除。
创建硬链接会增加额外的记录项以引用文件
对应于同一文件系统上一个物理文件
每个目录引用相同的 inode 号(inode索引编号)
ls -i 查看inode
同一个分区不能相同不在同一个分区可以相同(centos7)
硬链接不能跨分区,任何目录最少有两个硬链接
节点数2的是分区的根(centos6)
节点数128是分区的根 (centos7) 也就是分区的挂载点

[root@localhost ~]# touch zhl1
[root@localhost ~]# ln zhl1 zhl2
[root@localhost ~]# ls -li
total 8
201356611 -rw-------. 1 root root 2633 Jul 25 18:45 anaconda-ks.cfg    48425 drwxr-xr-x  2 root root    6 Jul 25 11:00 Desktop    48426 drwxr-xr-x  2 root root    6 Jul 25 11:00 Documents 67358293 drwxr-xr-x  2 root root    6 Jul 25 11:00 Downloads 67358299 drwxr-xr-x  2 root root    6 Jul 25 11:00 Music
134347196 drwxr-xr-x  2 root root    6 Jul 25 11:00 Pictures
201351352 drwxr-xr-x  2 root root    6 Jul 25 11:00 Public
134347195 drwxr-xr-x  2 root root    6 Jul 25 11:00 Templates
201351354 drwxr-xr-x  2 root root    6 Jul 25 11:00 Videos
201366792 -rw-r--r--  1 root root  131 Jul 27 01:58 z
201351350 -rw-r--r--  2 root root    0 Jul 27 02:48 zhl1
201351350 -rw-r--r--  2 root root    0 Jul 27 02:48 zhl2
新建文件zhl1,用ln 命令创建zhl1的硬连接文件zhl2
然后使用 ls -li查看,结果zhl1和zhl2的inode号是相同的

软连接
另外一种连接称之为符号连接(SymbolicLink),也叫软连接。软链接文件有类似于Windows的快捷方式。它实是一个特殊的文件,在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。

[root@localhost ~]# ln -s zhl1 zhl3
[root@localhost ~]# ls -li
total 8
201356611 -rw-------. 1 root root 2633 Jul 25 18:45 anaconda-ks.cfg    48425 drwxr-xr-x  2 root root    6 Jul 25 11:00 Desktop 48426 drwxr-xr-x  2 root root    6 Jul 25 11:00 Documents 67358293 drwxr-xr-x  2 root root    6 Jul 25 11:00 Downloads 67358299 drwxr-xr-x  2 root root    6 Jul 25 11:00 Music
134347196 drwxr-xr-x  2 root root    6 Jul 25 11:00 Pictures
201351352 drwxr-xr-x  2 root root    6 Jul 25 11:00 Public
134347195 drwxr-xr-x  2 root root    6 Jul 25 11:00 Templates
201351354 drwxr-xr-x  2 root root    6 Jul 25 11:00 Videos
201366792 -rw-r--r--  1 root root  131 Jul 27 01:58 z
201351350 -rw-r--r--  2 root root    0 Jul 27 02:48 zhl1
201351350 -rw-r--r--  2 root root    0 Jul 27 02:48 zhl2
201366794 lrwxrwxrwx  1 root root    4 Jul 27 02:50 zhl3 -> zhl1使用ls -s命令新建zhl1的软连接文件zhl3
然后查看zhl1与zhl3的inode不同
这里我们先查看zhl1文件,发现zhl1文件是空白的
然后我们通过把/etc/issue文件的内容通过>>追加输出到文件zhl1然后查看各个文件的内容是否有变化。
[root@localhost ~]# cat zhl1
[root@localhost ~]# cat /etc/issue >> zhl1
[root@localhost ~]# cat zhl1\SKernel \r on an \mMage Education Learning Services
[root@localhost ~]# cat zhl2\SKernel \r on an \mMage Education Learning Services[root@localhost ~]# cat zhl3\SKernel \r on an \mMage Education Learning Services
这里我们发现zhl1,zhl2,zhl3文件内容一致。
[root@localhost ~]# rm -rf zhl2
[root@localhost ~]# cat zhl1\SKernel \r on an \mMage Education Learning Services
[root@localhost ~]# cat zhl3\SKernel \r on an \mMage Education Learning Services
尝试删除zhl2文件,结果发现对zhl1,zhl3无影响
[root@localhost ~]# rm -rf zhl3
[root@localhost ~]# cat zhl2\SKernel \r on an \mMage Education Learning Services
[root@localhost ~]# cat zhl1\SKernel \r on an \mMage Education Learning Services
删除zhl3文件,对与zhl1,zhl2文件无影响
我们尝试把软、硬连接的原文件zhl1删除
[root@localhost ~]# rm -rf zhl1
[root@localhost ~]# ls
anaconda-ks.cfg  Documents  Music     Public     Videos  zhl2
Desktop          Downloads  Pictures  Templates  z       zhl3
[root@localhost ~]# cat zhl2\SKernel \r on an \mMage Education Learning Services
[root@localhost ~]# cat zhl3
cat: zhl3: No such file or directory
这里的结果显示当删除原文件zhl1后,硬连接zhl2不受影响,但是符号连接zhl3文件无效。

对照上面的小实验可以得到以下结论:
删除符号连接zhl3,对zhl1,zhl2无影响;
删除硬连接zhl2,对zhl1,zhl3也无影响;
删除原文件zhl1,对硬连接zhl2没有影响,导致符号连接zhl3失效.


inode 工作原理

操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性读取一个"块"(block),每个block由八个连续的sector组成。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,文件数据都储存在"块"中,那么还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode译为"索引节点"。每一个文件都有对应的inode,里面包含了与该文件有关的一些信息。每个存储设备(例如硬盘)或存储设备的分区被格式化为文件系统后,应该有两部份,一部份是inode,另一部份是Block,Block是用来存储数据用的。而inode呢,就是用来存储这些数据的信息,这些信息包括文件大小、属主、归属的用户组、读写权限等。inode为每个文件进行信息索引,所以就有了inode的数值。操作系统根据指令,能通过inode值最快的找到相对应的文件。 每个inode都有一个号码,Linux系统内部不使用文件名,而使用inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的别称。表面上,用户通过文件名,打开文件。实际上,系统内部这个过程分成三步:首先,系统找到这个文件名对应的inode号码;其次,通过inode号码,获取inode信息;最后,根据inode信息,找到文件数据所在的block,读出数据。


转载于:https://blog.51cto.com/zanghl/1831538

Linux系统文件管理以及连接文件和inode简介相关推荐

  1. linux系统下 新建文件夹,使用ln命令在Linux系统中创建连接文件

    导读 在Linux中ln命令用来为文件创建连接,连接类型分为硬连接(Hard Link)和符号连接(Symbolic Link)两种,默认的连接类型是硬连接.如果要创建符号连接必须使用"-s ...

  2. 通过Xshell7连接云服务Linux系统级上传文件

    通过Xshell7连接云服务Linux系统级上传文件 前提准备条件: 1.有一台云服务实例 2.云服务安装了CentOS 7.8 64位系统(根据自己系统环境) 3.记住云服务实例的用户名和密码(忘记 ...

  3. Linux下的32位C程序,linux系统c语言生成.so文件,生成64位可执行文件,在64位系统中运行32位的可执行文件...

    1.linux 系统c语言生成.o文件,---->gcc -m64 -c -fPIC test.c -o test.o 2.linux 系统c语言生成.so文件,----->gcc -sh ...

  4. linux系统怎么取消下载,Linux系统怎么彻底删除文件

    本文整理于网络,仅供阅读参考 Linux系统怎么彻底删除文件 linux系统彻底删除文件方法 linux删除目录很简单,很多人还是习惯用rmdir,不过一旦目录非空,就陷入深深的苦恼之中,现在使用rm ...

  5. linux ftp登录530错误,Linux系统中用ftp连接530错误怎么办

    在前面的文章中我们曾向大家介绍了Win7系统下读卡器盘符不见了的解决办法,不知道大家觉得怎么样呢!现在我们要向大家介绍的就是Linux系统中ftp连接530错误怎么办!下面大家还是跟着我们5636网吧 ...

  6. Linux下pppoe开机自动连接,Linux 系统 PPPoE 宽带连接设置方法

    Linux 系统 PPPoE 宽带连接设置方法 要在Linux下使用PPPOE认证方式,必须安装PPPOE客户端软件.下面说明如何进行安装: 本文以RedHat Linux 6.2为实验平台,其它平台 ...

  7. 如何解压服务器系统,如何解压Linux系统下的zip文件

    如何解压Linux系统下的zip文件 发布时间:2020-08-10 09:28:56 来源:亿速云 阅读:76 作者:Leah 这期内容当中小编将会给大家带来有关如何解压Linux系统下的zip文件 ...

  8. linux 下删除批量文件命令,linux系统中批量删除文件与空文件删除的命令

    linux命令在系统中有两种类型:内置Shell命令和Linux命令.接下来是小编为大家收集的linux系统中批量删除文件与空文件删除的命令,希望能帮到大家. linux系统中批量删除文件与空文件删除 ...

  9. Linux系统中的链接文件

    日志文件系统ext xfs里 1.节点区域 记录的都是文件属性,ls -l file可以看到的内容 ,文件的元数据inode tables 2.数据区域 放的是cat file看到的一切,数据块 ca ...

  10. Linux系统中运行.sh文件的几种方法

    在Linux系统中执行.sh文件的几种方法: 1. cd到.sh文件所在的目录,然后执行./xxx.sh   [前提:该./sh文件要有可执行的权限,chmod u+x xxx.sh]  2. 在任何 ...

最新文章

  1. 假设训练数据集中有10万个词,四元语法需要存储多少词频和多词相邻频率?《动手学深度学习 李沐》 转
  2. 26.Azure备份服务器(下)
  3. 区块链开源实现 hyperledger fabric 概念与原理
  4. C 函数传递指针参数注意事项
  5. Spring中实现监听的方法
  6. 递归和对面对象编程初步
  7. java对列_JAVA实现EXCEL行列号解析(一)——单格解析
  8. java 简介及环境搭建配置,jdk安装
  9. 微软:从“开源是毒瘤”到“我爱 Linux”的 20 年
  10. 产品经理,原型设计之前你要做些什么?
  11. 我在上海对日外贸公司的经历
  12. 虚拟机批量克隆工具_如何使用老毛桃winpe进行克隆磁盘?
  13. 【Linux】 基础入门 全解
  14. java常见正则表达式用法
  15. npm配置vue-cli所遇EACCES权限问题及解决方案
  16. 【FastAPI 学习十二】定时任务篇 (移步博客园或个人网站 无广告,界面清爽整洁)
  17. InDesign 教程如何更改字体和字体大小?
  18. Yolov3没框原因和解决办法
  19. HTML5捕鱼php,html5捕鱼达人 游戏源码
  20. 「IT基础」计算机网络原理课程及其作用

热门文章

  1. YII学习笔记-登录后的session的总结
  2. 数据挖掘 自习笔记 第三章 定性归纳实践(下)
  3. linux 用户与工作组
  4. 三维模型等大长方体剖分算法实现
  5. 基于连接跟踪机制的状态防火墙的设计与实现
  6. DPDK之PMD原理
  7. linux内存寻址解析 (二)
  8. 统计难题 HDU - 1251(字典树)
  9. 数据分析之matplotlib和numpy的应用
  10. 增强型植被指数EVI、ndvi数据、NPP数据、GPP数据、土地利用数据、植被类型数据、降雨量数据