IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 三、Linux文件管理 -> 正文阅读

[系统运维]三、Linux文件管理

文件管理

一、Linux下的文件系统

1.1 Windows和Linux组织文件区别

操作系统方式
Windows:以多根的方式组织文件 C:\ D:\ E:\
Linux:以单根的方式组织文件 /

1.2 Linux下目录介绍

在这里插入图片描述

目录用处
/bin-> /usr/bin普通用户命令目录,如/bin/ls,RHEL7淘汰
/sbin -> /usr/sbin管理员命令目录,只有超级管理员可以执行 ,如/sbin/service,RHEL7淘汰
/dev设备文件,如/dev/sda , /dev/sr0 光驱设备, /dev/null
注意,该目录下的文件没有办法直接使用,必须先挂载
/rootroot用户的家目录,超级管理员登录后会自动切换到该目录
/home普通用户家目录,用户登录后会自动切换到该目录
/proc虚拟的文件系统,反应出来的是内核,进程信息或实时状态
/sys虚拟的文件系统,类同proc,主要保存于内存相关的信息
/usr系统文件目录,相当于C:\Windows
/usr/local 软件安装的目录,相当于C:\Program Files
/usr/bin 普通用户使用的应用程序
/usr/sbin 管理员使用的应用程序
/usr/lib 库文件Glibc
/usr/lib64 库文件Glibc
/boot存放系统启动相关的文件,例如kernel,grub(引导转载程序)
/etc各个软件的配置文件
/lib -> /usr/lib库文件Glibc ,RHEL7淘汰
/lib64 -> /usr/lib64库文件Glibc,RHEL7淘汰
/tmp临时文件(所有用户都可以访问和写入,进程产生的临时文件)
/var存档的是一些变化文件,比如数据库,日志,邮件,网站文件…
/media挂载目录,早期Linux挂载目录,用于挂载光盘以及软盘媒体设备
/mnt挂载目录,手工挂载设备的挂载点,用来挂载额外的设备,如 U 盘、移动硬盘和其他操作系统的分区
/opt第三方软件目录,这个目录是放置和安装其他软件的位置,手工安装的源码包软件都可以安装到这个目录中,但也有人习惯把软件放到 /usr/local/ 目录中。
/run正在运行的软件的程序目录

1.3 Linux下重要的配置/设备文件(面试重点)

  • /etc/rc.local:保存的是?户?定义开机引导启动的程序;
  • /etc/resolv.conf:域名解析,是DNS客户机的配置文件,用于设置DNS服务器的IP地址及DNS域名,还包含了主机的域名搜索顺序
  • /etc/hostname:存放主机名
  • /etc/hosts:本地域名解析文件
  • /etc/motd:开机自动打印文本内容
  • /etc/os-release:查看本机的版本信息
  • /proc/cpuinfo:处理器相关信息
  • /proc/meminfo:内存相关信息
  • /var/log/message:包括整体系统信息,其中也包含系统启动期间的日志
  • /dev/tty:终端文件
  • /dev/null:黑洞文件
  • /etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行,并从/etc/profile.d目录的配置文件中收集shell的设置;
  • /etc/bashrc:为每一个运行bash shell的用户执行此文件,当bash shell被打开时,该文件被读取
  • ~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,它设置一些环境变量,执行用户的.bashrc文件;
  • ~/.bashrc:该文件包含用于你的bash shellbash信息,当登录时以及每次打开新的shell时,该文件被读取;
  • ~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件;

1.4 Linux下文件命名规则

  • 理论上除了字符/之外,所有的字符都可以使用,但是,在目录名或文件名中,不建议使用特殊字符
  • linux严格区分大小写
  • 如果必须对文件名进行分割,建议使用_
  • 目录名或文件名的长度不能超过 255 个字符
  • 在Linux系统中,文件扩展名的用途为了使运维人员更好的区分不同的文件类型(后缀名本身不影响文件类型)
  • 文件名称一定要见名知意

1.5 文件定位路径

  • 绝对路径:从/开始的路径
  • 相对路径:从当前路径开始
    • 示例可查看上一节的cd命令

二、文件的属性

2.1 文件类型

2.1.1 文件类型查看(file/ll)

  • Linux下的文件类型并不由后缀名决定,后缀名仅仅是便于运维人员区别
  • 查看文件类型方式一:file 文件或目录名
[root@server1 ~]# file /dev/sda
/dev/sda: block special
[root@server1 ~]# file /dev/tty1
/dev/tty1: character special
root@server1 ~]# file /etc/hosts
/etc/hosts: ASCII text
[root@server1 ~]# file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=aaf05615b6c91d3cbb076af81aeff531c5d7dfd9, stripped
[root@server1 ~]# file dbt3_s1.sql 
dbt3_s1.sql: ASCII text, with very long lines
[root@server1 ~]# file dbt3_s1.tar.gz 
dbt3_s1.tar.gz: gzip compressed data, from Unix, last modified: Sat Aug  1 10:52:27 2015
[root@server1 ~]# file /
/: directory
  • 查看文件类型方式二:ls -l 文件或目录名 看第一个字符

在这里插入图片描述

2.1.2 文件类型对应字母说明

文件类型对应字符解释
-普通文件(文本文档,二进制文件,压缩文件,电影,图片。。。)
d (dictory)目录文件(蓝色)
b (block)块设备文件(块设备)存储设备硬盘,U盘。例如:/dev/sda,/dev/sda1
c (char)字符设备文件(字符设备)打印机,终端。例如/dev/tty1,/dev/zero
s (socket)套接字文件
p (pipe)管道文件
l (link)链接文件(淡蓝色)

2.2 文件时间

2.2.1 Linux下文件的三种时间

  • linux文件时间有3种状态
简名全名中文名含义
atimeaccess time访问时间文件中的数据最后被访问的时间
mtimemodify time修改时间文件内容被修改的最后时间
ctimechange time变化时间文件的元数据发生变化。比如权限,所有者等
  • ll [--full-time#详细时间]命令默认显示的是修改时间mtime

2.2.2 如何查看(stat 文件名)

  • 时间戳:1970年1月1日0点0分0秒到现在的秒数
[root@server1 ~]# stat anaconda-ks.cfg 
  File: ‘anaconda-ks.cfg’
  Size: 1246      	Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d	Inode: 33574978    Links: 1
Access: (0600/-rw-------)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2022-05-15 14:41:19.900999772 +0800
Modify: 2022-05-15 14:41:19.900999772 +0800
Change: 2022-05-15 14:41:19.900999772 +0800
 Birth: -


  文件:‘anaconda-ks.cfg’
  大小:1246 块:8 IO 块:4096 普通文件 
设备:fd00h/64768d Inode:33574978 硬链接:1 
权限:(0600/-rw-------) Uid:( 0/ root) Gid:( 0/ root) 
最近访问:2022-05-15 14:41:19.900999772 +0800 atime查看内容 
最近更改:2022-05-15 14:41:19.900999772 +0800 mtime修改内容 
最近改动:2022-05-15 14:41:19.900999772 +0800 ctime文件属性,比如权限 
创建时间:- 

2.2.3 如何修改三种时间

  • 参见下文 3.1.2 touch命令的参数

2.3 文件inode与链接数

2.3.1 inode介绍(等到磁盘管理章节还会细讲)

  • 格式化一块硬盘后会分文三个部分:
    • 超级块(superblock):会存放文件系统filesystem的整体信息,包括inode/block的总量、使用量、剩余量, 以及文件系统的格式与相关信息等
    • 索引节点(inode)
      • 记录文件的属性,如文件的权限,大小,修改时间,所有者等等。
      • 一个文件占用一个inode,同时记录此文件的数据所在的block 号码。
      • 默认一个inode表格128字节一个block记录消耗4B,记录满了后会新建inode用于扩展。
    • 数据块(block):真正用于存放数据的地方
  • 如果我要查看file1文件内容,系统并不是按照文件名去查找,而是根据inode去查找。
    • 具体流程:打开file1–>查看inode–>找到inode对应的数据块–>读取

2.3.2 查看inode号

# 查看文件的inode
[root@server1 tmp]# ll -i
总用量 0
16784325 -rw-r--r-- 1 root root 0 821 12:11 file1

# 查看文件系统的inode所占空间大小
[root@server1 tmp]# df -ih
文件系统                Inode 已用(I) 可用(I) 已用(I)% 挂载点
devtmpfs                 225K     399    225K       1% /dev
tmpfs                    228K       1    228K       1% /dev/shm
tmpfs                    228K     743    227K       1% /run
tmpfs                    228K      16    228K       1% /sys/fs/cgroup
/dev/mapper/centos-root  8.5M     39K    8.5M       1% /
/dev/sda1                512K     334    512K       1% /boot
tmpfs                    228K       1    228K       1% /run/user/0

2.3.3 硬链接

  • 硬链接hard link,称inode相同的两个文件互为硬链接

    • 本质:硬链接实际上是指向原文件inode的指针,每添加一个硬链接,该文件的inode连接数就会增加1
  • 特点(面试高频)

    • 不论是修改源文件,还是修改硬链接文件,另一个文件中的数据都会发生改变。
      • 因为查找文件是通过inode号找到数据块,所以互为硬链接的两个文件本质上是同一个文件
    • 不论是删除源文件,还是删除硬链接文件,只要还有一个文件存在,这个文件都可以被访问
      • 即删除一个文件,不会影响其他硬链接文件;且只有当该文件的inode连接数为0时,才算彻底将它删除
    • 硬链接不会建立新的 inode 信息,也不会更改 inode 的总数。
    • 硬链接不能跨文件系统(分区)建立,因为在不同的文件系统中,inode 号是重新计算的
    • 硬链接不能链接目录(否则可能会打破文件系统目录的有向无环图结构,可能创建目录循环)
  • 创建硬链接

    • 语法:ln [选项] file1 hardlink_name 创建file1的硬链接
  • 示例

[root@server1 tmp]# ln file1 h_file1
[root@server1 tmp]# ll -i
总用量 0
16784325 -rw-r--r-- 2 root root 0 8月  21 12:11 file1
16784325 -rw-r--r-- 2 root root 0 8月  21 12:11 h_file1

2.3.4 软链接

  • 软链接symbolic link,也称为符号链接

    • 概述:仅仅包含所链接文件的路径名,因此能链接目录文件,也可以跨越文件系统进行链接。但是,当原始文件被删除后,链接文件也将失效,从这一点上来说与Windows系统中的“快捷方式”具有一样的性质
    • 实质:一个保存源文件名和inode号的新文件
  • 查找文件流程:

    • 打开软链接–>找到链接文件block中存储的源文件inode–>找到inode对应的数据块–>读取
  • 特点(面试高频)

    • 不论是修改源文件(check),还是修改软链接文件(check-soft),另一个文件中的数据都会发生改变

    • 删除软链接文件,源文件不受影响。而删除原文件,软链接文件将找不到实际的数据,从而显示文件不存在

    • 软链接会新建自己的 inode 信息和 block,只是在 block 中不存储实际文件数据,而存储的是源文件的文件名及inode号

    • 软链接可以链接目录

    • 软链接可以跨分区

    • 软连接与源文件不是同一个文件

  • 创建软链接

    • 语法:ln -s file1 link_name 创建file1的软链接
# 创建
[root@server1 tmp]# touch file1
[root@server1 tmp]# ln -s file1 sl_file1
[root@server1 tmp]# ll -i
#总用量 0
16784325 -rw-r--r-- 1 root root 0 8月  21 12:11 file1  # 发现链接数不变,inode不一致
17184545 lrwxrwxrwx 1 root root 5 8月  21 12:16 sl_file1 -> file1

# 删除
[root@server1 tmp]# unlink sl_file1 
[root@server1 tmp]# ls
file1

2.4 文件大小

  • 即文件所占磁盘的空间大小
  • 查看方式一:通过ll [-h]查看

在这里插入图片描述

  • 查看方式二:通过stat命令查看

在这里插入图片描述

  • 后续还会有统计文件字节数wcdu等方式

2.5 文件权限(参看下一章用户与权限管理部分)

三、文件的增删改查

3.1 创建相关

3.1.1mkdir命令

  • 语法: mkdir [选项] dirname

  • 功能:make directory,在当前目录下创建一个名为 “dirname”的目录

  • 常用选项:

    • -p:递归创建文件夹,例如mkdir -p /a/b/c/d,其中/a、/a/b、/a/b/c可不存在
    • -v:打印创建过程提示信息
  • 示例

# mkdir dir1  #当前目录下创建目录dir1
# mkdir /home/dir2 /tmp/dir3 #不同路径下同时创建多个目录
# mkdir /home/{dir4,dir5}  #同一路径下同时创建多个目录
# mkdir -v /home/{dir6,dir7} # 显示操作的消息
# mkdir -pv /home/dir8/111/22 # 创建目录和其所有父层目录
# mkdir -pv /home/{abc/{dir1,111},efg}
  • 常见报错
[root@server1 ~]# mkdir /usr/local/nginx/conf
mkdir: 无法创建目录"/usr/local/nginx/conf": 没有那个文件或目录

# 解决方案:使用-p选项,同时创建多级目录
[root@server1 ~]# mkdir -p /usr/local/nginx/conf

3.1.2 touch命令

  • 语法:touch [选项] 文件名1 文件名2 … 文件名n
  • 功能:新建一个不存在的文件或更改文档或目录的日期时间
  • 常用选项:
参数说明
-a
–time=atime
–time=access
–time=use
只更改存取时间。没有指定时间字符串默认为当前时间。atime和ctime改变
-m
–time=mtime
–time=modify
只更改变动时间。没有指定时间字符串默认为当前时间 。mtime和ctime改变
-d 使用指定的日期时间,而非现在的时间,默认创建文件就是当前时间。atime和mtime改变
-f此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题
-c–no-create不建立任何文档
-r把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同
-t使用 [[CC]YY]MMDDhhmm[.ss] 世纪年月日分时秒方式的时间戳来指定创建文件的时间
也可以改变已存在文件的时间(atime和mtime改变)
  • 示例一:创建文件
# touch file1  # 无则创建,有则修改时间
# touch file2 file3
# touch /home/file4
# touch file{a..d}
# touch file{e,f}
  • 示例二:修改时间
#创建文件时,使用指定日期时间而不是默认当前时间
[root@server1 test]# touch -d "2022-02-02 11:11:11" file1
# atime和mtime改变了
[root@server1 test]# stat file1 
  File: ‘file1’
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d	Inode: 34146683    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2022-02-02 11:11:11.000000000 +0800			
Modify: 2022-02-02 11:11:11.000000000 +0800			
Change: 2022-05-15 18:26:37.783999995 +0800			
 Birth: -
[root@server1 test]# ll
total 0
-rw-r--r-- 1 root root 0 Feb  2 11:11 file1

# 使用-a参数改变访问时间:
[root@server1 test]# touch -a file1 
# atime和ctime改变了
[root@server1 test]# stat file1         
  File: ‘file1’
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d	Inode: 34146683    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2022-05-15 18:28:03.068999985 +0800
Modify: 2022-02-02 11:11:11.000000000 +0800
Change: 2022-05-15 18:28:03.068999985 +0800
 Birth: -


# 使用-m参数改变Modify时间:
[root@server1 test]# touch -m file1 
# mtime和ctime改变了
[root@server1 test]# stat file1 
  File: ‘file1’
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d	Inode: 34146683    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2022-05-15 18:28:03.068999985 +0800
Modify: 2022-05-15 18:29:14.646999976 +0800
Change: 2022-05-15 18:29:14.646999976 +0800
 Birth: -

# -t参数指定时间戳:
[root@server1 test]# touch -t 202211111111.11 file1
# atime和mtime改变了
[root@server1 test]# stat file1 
  File: ‘file1’
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d	Inode: 34146683    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2022-11-11 11:11:11.000000000 +0800
Modify: 2022-11-11 11:11:11.000000000 +0800
Change: 2022-05-15 18:30:04.822999970 +0800
 Birth: -

3.2 删除相关

3.2.1 rmdir命令

  • 语法: rmdir [-p] dirName
  • 功能:删除空目录,非空则必须先清空
  • rmdir是一个与mkdir相对应的命令。 mkdir是建立目录,而rmdir是删除目录。参数同mkdir
  • 示例
# rmdir dir1  #当前目录下删除空目录dir1
# rmdir /home/dir2 /tmp/dir3 #不同路径下同时删除多个空目录
# rmdir /home/{dir4,dir5}  #同一路径下同时删除多个空目录
# rmdir -v /home/{dir6,dir7} # 显示操作的消息
# rmdir -pv /home/dir8/111/22 # 删除目录和其所有父层目录(常常失败,因为父级目录非空)

3.2.2rm命令

  • 语法: rm [选项] dirName/filename

  • 功能:可以同时删除文件或目录

  • 常用选项:

    • rm -rf 即使文件属性为只读(即写保护),亦直接删除,强制递归删除,删库跑路的指针,慎用

    • rm -i 删除前逐一询问确认

    • rm -r 删除目录及其下所有文件,递归删除文件

  • 示例

# rm -rf file1  #删除文件file1
# rm -rf dir1 #删除目录dir1
# rm -rf file{a..d} #删除文件filea,fileb,filec,filed
# rm -rf *.cpp #删除以.cpp结尾的文件
# rm -rf file* #删除以file开头的文件

选项说明:
-r :针对文件夹,代表递归删除,先把目录下的所有文件删除,然后在删除文件夹
-f :强制删除,不提示
*  :表示所有通配符的一种

3.3 移动相关

3.3.1 cp命令

  • 语法:cp [选项] 源文件或目录 目标文件或目录
  • 功能:复制文件或目录
  • 说明:cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息。
  • 常用选项:
参数说明
-f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
-i 或 --interactive覆盖文件之前先询问用户
-r递归处理,将指定目录下的文件与子目录一并处理
若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理
-R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理
-v显示操作过程
  • 示例
# cp -v file01.txt /home/dir01/ #本目录下的file01.txt复制到/home/dir01/
# cp readme.txt /tmp/readme.txt.bak #复制后重命名
# cp -r /home/ /tmp/ 把home目录连通其内部的文件统一复制到/tmp目录下

3.3.2 mv命令

  • 语法: mv file1 file2
  • 功能:用于移动文件或改名
  • 示例
# mv file1 /home/dir3  # 将file1移动到/home/dir3
# mv file2 /home/dir3/file20 # 将file2移动到/home/dir3,并且改名 file20
# mv file3 file30  # 将file3改名为file30

3.4 查看文件内容相关

3.4.1 cat命令

  • 语法:cat [选项] filename
  • 功能:正序输出文件的内容
  • 示例
#cat file1

#cat -n file1

#cat file1 file2 > file3 #将file1,file2合并到file3中

选项说明:
-n:显示行号

3.4.2 tac命令

  • 语法:tac filename
  • 功能:倒序输出文件的内容
  • 示例:
# tac file1

3.4.3 head命令

  • 语法:head [选项] filename
  • 功能:查看一个文件的前n 行,默认显示前10 行
  • 示例:
# head -2 /etc/passwd     #查看前两行

3.4.4 tail命令

  • 语法:tail [选项] filename
  • 功能:查看一个文件的后n 行,默认显示后10 行
  • 示例:
# tail -1 /etc/passwd     #查看最后一行
# tail -f /var/log/secure   # 动态查看文件尾部,常用于查看日志

3.4.5 more命令

  • 语法:more [选项] filename
  • 功能:分屏显示文件内容
  • 注意:more打开文件时会把文件的全部内容加载到内存中,如果文件较大,可能会出现卡顿情况,不推荐使用
  • 示例:
# more 文件名
交互操作作用
Enter回车向下移动一行
d向下移动半页
space空格向下移动一页
b向上移动一页,后期引入功能,早期more只能前进不能后退
q退出

3.4.6 less命令

  • 语法:less [选项] filename
  • 功能:分屏显示文件内容
  • 注意:less加载文件,是一点一点的进行加载的。相较more,读取大文件时,效率比较高。且more阅读完后,会将阅读内容显示在终端,而less不会,相对安全一些(推荐)
  • 示例
# less 文件名
# less -N 文件名
选项说明:
-N:显示行号
交互操作作用
Enter回车向下移动一行
d向下移动半页
space空格向下移动一页
b向上移动一页
上下方向键向上与向下移动,less命令特有功能键
/ 字符串搜索
q退出

3.5 查看目录结构

3.5.1 tree命令

  • 语法:tree dirname
  • 功能:将目录及其之下的文件/目录以树状形式展示
  • 示例
# 默认未安装,需要先安装
[root@server1 ~]# yum install -y tree
[root@server1 ~]# tree /tmp
/tmp
├── mysql.sock
└── mysql.sock.lock

# 不加默认是当前目录
[root@server1 ~]# tree
.
├── anaconda-ks.cfg
├── dbt3_s1.sql
├── dbt3_s1.tar.gz
└── hard_link

四、文件的压缩与解压

4.1 tar命令

4.1.1 打包

  • 默认情况下,Linux一次只能压缩一个文件,无法压缩多个文件或文件夹。所以需要提前对多个文件或文件夹进行打包,然后压缩。

  • 用法:

# tar -cvf abc.tar a.txt b.txt c.txt #把a.txt、b.txt、c.txt文件打包到abc.tar文件中

# tar -tf abc.tar #查看tar包中的文件信息

# tar -cvf wechat.tar wechat #把wechat文件夹进行打包wechat.tar
选项说明:
-c :打包
-f :filename,打包后的文件名
-v :显示打包的进度
-t :查看打包的文件内容

4.1.2 压缩

  • 用法:
# tar [选项]  压缩后的压缩包名称  要压缩的文件或文件夹
选项说明:
cf :对文件或文件夹进行打包
-v  :显示压缩进度
-z	:使用gzip压缩工具把打包后的文件压缩为.gz
-j  :使用bzip2压缩工具把打包后的文件压缩为.bz2
-J	:使用xz压缩工具把打包后的文件压缩为.xz

压缩速度:gzip > bzip2 > xz
压缩率:gzip < bzip2 < xz

# tar -zcf abc.tar.gz a.txt b.txt c.txt #把a.txt、b.txt、c.txt文件打包并压缩为abc.tar.gz

# tar -zcf wechat.tar.gz wechat #把wechat文件夹压缩为wechat.tar.gz格式的压缩包 

4.1.3 解压

  • 用法:
# tar [选项]  压缩后的压缩包名称  要压缩的文件或文件夹
选项说明:
xf :对文件或文件夹进行解包
其他同压缩

# tar -zxf abc.tar.gz #把abc.tar.gz解压

4.2 zip&unzip

4.2.1 zip压缩

  • 用法:
# zip abc.zip a.txt b.txt c.txt
# zip -r wechat.zip wechat

选项说明:
-r :递归压缩,主要针对的是文件夹

zip格式在Windows和Linux中可以通用

4.2.2 unzip解压缩

  • 用法
# unzip 压缩包名称		-->     解压到当前目录
# unzip 压缩包名称 -d 指定路径		-->   解压到指定路径下

五、文件的查找

5.1 which

  • 语法:which filename
  • 功能:在环境变量$PATH设置的目录里查找符合条件的文件
  • 示例
[root@server1 ~]# which poweroff
/usr/sbin/poweroff
[root@server1 ~]# which ls
alias ls='ls --color=auto'
	/usr/bin/ls

5.2 locate

  • 语法:locate filename
  • 功能:locate 要搜索的文件或目录名,非实时的从数据库里快速搜索文件或目录
  • 示例
[root@server1 ~]# yum -y install mlocate  #安装locate
[root@server1 ~]# updatedb  # 更新数据库
[root@server1 ~]# locate /etc/hosts # 查找/etc目录下名字包含hosts的文件
/etc/hosts
/etc/hosts.allow
/etc/hosts.deny

[root@server1 ~]# locate hosts # 查找所有名字包含hosts的文件
...
  • 默认情况下,locate数据库会忽略某些文件夹,可以在配置文件中修改
[root@server1 ~]# cat /etc/updatedb.conf 
PRUNE_BIND_MOUNTS = "yes"
PRUNEFS = "9p afs anon_inodefs auto autofs bdev binfmt_misc cgroup cifs coda configfs cpuset debugfs devpts ecryptfs exofs fuse fuse.sshfs fusectl gfs gfs2 gpfs hugetlbfs inotifyfs iso9660 jffs2 lustre mqueue ncpfs nfs nfs4 nfsd pipefs proc ramfs rootfs rpc_pipefs securityfs selinuxfs sfs sockfs sysfs tmpfs ubifs udf usbfs fuse.glusterfs ceph fuse.ceph"
PRUNENAMES = ".git .hg .svn"
PRUNEPATHS = "/afs /media /mnt /net /sfs /tmp /udev /var/cache/ccache /var/lib/yum/yumdb /var/spool/cups /var/spool/squid /var/tmp /var/lib/ceph"

5.3 find

5.3.1 find查找文件

  • 语法:find dirname [选项] filename [选项] [处理动作]
  • 功能:查找指定目录下的文件
  • 选项说明:
参数说明
-name 指定文件名,支持*通配符
-type f代表普通文件、d代表文件夹
-mtime指定修改时间,默认单位为天
-size 指定文件大小,常用单位k,M,G
-iname 按照名字,忽略大小写
-user 按照所有者
-group按照所属组
-perm按照文件权限
-a多个条件and并列
-o多个条件or并列
-not条件取反

5.3.2 找到后的处理动作

-print
# 默认的处理动作,显示至屏幕 
-ls
# 类型于对查找到的文件执行“ls -l”命令 
-delete
# 删除查找到的文件 
-fls /path/to/somefile
# 查找到的所有文件的长格式信息保存至指定文件中 
-ok COMMAND {}\
# 对查找到的每个文件执行由COMMAND指定的命令 
# 对于每个文件执行命令之前,都会交换式要求用户确认 
-exec COMMAND {} \
# 对查找到的每个文件执行由COMMAND指定的命令 
{}
# 用于引用查找到的文件名称自身 

注意:find传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件一次性传递给后面的命令;另 一种方式可规避此问题 find | xargs COMMAND

  • 示例
# 通过文件名搜索文件
# find /etc -name "*.conf"
# find /etc -name "*.conf" -type f
# find ./ -name "*.txt" | xargs rm -rf 找到并删除


# 通过文件修改时间搜索文件
# find ./ -name "*.txt" -mtime +3 搜索三天前修改的文件(今天为25号,搜索的为22号之前的文件,不包含22号的文件)
# find ./ -name "*.txt" -mtime -3 搜索三天内修改的文件(今天为25号,搜索的为25.24.23号的文件)

# 通过文件大小搜索文件
# find /root -type f -size 5M  搜索/root目录下大小为5M的文件
# find /root -type f -size -5M 搜索/root目录下小于5M的文件
# find /root -type f -size +5M 搜索/root目录下大于5M的文件

# 删除修改时间超过60分钟的.log格式的文件
# find / -type f -mmin +60 -name "*.log" -exec rm -f {} \;
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-05-18 18:01:16  更:2022-05-18 18:01:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 16:40:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码