当前位置: 首页 > news >正文

Linux 文件管理

Linux 文件管理

  • 一、链接文件管理
    • 1.1 软链接文件 ln -s
    • 1.2 硬链接文件 ln
    • 1.3 软链接和硬链接的区别
    • 1.4 删除链接文件 rm -f
  • 二、复制移动文件
    • 2.1 复制(拷贝)文件 cp​​​​​​​
    • 2.2 移动文件 mv
  • 三、查看空间使用情况 du、df
    • df -h 显示磁盘空间已满,但 du -sh / 统计的大小与 df 结果不一致,可能是什么原因?如何解决
  • 四、压缩和解压缩
  • 五、文件归档 tar

一、链接文件管理

通过命令 ll 查看 当前目录下所有文件/目录的详细信息

[root@ansible1 ~]# ll
total 8
-rw-------. 1 root root 989 Feb 27 16:19 anaconda-ks.cfg
-rw-r--r--. 1 root root  30 Jul  5 10:57 inventory
1			2 3	   4	 5	6			 71:这部分包括文件类型、所属者权限、所属组权限、其它人权限、控制列表权限
2:文件的 链接数
3:文件所属者,即文件的创建者
4:文件所属组
5:文件的大小, 单位为字节
6:文件的最后一次修改时间
7:文件名/目录名

第一部分的 -rw-r--r--

文件类型 | 文件所属权限 | 文件所属权限 | 其他用户 | 访问控制列表

- rw- r-- r-- .
1 2   3   4   51 :表示文件的类型- 普通文件d 目录l 链接文件c 字符设备文件b 块设备文件p 管道文件s 套接字文件

在Linux中,链接文件(l)分为两种:

  • 软链接文件(Symbolic Link),它也叫符号链接,是一个独立的文件,指向源文件的 “路径字符串”(快捷方式)

  • 硬链接文件(Hard Link),给已有的 inode 新增一个 文件名别名(相当于把原文件重新复制一份)

对比维度软链接(Symbolic Link)硬链接(Hard Link)
本质独立文件,存储源文件的路径(有自己的 inode)inode 的多个文件名别名(共享 inode)
跨文件系统支持(只需路径有效,可跨分区 / 磁盘)不支持(inode 号仅在当前文件系统内唯一)
指向对象支持文件和目录仅支持文件(不能指向目录,避免循环引用)
文件大小仅占用少量空间(存储路径字符串的长度)与源文件大小一致(共享数据,无额外存储)
权限属性权限不影响访问(实际权限由源文件决定)与源文件共享权限(修改任一,全部生效)
删除源文件的影响源文件删除后,软链接变成 “无效链接”(访问时报错)仅删除一个 “别名”,文件数据仍存在(需删除所有硬链接 + 源文件,inode 才释放)

1.1 软链接文件 ln -s

软链接文件也叫符号链接文件(Symbolic Link),它和原文件一样也是一种文件,它与Windows中的快捷方式功能一样如果源文件删除,那么所创建(指向)的软链接文件也会被破坏

当软链接的源文件被删除后,软链接会直接变成无效的 死链接

  1. 软链接本身不会被自动删除(它仍是一个存在的文件),但它存储的 “路径” 会指向一个不存在的目标
  2. 此时软链接的状态被称为 “死链接”,所有对软链接的访问操作都会失败
# 将 /etc/passwd 文件复制到 /root/目录下
[root@bogon ~]# cat /etc/passwd > passwd
[root@bogon ~]# ls
passwd
[root@bogon ~]# ll
total 4
-rw-r--r--. 1 root root 2224 Nov 12 17:06 passwd# 为 /root/passwd 文件创建软链接文件,文件的名称为 passwdlink
[root@bogon ~]# ln -s /root/passwd passwdlink# 查询软链接文件
[root@bogon ~]# ll
total 4
-rw-r--r--. 1 root root 2224 Nov 12 17:06 passwd
lrwxrwxrwx. 1 root root 12 Nov 12 17:07 passwdlink -> /root/passwd# 显示软链接文件对应的文件的内容
[root@bogon ~]# head -n 5 passwdlink
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin# 删除原文件
[root@bogon ~]# rm -f passwd# 查看链接文件已经无效
[root@bogon ~]# ll
total 0
lrwxrwxrwx. 1 root root 12 Nov 12 17:07 passwdlink -> /root/passwd# 当原文件被删除后,软链接文件不能再使用了
[root@bogon ~]# head -3 passwdlink
head: cannot open 'passwdlink' for reading: No such file or directory

1.2 硬链接文件 ln

硬链接文件是相当于把源文件重新复制一份,它有自己的 inode,当移除原文件后,硬链接文件还可以使用

硬链接删除源文件,文件系统会执行以下操作:

  1. 文件名从目录中移除
  2. 索引节点的链接计数减1
  3. 如果链接计数仍大于0(即存在硬链接),则保留索引节点和数据块
  4. 如果链接计数变为0,则释放索引节点和数据块

即使删除了源文件,只要还有硬链接存在,文件的数据仍然可以通过硬链接访问

[root@bogon ~]# touch 1.txt //创建一个名为1.txt的空文件
[root@bogon ~]# ls -il
total 8
34993921 -rw-r--r--. 1 root root    0 Nov 12 17:25 1.txt
34990033 -rw-r--r--. 2 root root 2224 Nov 12 17:18 passwd
34990033 -rw-r--r--. 2 root root 2224 Nov 12 17:18 passwd.hard
34993920 lrwxrwxrwx. 1 root root   12 Nov 12 17:19 passwd.lnk -> /root/passwd[root@bogon ~]# ln -s /root/1.txt 2.txt //创建一个软链接文件
[root@bogon ~]# ls -il
total 8
34993921 -rw-r--r--. 1 root root    0 Nov 12 17:25 1.txt
34993922 lrwxrwxrwx. 1 root root   11 Nov 12 17:25 2.txt -> /root/1.txt
34990033 -rw-r--r--. 2 root root 2224 Nov 12 17:18 passwd
34990033 -rw-r--r--. 2 root root 2224 Nov 12 17:18 passwd.hard
34993920 lrwxrwxrwx. 1 root root   12 Nov 12 17:19 passwd.lnk -> /root/passwd[root@bogon ~]# ln /root/1.txt 3.txt //创建一个硬链接文件
[root@bogon ~]# ls -il
total 8
34993921 -rw-r--r--. 2 root root    0 Nov 12 17:25 1.txt
34993922 lrwxrwxrwx. 1 root root   11 Nov 12 17:32 2.txt -> /root/1.txt
34993921 -rw-r--r--. 2 root root    0 Nov 12 17:25 3.txt
34990033 -rw-r--r--. 2 root root 2224 Nov 12 17:18 passwd
34990033 -rw-r--r--. 2 root root 2224 Nov 12 17:18 passwd.hard
34993920 lrwxrwxrwx. 1 root root   12 Nov 12 17:19 passwd.lnk -> /root/passwd

1.3 软链接和硬链接的区别

  1. 软链接以路径的形式存在,而硬链接是以副本的方式存在,但不占用实际空间(inode 相同)。
  2. 软链接可以跨文件系统,而硬链接不可以。
  3. 软链接可以对一个不存在的文件进行创建,而硬链接只能对同一个文件系统中存在的文件进行创建。
  4. 软链接可以对目录进行链接,而硬链接不允许。
对比维度软链接(Symbolic Link)硬链接(Hard Link)
本质独立文件,存储源文件的路径(有自己的 inode)inode 的多个文件名别名(共享 inode)
跨文件系统支持(只需路径有效,可跨分区 / 磁盘)不支持(inode 号仅在当前文件系统内唯一)
指向对象支持文件和目录仅支持文件(不能指向目录,避免循环引用)
文件大小仅占用少量空间(存储路径字符串的长度)与源文件大小一致(共享数据,无额外存储)
权限属性权限不影响访问(实际权限由源文件决定)与源文件共享权限(修改任一,全部生效)
删除源文件的影响源文件删除后,软链接变成 “无效链接”(访问时报错)仅删除一个 “别名”,文件数据仍存在(需删除所有硬链接 + 源文件,inode 才释放)

1.4 删除链接文件 rm -f

[root@bogon ~]# rm -f 3.txt# 删除前面创建的软链接文件
[root@bogon ~]# rm -f passwdlink
[root@bogon ~]# ls

二、复制移动文件

2.1 复制(拷贝)文件 cp​​​​​​​

选项说明:

-a :在拷贝文件的同时保留链接、文件属性
-d :拷贝时保留链接
-f :在覆盖已经存在的目标路径时不提示
-r :递归拷贝

cp 拷贝文件时同时复制其属性:

  1. 常用命令:cp -a(最全面的拷贝)
    -a 选项表示 “归档模式”,会递归拷贝目录(若拷贝目录),并保留几乎所有文件属性,包括:

    • 权限(如 644、755 等)
    • 所有者和所属组
    • 访问时间和修改时间
    • 链接(保持链接属性而非拷贝内容)
  2. 仅保留基本属性:cp -p
    -p 选项会保留文件的核心属性:

    • 权限
    • 所有者(需要足够权限,如 root)
    • 时间戳(访问时间和修改时间)

但不会递归处理目录(拷贝目录需配合 -r),也不保留链接属性。

  1. 如果需要在不同文件系统间拷贝(如从本地磁盘到 USB 设备),且要保留所有属性,可使用 rsync 命令(需提前安装):
rsync -a 源文件/目录 目标路径

2.2 移动文件 mv

mv 命令可以移动文件或目录,它也具有重命名的功能。

将newdir目录改名为new
[root@bogon ~]# mv newdir new
[root@bogon ~]# ls
file1  file2  file3  filenew  host03  new[root@localhost ~]# ls
anaconda-ks.cfg  Documents  file1  Pictures  Templates
Desktop          Downloads  Music  Public    Videos
[root@localhost ~]# mv file1 file2
[root@localhost ~]# ls
anaconda-ks.cfg  Documents  file2  Pictures  Templates
Desktop          Downloads  Music  Public    Videos
[root@localhost ~]# 

把 /a 目录下 1.txt 改名为 1.c

[root@bogon ~]# ls /a
1.txt  b
[root@bogon ~]# mv /a/1.txt /a/1.c
[root@bogon ~]# ls /a
1.c  b
[root@bogon ~]# ## 4.9查看空间使用情况 du

三、查看空间使用情况 du、df

选项说明:

-a :统计磁盘空间占用情况
-s :只统计每个文件的空间占用情况
-h:人类可读格式的打印尺寸(例如:1K 234M 2G)

  • df:列出文件系统的磁盘空间占用情况
    使用格式为:df [-ahikHTm] [目录或文件名称]

  • du:显示磁盘空间的使用量,默认情况下是以 KB 为单位
    使用格式为:du [-ahskm] 文件或目录

df -h 显示磁盘空间已满,但 du -sh / 统计的大小与 df 结果不一致,可能是什么原因?如何解决

  • du:显示每个文件和目录磁盘使用空间du 从**文件内容**层面统计 “实际被文件占用的磁盘块”)
  • df-h:显示磁盘分区上磁盘分区上可以使用的磁盘空间(df 从**文件系统**层面统计 “已分配的磁盘块”)

原因一:已删除但被进程锁定的文件

当一个文件被 rm 删除后,若仍有进程在打开 / 读写该文件(如日志文件被删除但服务未重启),文件系统不会释放其占用的磁盘空间(因为进程仍持有文件句柄)。此时:

  • df 会继续统计这部分 “已删除但未释放” 的空间(显示为已用);
  • du 不会统计(因为文件的目录项已被删除,无法通过路径访问)。

排查与解决:

  1. 查找被删除但仍被进程占用的文件:lsof | grep deleted(安装lsof:查找所有已经删除但打开的文件)
  2. 释放空间
    • 若进程可重启(如非关键服务):直接重启进程sudo systemctl restart 服务名kill -9 PID),进程退出后会释放文件句柄,空间自动回收
    • 若进程不可重启(如数据库):通过重定向清空文件(无需删除,直接覆盖内容

原因二:挂载点被覆盖(隐藏的文件)

若在一个非空目录下挂载了另一个文件系统(如 mount /dev/sdb1 /data,而 /data 原有文件未删除),挂载后原目录的文件会被隐藏

  • df 统计的是挂载后的文件系统使用情况不包含被隐藏的原文件
  • du -sh / 会统计根目录下所有可见文件,但被挂载点隐藏的原文件不会被统计(因为访问 /data 时实际指向挂载的新文件系统)

排查与解决:

  1. 列出所有挂载点,找到可能的覆盖目录:mount | grep -v ‘^/dev/loop’ # 显示系统中已挂载的文件系统,但排除掉以/dev/loop开头的设备(临时镜像,重点看本地磁盘挂载)

    • -vgrep 的选项,表示 “反向匹配”(即排除符合模式的行,只保留不匹配的行)
    • '^/dev/loop' 是匹配模式,其中 ^ 是正则表达式中的特殊符号,表示 “行的开头”。因此,这个模式的含义是 “匹配所有以 /dev/loop 开头的行”
  2. 卸载挂载点后,原目录的文件会显现,此时用 du 统计

    umount /挂载点  # 如 umount /data
    du -sh /挂载点  # 此时可看到原目录下被隐藏的文件大小
    
  3. 删除原目录下不需要的文件后,重新挂载

rm -rf /挂载点/无用文件
mount /挂载点

四、压缩和解压缩

在Linux中,压缩文件的命令有以下几种:

  • zip,对应的解压命令为 unzip

  • gzip,对应解压命令为 gunzip

  • bzip2,它对应的解压命令为 bunzip2

五、文件归档 tar

tar 通常用于将多个文件和目录打包成一个归档文件

tar [options] -f archive.tar [files...]
# -f archive.tar:指定归档文件的名称

选项说明:

-f:等价于 --file=ARCHIVE 选项,作用是指定归档文件压缩文件),此选项必须放到所有选项的最后,后面必须紧跟文件名称
-c:创建一个新的归档文件(压缩文件)
-t:以列表的方式显示归档文件(压缩文件)中的内容
-z:使用 gzip 压缩归档文件
-j:使用 bzip2 压缩归档文件
-J:使用 xz 压缩归档文件
-x:解压归档文件
-p:保留文件的原始权限(解压时)
-r:向现有归档文件中追加文件
-u:仅追加比归档文件中已有文件更新的文件
-v:等价于 --verbose,显示详细操作过程
-d:找到归档文件中与文件系统不同步的差异
-A:将一个 .tar 文件追加到另一个 .tar 文件中
-C < directory > :切换到指定目录进行操作

  1. 创建归档文件( -c
  2. 解压归档文件( -x
  3. 压缩归档文件( -c、-z/j/J
  4. 列出归档文件中的内容( -t
  5. 追加文件到已存在的归档中( -r )
# 1、创建归档文件:将文件 file1、file2 和 directory 打包到一个名为 archive.tar 的归档文件中
tar -cvf archive.tar file1 file2 directory
-c: 创建新的归档文件
-v: 显示详细输出,列出被添加到归档中的文件
-f: 指定归档文件的名称# 2、解压归档文件:解压名为 archive.tar 的归档文件,还原其中包含的文件和目录
tar -xvf archive.tar
-x: 解压归档文件
-v: 显示详细输出,列出被解压的文件
-f: 指定要解压的归档文件的名称# 3、压缩归档文件:将名为 directory 的目录打包成一个归档文件,然后使用 gzip 进行压缩,生成名为 archive.tar.gz 的文件
tar -czvf archive.tar.gz directory
-c: 创建新的归档文件
-z: 使用 gzip 压缩归档文件
-v: 显示详细输出,列出被添加到归档中的文件
-f: 指定归档文件的名称# 4、列出归档文件中的内容:列出名为 archive.tar 的归档文件中包含的所有文件和目录
tar -tvf archive.tar
-t: 列出归档文件中的内容
-v: 显示详细输出,列出归档文件中的所有文件和目录
-f: 指定要列出内容的归档文件的名称# 5、追加文件到已存在的归档中:将名为 newfile 的文件添加到已存在的名为 archive.tar 的归档文件中
tar -rvf archive.tar newfile
-r: 向已存在的归档中追加文件
-v: 显示详细输出,列出被添加到归档中的文件
-f: 指定已存在的归档文件的名称# 6、创建一个经过 gzip 压缩的归档文件:打包 directory 目录下的所有文件和子目录,并使用 gzip 压缩,生成名为 archive.tar.gz 的归档文件
tar -zcvf archive.tar.gz directory
-z: 表示要使用 gzip 进行压缩。
-c: 表示创建新的归档文件。
-v: 表示详细输出,列出被添加到归档中的文件。
-f archive.tar.gz: 指定归档文件的名称为 archive.tar.gz。# 7、解压一个已经被 gzip 压缩的归档文件:解压 example.tar.gz 文件,并在当前目录下恢复其中包含的文件和目录
tar -zxvf example.tar.gz
-z: 表示要使用 gzip 解压归档文件。
-x: 表示解压操作。
-v: 表示详细输出,列出被解压的文件。
-f example.tar.gz: 指定要解压的归档文件的名称为 example.tar.gz

文章转载自:

http://Z9V3hVw5.bpmdx.cn
http://EmJfwXSJ.bpmdx.cn
http://8jTCeVaE.bpmdx.cn
http://UhFV0v2C.bpmdx.cn
http://wdoD3lqt.bpmdx.cn
http://dt2DOheN.bpmdx.cn
http://AeYiI8es.bpmdx.cn
http://EojdsRNO.bpmdx.cn
http://Oxa5tjFe.bpmdx.cn
http://pwOyyX0t.bpmdx.cn
http://EUgmAqze.bpmdx.cn
http://mF6eKcA1.bpmdx.cn
http://svyDNLQ9.bpmdx.cn
http://TVFg67Rm.bpmdx.cn
http://M20TfxAa.bpmdx.cn
http://CqRoQVav.bpmdx.cn
http://PCgQbVbf.bpmdx.cn
http://6APU7051.bpmdx.cn
http://8yLLtbNr.bpmdx.cn
http://xomgsmuY.bpmdx.cn
http://uzAloNUf.bpmdx.cn
http://tLgazXJV.bpmdx.cn
http://Ua0zZt9j.bpmdx.cn
http://bxnVkADX.bpmdx.cn
http://Y72GdYm9.bpmdx.cn
http://5SnzMzgT.bpmdx.cn
http://MwvkqvTD.bpmdx.cn
http://0B50lEuj.bpmdx.cn
http://hCg1OOzK.bpmdx.cn
http://ve3LMicI.bpmdx.cn
http://www.dtcms.com/a/369367.html

相关文章:

  • Hive实战:如何优雅地为已存在表添加二级分区?(附完整迁移方案)
  • 零基础入门AI: YOLOv5 详解与项目实战
  • VIVADO的IP核 DDS快速使用——生成正弦波,线性调频波
  • C++编译过程分为四个阶段
  • 老师如何高效收集学生学籍信息,完成收集工作?
  • 中国移动浪潮云电脑CD1000-系统全分区备份包-可瑞芯微工具刷机-可救砖
  • VAE(变分自动编码器)技术解析
  • 毕业项目推荐:83-基于yolov8/yolov5/yolo11的农作物杂草检测识别系统(Python+卷积神经网络)
  • 植物翻译官:基于 EfficientNetB7 的植物性状预测
  • Sunlord破解AI服务器供电难题!揭秘高效、小型化电感黑科技
  • OpenCV: cv::warpAffine()逆仿射变换详解
  • 复合机器人能否更换末端执行器?
  • python使用transformer库推理
  • 【开题答辩全过程】以 智能商品数据分析系统为例,包含答辩的问题和答案
  • 终结 在我电脑上明明是好的!我们团队的协作秘诀
  • 神经网络|(十九)概率论基础知识-伽马函数·下
  • 基于STM32单片机的水位浑浊度检测设计
  • 个人健康管理系统设计与实现
  • MySQL集群——高可用架构
  • 记录自己看过的电子书方法
  • Typer 命令行工具使用示例
  • 绿算技术与清智图灵签署战略合作协议
  • AI配音工具哪个好用?7款热门配音软件推荐指南!
  • 【关系型数据库SQL】MySql数据库基础学习(一)
  • 软考刷题真题app,软考真题题库推荐
  • 25高教社杯数模国赛【B题高质量成品论文+无盲点解析】第一弹
  • CAD【xplode】和【explode】功能的区别
  • MOSFET SOA曲线评估
  • 《计算机网络安全》实验报告一 现代网络安全挑战 拒绝服务与分布式拒绝服务攻击的演变与防御策略(3)
  • c++ 压缩与解压缩