目录及文件
1 目录
1.1 目录结构
在linux中目录一切从根(\
)开始,linux目录类似于倒挂的大树
1.2 核心目录
根下核心目录 | 说明 |
---|---|
/bin | bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。 |
/boot | 这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。 |
/dev | dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。 |
/etc | etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。 |
/home | 用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。 |
/lib | lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。 |
/lost+found | 这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。 |
/media | linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。 |
/mnt | 系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。 |
/opt | opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。 |
/proc | proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。 |
/root | 该目录为系统管理员,也称作超级权限者的用户主目录。 |
/sbin | s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。 |
/selinux | 这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。 |
/srv | 该目录存放一些服务启动之后需要提取的数据。 |
/sys | 这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。sysfs 文件系统集成了下面3种文件系统的信息 |
/tmp | tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。 |
/usr | usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。 |
/usr/bin | 系统用户使用的应用程序。 |
/usr/sbin | 超级用户使用的比较高级的管理程序和系统守护程序。 |
/usr/src | 内核源代码默认的放置目录。 |
/var | var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。 |
/run | 是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。 |
2 文件
2.1 /etc/中的文件
文件名称 | 说明 | 企业应用 |
---|---|---|
/etc/hostname | 主机名配置文件 | 每个linux主机配置主机名,根据主机名区别不同功能 |
/etc/hosts | 主机名和ip的对应关系 | 在网站中做访问使用 |
/etc/sysconfig/network-scripts/ifcfg-eth0 | 网卡配置文件 | 物理机需要修改,云服务器自动 |
/etc/fstab | 开机自动挂载的配置文件 | 配置磁盘挂载使用 |
/etc/motd | 文件中的内容会在用户登录系统后显示出来 | 显示温馨提示 |
/etc/issue、/etc/issue.net | 文件中的内容会在用户登录系统钱显示出来 | 这个文件内容一般会被清空 |
2.1.1 修改主机名(/etc/hostname)
建议:
- 见名知意,看到主机名就能知晓,这个节点的作用
- 推荐英文,“
-
”,“.
” ,不要加入其它特殊符号,不要加入中文
[root@node2 ~]# hostnamectl set-hostname node2.253 #临时生效,重启失效
旧系统修改建议:
- 命令行通过hostname命令修改(临时修改,重启linux后失效)
- 手动修改/etc/hostname 文件内容(永久修改,重启linux后生效)
2.1.2 网卡配置文件
/etc/sysconfig/network-scripts/ifcfg-eth0
centos系统中:
[root@lnh oldboy]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=none
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=10.0.0.200
NETMASK=255.255.255.0
#PREFIX=24
GATEWAY=10.0.0.2
DNS1=223.5.5.5
DNS2=8.8.8.8
#修改网卡配置文件后要重启服务
[root@lnh oldboy]# systectl restart network
PREFIX是比较新的Linux版本配置子网掩码的参数,比如netmask是255.255.255.0,等价于prefix是24,相比较而言,netmask兼容性更高,推荐优先使用netmask。
2.1.3 开机自启动配置文件(/etc/rc.local)
/etc/rc.local
是/etc/rc.d/rc.local
的软链接文件,第一次使用这个文件之前需要给/etc/rc.d/rc.local
增加执行权限
chmod +x /etc/rc.d/rc.local
[root@node2 ~]# cat /etc/rc.d/rc.local
#!/bin/bash
...
# that this script will be executed during boot.
touch /var/lock/subsys/local
touch /root/yurq
[root@node2 ~]# ll /root/|grep yurq
-rw-r--r-- 1 root root 0 Mar 7 03:52 yurq
2.1.4 /etc/motd和/etc/issue
建议:
- motd 写入系统基本信息
- 因为/etc/issue文件会在登陆界面显示系统以及内核版本信息,会造成安全隐患,一般会把issue文件的内容清空。 使用命令
>/etc/issue
2.2 /var/中的文件
/var/log/
目录中的日志文件,请查看
https://blog.csdn.net/u010230019/article/details/127772295
2.3 /proc/中的文件
文件路径 | 说明 | 应用建议 |
---|---|---|
/proc | 存放的是各种内存中的进程信息,linux内核配置,系统信息。这个是虚拟目录,不会占用磁盘空间 | |
/proc/cpuinfo | cpu信息 | 未来监控使用,获取cpu指标 |
/proc/meminfo | 内存信息 | 未来监控使用,获取内存指标 |
/proc/loadavg | 系统负载信息,衡量系统繁忙程度 | |
/proc/mounts | 系统挂载信息 | |
/proc/x | 这里的x表示进程号,每个进程在proc下有一个名为其进程号的目录 | |
/proc/devices | 当前运行的核心配置的设备驱动的列表 | |
/proc/dma | 显示当前使用的dma通道 | |
/proc/filesystems | 核心配置的文件系统 | |
/proc/interrupts | 显示使用的中断 | |
/proc/ioports | 当前使用的I/O端口 | |
/proc/kcore | 系统物理内存映象 | |
/proc/kmsg | 核心输出的消息,也被送到syslog | |
/proc/ksyms | 核心符号表 | |
/proc/modules | 当前加载了哪些核心模块 | |
/proc/net | 网络协议状态信息 | |
/proc/stat | 系统的不同状态 | |
/proc/version | 核心版本 | |
/proc/uptime | 系统启动的时间长度 | |
/proc/cmdline | 命令行参数 |
2.3.1 CPU信息(lscpu)
cpu 颗数,cpu核心数
- cpu颗数:有多少个物理的cpu
- cpu核心数:1颗中有多少个核心,每个核心相当于是一个工人
[root@dbc-server-554 zabbix]# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 8
On-line CPU(s) list: 0-7
Thread(s) per core: 2
Core(s) per socket: 4
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 60
Model name: Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz
Stepping: 3
CPU MHz: 1091.601
CPU max MHz: 4000.0000
CPU min MHz: 800.0000
BogoMIPS: 7195.84
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 8192K
NUMA node0 CPU(s): 0-7
lscpu 命令详解
关键词 | 详解 |
---|---|
Architecture | #架构 |
CPU(s) | #逻辑cpu个数 |
Thread(s) per core | #每个核心线程数 |
Core(s) per socket | #每个物理CPU的核数 |
Socket(s) | #物理CPU个数 |
CPU MHz | #cpu主频 |
总核数 = 物理CPU个数(Socket
) X 每颗物理CPU的核数(Core(s) per socket
)
总逻辑CPU数 = 物理CPU个数(Socket
) X 每个物理CPU的核数(Core(s) per socket
) X 每个核心线程数(Thread(s) per core
)
- 查看物理 CPU 个数
cat /proc/cpuinfo | grep “physical id” | sort | uniq | wc -l
- 查看每个物理 CPU 核数
cat /proc/cpuinfo | grep “physical id” | sort | uniq | wc -l
- 查看总线程数
cat /proc/cpuinfo | grep “processor”| wc -l
3 文件类型
3.1 类型说明
在Linux中一切都是文件,但文件都得有类型。那如何查看文件是什么类型了?
在Linux常见的文件类型有7种,分别如下所示:
文件属性 | 文件类型 |
---|---|
- | 常规文件,即file |
d | 目录文件 |
b | block device 即块设备文件,如硬盘;支持以block为单位进行随机访问 |
c | character device 即字符设备文件,如键盘支持以character为单位进行线性访问 |
l | symbolic link 即符号链接文件,又称软链接文件 |
p | pipe 即命名管道文件 |
s | socket 即套接字文件,用于实现两个进程进行通信 |
- 普通文件类型 最常使用的一类文件,其特点是不包含有文件系统信息的结构信息。通常用户所接触到的文件,比如图形文件、数据文件、文档文件以及声音文件都属于这种文件,
这种类型的文件是按照其内部结构又可分为纯文本文件(ASCII)、二进制文件(binary)、数据格式的文件(data)、各种压缩文件
。
- 纯文本文件(ASCII):这是Unix系统中最多的一种文件类型,之所以称为纯文本文件,是因为内容可以直接读到的数据,例如数字、字母等等。设置文件几乎都属于这种文件类型。举例来说,使用命令“cat ~/.bashrc”就可以看到该文件的内容(cat是将文件内容读出来)。
- 二进制文件(binary):系统其实仅认识且可以执行二进制文件(binary file)。Linux中的可执行文件(脚本,文本方式的批处理文件不算)就是这种格式的。举例来说,命令cat就是一个二进制文件。
- 数据格式的文件(data):有些程序在运行过程中,会读取某些特定格式的文件,那些特定格式的文件可以称为数据文件(data file)。举例来说,Linux在用户登入时,都会将登录数据记录在 /var/log/wtmp文件内,该文件是一个数据文件,它能通过last命令读出来。但使用cat时,会读出乱码。因为它是属于一种特殊格式的文件。
-
目录文件类型 用于存放文件名以及其相关信息的文件,是内核组织文件系统的基本节点。目录文件可以包含下一级文件目录或者普通文件,在Linux中,目录文件是一种文件。能用 # cd 命令进入的。
-
块设备文件类型块设备文件就是存储数据以供系统存取的接口设备,简单而言就是硬盘。例如一号硬盘的代码是 /dev/hda1等文件。
-
字符设备类型字符设备文件即串行端口的接口设备,例如键盘、鼠标等等。
-
套接字文件类型这类文件通常用在网络数据连接。可以启动一个程序来监听客户端的要求,客户端就可以通过套接字来进行数据通信。
-
管道文件类型是一种很特殊的文件,主要用于不同进程的信息传递。当两个进程需要进行数据或者信息传递时,可以使用通道文件,一个进程将需要传递的数据或者信息写入管道的一端,另一进程从管道的另一端取得所需要的数据或者信息,通常管道是建立在调整缓存中。
-
链接文件类型是一种特殊文件,指向一个真实存在的文件链接,类似于Windows下的快捷方式,链接文件的不同,又可分为硬链接文件和符号链接文件。
3.2 相关命令
查看文件类型常用的三种方法:
1. ls
ls -l 或 ls -ld
[root@localhost etc]# ls -l
总用量 1340
drwxr-xr-x. 3 root root 28 10月 27 08:08 accountsservice
-rw-r--r--. 1 root root 16 7月 19 2021 adjtime
-rw-r--r--. 1 root root 1529 4月 15 2020 aliases
drwxr-xr-x. 3 root root 65 12月 22 2021 alsa
drwxr-xr-x. 2 root root 4096 7月 27 2021 alternatives
lrwxrwxrwx. 1 root root 56 7月 12 2021 favicon.png -> /usr/share/icons/hicolor/16x16/apps/fedora-logo-icon.png
-rw-r--r--. 1 root root 66 9月 10 2018 filesystems
lrwxrwxrwx. 1 root root 22 3月 28 2022 grub2.cfg -> ../boot/grub2/grub.cfg
2. file
file 命令
[root@localhost etc]# file /etc/fstab
/etc/fstab: ASCII text
[root@localhost etc]# file /etc
/etc: directory
[root@localhost etc]# file /etc/grub2.cfg
/etc/grub2.cfg: symbolic link to ../boot/grub2/grub.cfg
[root@localhost etc]# file /bin/ssh
/bin/ssh: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=fd3393aa38fc9e09813c902bc1255355359ad902, stripped
[root@localhost etc]# file /dev/sr0
/dev/sr0: block special (11/0)
3. stat
stat 命令
[root@localhost etc]# stat /usr/sbin/ip
文件:/usr/sbin/ip
大小:663472 块:1296 IO 块:4096 普通文件
设备:fd00h/64768d Inode:1353488 硬链接:1
权限:(0755/-rwxr-xr-x) Uid:( 0/ root) Gid:( 0/ root)
环境:system_u:object_r:ifconfig_exec_t:s0
最近访问:2022-10-30 03:14:56.040030923 -0400
最近更改:2022-03-21 10:40:32.000000000 -0400
最近改动:2022-10-27 08:07:13.748329778 -0400
创建时间:2022-10-27 08:07:13.724330248 -0400
4. find
Linux find 命令用来在指定目录下查找文件
。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
SYNOPSIS
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]
find 根据下列规则判断 path
和 expression
,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。
expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。
参数 | 说明 |
---|---|
-mount, -xdev | 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件 |
-amin n | 在过去 n 分钟内被读取过 |
-anewer file | 比文件 file 更晚被读取过的文件 |
-atime n | 在过去 n 天内被读取过的文件 |
-cmin n | 在过去 n 分钟内被修改过 |
-cnewer file | 比文件 file 更新的文件 |
-ctime n | 在过去 n 天内创建的文件 |
-mtime n | 在过去 n 天内修改过的文件 |
-empty | 空的文件-gid n or -group name |
-ipath p, -path p | 路径名称符合 p 的文件,ipath 会忽略大小写 |
-name name, -iname name | 文件名称符合 name 的文件。iname 会忽略大小写 |
-size n | 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。 |
-type c | 文件类型是 c 的文件。d: 目录 c: 字型装置文件 b: 区块装置文件 p: 具名贮列 f: 一般文件 l: 符号连结 s: socket |
-pid n | process id 是 n 的文件 |
-exec command {} \; | 将查找结果执行command操作 |
-ok command {} \; | 将查找结果执行command操作,执行前进行询问 |
你可以使用 ( ) 将运算式分隔,并使用下列运算。
exp1 -and exp2
! expr
-not expr
exp1 -or exp2
exp1, exp2
实例:
将当前目录及其子目录下所有文件后缀为 .c 的文件列出来:
# find . -name "*.c"
将当前目录及其子目录中的所有文件列出:
# find . -type f
将当前目录及其子目录下所有最近 20 天内更新过的文件列出:
# find . -ctime 20
查找 /var/log 目录中更改时间在 7 日以前的普通文件,并在删除之前询问它们:
# find /var/log -type f -mtime +7 -ok rm {} \;
查找当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:
# find . -type f -perm 644 -exec ls -l {} \;
-exec 后跟command,终止以
;
结尾,考虑到分号在不同系统中的不同含义,所以习惯用\;
转译,也可以使用';'
代替,不过没必要。
花括号{}指代前面find查找到文件
查找系统中所有文件长度为 0 的普通文件,并列出它们的完整路径:
# find / -type f -size 0 -exec ls -l {} \;
5. locate
Linux locate命令用于查找符合条件的文档
,他会去保存文档和目录名称的数据库内,查找合乎范本样式条件的文档或目录。
一般情况我们只需要输入locate your_file_name
即可查找指定文件。
语法:
locate [-d ][--help][--version][范本样式...]
参数 | 说明 |
---|---|
-b, --basename | 仅匹配路径名的基本名称 |
-c, --count | 只输出找到的数量 |
-d, --database DBPATH | 使用 DBPATH 指定的数据库,而不是默认数据库 /var/lib/mlocate/mlocate.db |
-e, --existing | 仅打印当前现有文件的条目 |
-1 | 如果 是 1.则启动安全模式。在安全模式下,使用者不会看到权限无法看到 的档案。这会始速度减慢,因为 locate 必须至实际的档案系统中取得档案的 权限资料。 |
-0, --null | 在输出上带有NUL的单独条目 |
-S, --statistics | 不搜索条目,打印有关每个数据库的统计信息 |
-q | 安静模式,不会显示任何错误讯息。 |
-P, --nofollow, -H | 检查文件存在时不要遵循尾随的符号链接 |
-l, --limit, -n LIMIT | 将输出(或计数)限制为LIMIT个条目 |
-n | 至多显示 n个输出。 |
-m, --mmap | 被忽略,为了向后兼容 |
-r, --regexp REGEXP | 使用基本正则表达式 |
–regex | 使用扩展正则表达式 |
-q, --quiet | 安静模式,不会显示任何错误讯息 |
-s, --stdio | 被忽略,为了向后兼容 |
-o | 指定资料库存的名称。 |
-h, --help | 显示帮助 |
-i, --ignore-case | 忽略大小写 |
-V, --version | 显示版本信息 |
实例:
查找 passwd 文件,输入以下命令:
locate passwd
搜索 etc 目录下所有以 sh 开头的文件 :
locate /etc/sh
忽略大小写搜索当前用户目录下所有以 r 开头的文件 :
locate -i ~/r
附加说明:
locate 与 find 不同: find 是去硬盘找,locate 只在 /var/lib/slocate 资料库中找。
locate 的速度比 find 快,它并不是真的查找,而是查数据库,一般文件数据库在 /var/lib/slocate/slocate.db 中,所以 locate 的查找并不是实时的,而是以数据库的更新为准,一般是系统自己维护,也可以手工升级数据库 ,命令为:
updatedb
默认情况下 updatedb 每天执行一次
4 归档和压缩
4.1 归档
归档是与压缩操作配合使用的一个常用文件管理任务。归档是一个聚集众多文件并将它们组合为一个大文件的过程,它通常作为系统备份的一部分,而且通常也用于将旧数据从某个系统移到某些长期存储设备的情况下。一般linux有归档的概念,而windows一般的压缩软件都包含归档的功能,归档和压缩顺序执行,最终体现为压缩文件,所以很少说归档的概念。
tar
众多linux归档工具,包括tar,ar,shar,cpio等,tar使用较为广泛,tar命令格式如下:
SYNOPSIS
tar [OPTION...] [FILE]...
EXAMPLES
tar -cf archive.tar foo bar
# Create archive.tar from files foo and bar.
tar -tvf archive.tar
# List all files in archive.tar verbosely.
tar -xf archive.tar
# Extract all files from archive.tar.
选项
-A或–catenate:新增文件到以存在的备份文件;
-B:设置区块大小;
-c或–create:建立新的备份文件;
-C < 目录>:这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。
-d:记录文件的差别;
-x或–extract或–get:从备份文件中还原文件;
-t或–list:列出备份文件的内容;
-z或–gzip或–ungzip:通过gzip指令处理备份文件;
-Z或–compress或–uncompress:通过compress指令处理备份文件;
-f< 备份文件>或–file=< 备份文件>:指定备份文件;
-v或–verbose:显示指令执行过程;
-r:添加文件到已经压缩的文件;
-u:添加改变了和现有的文件到已经存在的压缩文件;
-j:支持bzip2解压文件;
-v:显示操作过程;
-l:文件系统边界设置;
-k:保留原有文件不覆盖;
-m:保留文件不被覆盖;
-w:确认压缩文件的正确性;
-p或–same-permissions:用原来的文件权限还原文件;
-P或–absolute-names:文件名使用绝对名称,不移除文件名称前的“/”号;
-N < 日期格式> 或 --newer=< 日期时间>:只将较指定日期更新的文件保存到备份文件里;
–exclude=< 范本样式>:排除符合范本样式的文件。
常用组合:
- 仅打包,不压缩!
tar -cvf log.tar log2012.log
- 打包后,以 gzip 压缩
tar -zcvf log.tar.gz log2012.log
- 打包后,以 bzip2 压缩
tar -jcvf log.tar.bz2 log2012.log
- 在文件夹当中,比某个日期新的文件才备份:
tar -N "2018/3/1" -zcvf log.tar.gz test
- 解包
tar -xvf filename.tar
- 解压
tar -zxvf filename.tar.gz
tar -zxvf filename.tgz
- 解压bz2文件
tar -jxvf filename.tar.bz2
如果最简单的使用 tar 就只要记忆下面的三种方式即可:
- 压缩:
tar -jcv -f filename.tar.bz2
要压缩的文件或目录名称
- 查询:
tar -jtv -f filename.tar.bz2
- 解压缩:
tar -jxv -f filename.tar.bz2 -C
4.2 压缩/解压
linux压缩命令常用的有:tar,tgz,gzip,zip,rar
1. tgz
tar可以通过参数 -z 同时调用gzip对tar包进行压缩。 tgz压缩命令(tar.gz和tgz格式是相同的,命名不同而已),详细参数参考上节
tar 压缩命令
tar -cvf examples.tar files|dir
#说明:
-c, --create create a new archive 创建一个归档文件
-v, --verbose verbosely list files processed 显示创建归档文件的进程
-f, --file=ARCHIVE use archive file or device ARCHIVE 后面要立刻接被处理的档案名,比如--file=examples.tar
#举例:
tar -cvf file.tar file1 #file1文件
tar -cvf file.tar file1 file2 #file1,file2文件
tar -cvf file.tar dir #dir目录
tar 解压命令
tar -xvf examples.tar (解压至当前目录下)
tar -xvf examples.tar -C /path (/path 解压至其它路径)
#说明:
-x, --extract, extract files from an archive 从一个归档文件中提取文件
#举例:
tar -xvf file.tar
tar -xvf file.tar -C /temp #解压到temp目录下
2. zip/unzip
① zip命令(zip是个使用广泛的压缩程序,文件经他压缩之后会产生.zip扩展名的压缩文件)
zip -r foo.zip ./* #递归压缩
zip foo.zip -d test.txt #从压缩包中删除test.txt
[root@dbc-server-554 zabbix]# zip logs.zip -d /var/log/yum.log
deleting: var/log/yum.log
[root@dbc-server-554 zabbix]# unzip -l logs.zip |grep yum.log
787 11-28-2022 17:29 var/log/yum.log-20221128
532 12-28-2022 15:32 var/log/yum.log-20230101
30812 02-15-2023 11:48 var/log/yum.log-20230216
zip foo.zip -f test.txt #包中存在test.txt,才会更新压缩包中test.txt
zip foo.zip -u test.txt #不管包中有没有test.txt,都会更新压缩包中test.txt
zip -e foo.zip ./* #加密压缩
注:
zip -f
和zip -u
的更新是区别的,前者只能更新已有的文件,如果压缩包中不存在这个文件则不会进行更新,也不会追加;而后者如果压缩包中存在这个文件则会进行更新,如果不存在则会进行追加到压缩包内。
② unzip
参数 | 说明 |
---|---|
-f | 更新压缩包的文件; |
-l | 显示压缩文件内的文件; |
-v | 执行时显示详细的信息; |
-o | 不询问用户,覆盖原有文件; |
-q | 不显示执行过程; |
-d | 指定文件解压缩后所要存储的目录; |
unzip -l test5.zip #-l 表示在不解压的情况下查看压缩文件内的文件
unzip -v test5.zip #-v 表示在不解压的情况下查看压缩文件内的文件,且显示更多信息(压缩比率等);
unzip -o test.zip #-o 表示不询问用户,覆盖原有文件;
3. gzip/gunzip
Gzip是若干种文件压缩程序的简称,通常指GNU计划的实现,此处的gzip代表GNU zip。gzip在压缩完成后,会直接删除原文件
SYNOPSIS
gzip [ -acdfhlLnNrtvV19 ] [-S suffix] [ name ... ]
gunzip [ -acfhlLnNrtvV ] [-S suffix] [ name ... ]
zcat [ -fhLV ] [ name ... ]
参数 | 说明 |
---|---|
-c | –stdout将解压缩的内容输出到标准输出 |
-d | –decompress解压缩 |
-f | –force强制覆盖旧文件 |
-l | –list列出压缩包内储存的原始文件的信息(如 |
-n | –no-name压缩时不保存原始文件的文件名和时间戳 |
-N | –name压缩时保存原始文件的文件名和时间戳 |
-q | –quiet抑制所有警告信息 |
-r | –recursive递归 |
-t | –test测试压缩文件完整性 |
-v | –verbose冗余模式(即显示每一步的执行内容) |
-1、-2、…、-9 | 压缩率依次增大 |
[root@runoob.com a]# ls //显示当前目录文件
a.c b.h d.cpp
[root@runoob.com a]# gzip * //压缩目录下的所有文件
[root@runoob.com a]# ls //显示当前目录文件
a.c.gz b.h.gz d.cpp.gz
[root@runoob.com a]# gzip -dv * //解压文件,并列出详细信息
a.c.gz: 0.0% -- replaced with a.c
b.h.gz: 0.0% -- replaced with b.h
d.cpp.gz: 0.0% -- replaced with d.cpp
[root@runoob.com a]# gzip -l *
compressed uncompressed ratio uncompressed_name
24 0 0.0% a.c
24 0 0.0% b.h
26 0 0.0% d.cpp
4. rar
压缩:
rar -a examples.rar examples
解压:
rar -x examples.rar
unrar examples.rar