移动和重命名文件
mv命令可以实现文件或目录的移动或改名
同一分区移动数据,速度快:数据位置未变化
不同分区移动数据,速度相对较慢,数据位置发生了变化
格式:
mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...
常用选项:
-i 交互式
-f 强制
-b 目标存在,覆盖前先备份
利用rename可以批量修改文件名
格式:
rename [options] <expression> <replacement> <file>...
范例:
[root@localhost ~]# ls
file10.conf file1.conf file2.conf file3.conf file4.conf file5.conf file6.conf file7.conf file8.conf file9.conf
[root@localhost ~]# rename conf conf.bak f*
[root@localhost ~]# ls
file10.conf.bak file1.conf.bak file2.conf.bak file3.conf.bak file4.conf.bak file5.conf.bak file6.conf.bak file7.conf.bak file8.conf.bak file9.conf.bak
删除文件
使用rm命令可以删除文件
格式:
rm [OPTION]... FILE...
常用选项:
-i 交互式
-f 强制删除
-r 递归
--no-preserve-root 删除/
范例:
[root@localhost ~]# rm -rf /*
[root@localhost ~]# rm -rf .[^.]*
rm虽然删除了文件,但是被删除的文件仍然可能被恢复,在安全较高的要求下,可以使用shred安全删除文件
shred格式:
shred [OPTION]... FILE...
常见选项:
-z 最后一次覆盖添加0,以隐藏覆盖操作.
-v 能够显示操作进度
-u 覆盖和截断并删除文件
-n # 指定覆盖文件内容次数(默认是三次)
示例:
[root@localhost ~]# shred -zvun 5 passwd
shred: passwd: pass 1/6 (random)...
shred: passwd: pass 2/6 (ffffff)...
shred: passwd: pass 3/6 (random)...
shred: passwd: pass 4/6 (000000)...
shred: passwd: pass 5/6 (random)...
shred: passwd: pass 6/6 (000000)...
shred: passwd: removing
shred: passwd: renamed to 000000
shred: 000000: renamed to 00000
shred: 00000: renamed to 0000
shred: 0000: renamed to 000
shred: 000: renamed to 00
shred: 00: renamed to 0
shred: passwd: removed
目录操作
显示目录树tree
常见选项:
-d : 只显示目录
-L level : 指定显示的层级数目
-P pattern : 只显示由指定wild-card pattern匹配到的路径
· 创建目录 mkdir
常见选项:
-p : 存在于不报错,且可自动创建所需各目录
-v : 显示详细信息
-m MODE : 创建目录时指定权限
删除目录 rmdir
常见选项:
-p : 递归删除父目录
-v : 显示详细信息
注意:rmdir 只能删除空目录
查看磁盘空间以及节点
df -ih // -i 查看节点
示例:
[root@localhost ~]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
devtmpfs 222782 424 222358 1% /dev
tmpfs 232878 2 232876 1% /dev/shm
tmpfs 232878 829 232049 1% /run
tmpfs 232878 16 232862 1% /sys/fs/cgroup
/dev/sda3 9283072 153738 9129334 2% /
/dev/sda1 153600 341 153259 1% /boot
tmpfs 232878 1 232877 1% /run/user/0
[root@localhost ~]# df -ih
Filesystem Inodes IUsed IFree IUse% Mounted on
devtmpfs 218K 424 218K 1% /dev
tmpfs 228K 2 228K 1% /dev/shm
tmpfs 228K 829 227K 1% /run
tmpfs 228K 16 228K 1% /sys/fs/cgroup
/dev/sda3 8.9M 151K 8.8M 2% /
/dev/sda1 150K 341 150K 1% /boot
tmpfs 228K 1 228K 1% /run/user/0
Inode节点
一、inode的定义与作用
- 定义:inode是“index node”的缩写,中文译名为索引节点或i节点。它是文件系统中的一种数据结构,用于存储文件的元数据(metadata),即除了文件名以外的所有文件信息。
- 作用:inode节点主要用于存放文件和目录的基本信息,如文件的字节数、文件拥有者的User ID、文件的Group ID、文件的时间戳(ctime、mtime、atime)、链接数(有多少文件名指向这个inode)以及文件数据块(block)的位置等。这些信息使得系统能够高效地管理和访问文件。
二、inode的结构与内容
- 结构:inode是文件系统的核心数据结构之一,它并不直接存储文件名,而是与文件名通过目录项(dentry)进行关联。每个inode都有一个唯一的编号(inode number),系统通过这个编号来识别不同的文件。
- 内容:inode包含的主要信息有文件的类型(普通文件、目录、字符设备等)、大小、创建和修改时间、权限、链接数(有多少文件名指向这个inode)、数据块位置等。
三、inode与文件名的关系
- 在Linux系统中,文件名和inode号码是“一一对应”的关系(在大多数情况下)。然而,Linux也允许多个文件名指向同一个inode号码,这种情况被称为“硬链接”。硬链接使得一个文件可以拥有多个有效路径名,从而提高了文件的灵活性和安全性。
- 另一方面,文件名只是inode号码的“别名”或“绰号”,系统内部实际上是通过inode号码来识别文件的。因此,即使文件名被删除或更改,只要inode号码和文件数据仍然存在,文件就可以被访问和恢复。
四、inode的消耗与限制
- 消耗:inode也会消耗硬盘空间。在硬盘格式化时,操作系统会自动将硬盘分成两个区域:一个是数据区(用于存放文件数据),另一个是inode区(用于存放inode信息)。每个inode节点的大小通常是固定的(如128字节或256字节),而inode节点的总数在格式化时就已给定。
- 限制:由于inode节点的总数是有限的,因此有可能出现inode已经用光但硬盘还未存满的情况。这时就无法在硬盘上创建新文件或目录了。为了避免这种情况的发生,可以通过调整文件系统格式化时的inode设置来合理分配inode节点的数量。
五、inode的查看与管理
- 查看:可以使用
ls -i
命令查看某个文件或目录的inode号码和文件名。此外还可以使用stat
命令查看文件的详细inode信息。- 管理:虽然用户通常不需要直接管理inode节点,但在一些特殊情况下(如inode节点耗尽时)可能需要通过调整文件系统参数或清理无用的文件来释放inode节点。
硬链接和软连接
一、ln命令的基本语法
bash
ln [选项]... [-T] 目标 链接名
ln [选项]... 目标... 目录
ln [选项]... 目标... 链接目录
其中,目标是被链接的文件或目录的路径名,链接名是新链接的名称(可选,如果不指定,则默认使用目标的文件名作为链接名)。
二、硬链接(Hard Link)
1. 定义
硬链接是指多个文件名指向同一个物理存储位置的文件副本。换句话说,它们共享相同的inode(索引节点)和数据块。
2. 特点
硬链接与原文件不可分割,删除原文件或任何一个硬链接都不会影响其他硬链接的访问。
只有当所有关联到该inode的引用都被删除时,文件才会被真正删除。
硬链接不能跨文件系统创建,也不能用于目录的链接。
硬链接的数量通常受到系统限制(如inode表的大小)。
3. 示例
bash
ln original.txt hard_link.txt
这个命令会创建一个名为hard_link.txt的硬链接,指向original.txt。此时,对original.txt或hard_link.txt的修改都会影响到另一个文件,因为它们实际上是同一个文件的两种访问方式。
三、软链接(Symbolic Link)
1. 定义
软链接是一个特殊类型的文件,其中包含了指向另一个文件或目录的路径信息。它类似于Windows中的快捷方式或Mac OS中的别名。
2. 特点
软链接拥有自己的inode,并且其内容是目标文件的路径名。
软链接可以跨文件系统创建,也可以指向目录。
如果删除了软链接指向的原始文件,软链接将失效(即无法访问原始文件),但软链接本身仍然存在。
软链接的数量只受限于磁盘空间。
3. 示例
bash
ln -s original.txt soft_link.txt
这个命令会创建一个名为soft_link.txt的软链接,指向original.txt。此时,通过soft_link.txt可以访问original.txt的内容,但如果删除了original.txt,则soft_link.txt将无法访问任何内容(除非重新创建或更改soft_link.txt的指向)。
四、常用选项
-s:创建软链接。
-f:强制执行,覆盖现有文件。
-i:如果文件存在,提示用户确认是否覆盖文件。
-n:不创建链接,仅显示将要创建的链接信息(通常与-v选项一起使用)。
-v:详细模式,显示链接创建的过程。
硬链接和软链接的区别
一、本质定义
- 硬链接:硬链接是同一个文件的不同入口点或别名。多个文件名可以指向同一个文件的物理数据块(inode),这些文件名可以在同一目录或不同目录中。硬链接和源文件是同一文件的不同表现形式,它们共享相同的inode号。
- 软链接:软链接(符号链接)是一种特殊类型的文件,它包含了另一个文件的路径名。当访问软链接时,系统会读取链接文件中存储的路径,并跳转到该路径指向的文件或目录。软链接可以链接到任意文件或目录,包括不同文件系统的文件。
二、工作原理
- 硬链接:硬链接直接通过inode号访问文件数据,不需要通过文件名解析路径。因此,删除或重命名文件的一个硬链接不会影响其他硬链接的访问。
- 软链接:软链接通过存储的路径名访问目标文件或目录。如果目标文件被删除或移动,软链接将失效,成为“死链接”。
三、对源文件的影响
- 硬链接:由于硬链接和源文件是同一文件的多个入口点,删除源文件(即删除所有硬链接中的一个)并不会影响其他硬链接的访问,也不会删除文件的数据。只有当最后一个硬链接被删除时,文件的数据才会被真正删除。
- 软链接:删除软链接所指向的源文件后,软链接将失效。虽然软链接文件本身仍然存在,但无法访问到原文件的内容。
四、可链接的对象
- 硬链接:只能对文件创建硬链接,不能对目录创建硬链接(在某些操作系统或文件系统中可能有所不同,但大多数情况下是如此)。
- 软链接:可以对文件或目录创建软链接,且可以跨越不同的文件系统。
五、其他区别
- 空间占用:硬链接不占用额外的磁盘空间,因为它们是同一文件的不同入口点。而软链接作为一个特殊文件,需要占用少量的磁盘空间来存储路径名。
- 文件类型:在Linux中,使用
ls -l
命令查看文件属性时,硬链接与普通文件在显示上没有区别(除了链接数可能不同),而软链接则会以l
开头,并显示链接到的目标路径。