04.压缩与解压缩命令

压缩与解压缩命令

zip/unzip命令

功能说明

将一般的文件或者目录进行压缩或者解压,默认生成以“.zip”为后缀的压缩包。zip 命令类似于Windows 中的 winzip 压缩程序。其格式如下:

zip [选项] 压缩文件名 需要压缩的文档列表
unzip [选项] 压缩文件名

zip 命令的选项及其说明如表所示。

zip命令的选项及其说明

选 项

含 义

-r

递归压缩,将指定目录下的所有文件以及子目录全部压缩

-d

从压缩文件内删除指定的文件

-i “文件列表”

只压缩文件列表中的文件

-x “文件列表”

压缩时排除文件列表中指定的文件

-u

更新文件到压缩文件中

-m

将文件加入压缩文件压缩后,删除原始文件,即把文件移到压缩文件中

-F

尝试修复损坏的压缩文件

-T

检查压缩文件内的每个文件是否正确无误

- 压缩级别

压缩级别是一个 1~9 的数字

unzip 命令的选项及其说明如表所示。

unzip命令的选项及其说明

选 项

含 义

-x "文件列表"

解压文件,但不包含文件列表中指定的文件

-t

测试压缩文件有无损坏,并不解压

-v

查看压缩文件的详细信息,具体包括压缩文件中包含的文件大小、文件名和压缩比等,并不解压

-n

解压时不覆盖已经存在的文件

-o

解压时覆盖已经存在的文件,并且不要求用户确认

-d 目录名

把压缩文件解压到指定目录下

举例

  1. 将/etc 目录下的所有文件以及目录进行压缩,设置压缩级别为最高,保存到文件/opt/etc.zip。
zip -9r /opt/etc.zip /etc
  1. 将/var目录中所有文件以及子目录压缩,除了“*.log”的文件,将压缩文件保存到/opt目录下。
zip –r /opt/var.zip /var –x  "*.log"
  1. 将上面/opt/etc.zip中的etc/passwd文件从压缩包中删除。
zip /opt/etc.zip –d etc/passwd
  1. 修改了/etc/inittab文件,希望把更改信息更新到/opt/etc.zip包中。
zip –u /opt/etc.zip /etc/inittab

如果/etc目录下很多文件进行了修改或者增加了很多文件,就需要把/etc目录下的全部信息更新到/opt/etc.zip 文件。可以使用以下命令:

zip –u /opt/etc.zip /etc/*  
或者使用
zip –ru /opt/etc.zip /etc

看出点玄机了吗<在上例中,其实“/etc/*”就代表了/etc 目录下的所有文件以及子目录,而这刚好是zip命令“-r”选项完成的功能。

  1. 将/opt/etc.zip 压缩文件全部解压到/etc 目录下,除了 etc/inittab 文件,并且在解压
unzip –o /opt/etc.zip –x etc/inittab –d /etc

过程中如果出现相同的文件就直接进行覆盖,不要求用户确认。可以使用以下命令:

gzip/gunzip命令

功能说明

将一般的文件进行压缩或者解压。压缩文件预设的扩展名为“.gz”,其实 gunzip 就是gzip的硬链接,因此无论是压缩或者解压都可以通过gzip来实现。

注意:gzip 只能对文件进行压缩,不能压缩目录,即使指定压缩的目录,也只能压缩目录内的所有文件。

其格式如下:

gzip [选项] 压缩(解压缩)的文档名

gzip 命令的选项及其说明如表所示。

gzip命令的选项及其说明

选 项

含 义

-d

对压缩的文件进行解压

-r

递归式压缩指定目录以及子目录下的所有文件

-t

检查压缩文档的完整性

-v

对于每个压缩和解压缩的文档,显示相应的文件名和压缩比

-l

显示压缩文件的压缩信息,显示字段为压缩文档大小、未压缩文档大小、压缩比和未压缩文档名称

-num

用指定的数字 num 配置压缩比,“-1”或“-fast”表示最低压缩比,“-9”或“-best”表示最高压缩比。系统默认压缩比为 6。

举例

  1. 首先将/etc目录下的所有文件以及子目录进行压缩,备份压缩包etc.zip到/opt目录,然后对etc.zip文件进行gzip压缩,设置gzip的压缩级别为9。
zip –r /opt/etc.zip /etc
gzip -9v /opt/etc.zip
  1. 查看上述etc.zip.gz文件的压缩信息。
gzip -l /opt/etc.zip.gz
  1. 解压上述etc.zip.gz文件到当前目录。
gzip –d /opt/etc.zip.gz 
或者执行
gunzip  /opt/etc.zip.gz

通过上面的示例可以知道“gzip –d”等价于“gunzip”命令。

bzip2/bunzip2命令

功能说明

对文件进行压缩与解压缩。此命令类似于“gzip/gunzip”命令,只能对文件进行压缩。对于目录只能压缩目录下的所有文件,压缩完成后,在目录下生成以“.bz2”为后缀的压缩包。bunzip2 其实是 bzip2 的符号链接,即软链接,因此压缩解压都可以通过 bzip2 实现。

其格式如下:

bzip2 [选项] 要压缩或解压的文件

bzip2命令的选项及其说明如表所示。

bzip2命令的选项及其说明

选 项

含 义

-d

执行解压缩,此时选项后面跟要解压缩的文件

-v

压缩或解压文件时,显示详细信息

-k

bzip2 在压缩或解压缩后,会删除原始的文件,若要保留原始文件,可使用此选项

-f

bzip2 在压缩或解压缩时,若输出文件与现有文件同名,预设不会覆盖现有文件。若要覆盖,就要使用此选项

-t

测试“.bz2”压缩文件的完整性

- 压缩级别

压缩级别可以从 1~9 中选取,数字越大,压缩率越高

举例

将/opt 目录下的 etc.zip、var.zip 和 backup.zip 进行压缩,设置压缩率为最高,同时在压缩完毕后不删除原始文件,显示压缩过程的详细信息。

bzip2 -9vk /opt/etc.zip /opt/var.zip /opt/backup.zip

压缩完毕后,在/opt下就会生成相应的etc.zip.bz2、var.zip.bz2和backup.zip.bz2 文件。

tar命令

功能说明

tar是Linux下经常使用的归档工具,是对文件或者目录进行打包归档,归成一个文件, 但是并不进行压缩。其格式如下:

tar [主选项+辅助选项] 文件或者目录

tar 命令的选项很多,这里列出一些经常用到的主选项,如表所示。

tar命令的主选项及其说明

主选项

含 义

-c

创建新的文件

-r

把要归档的文件追加到档案文件的末尾

-t

列出档案文件中已经归档的文件列表

-x

从打包的档案文件中还原出文件

-u

更新档案文件,用新的文件替换档案中的原始文件

辅助选项的详细信息如表所示。

tar命令的辅助选项及其说明

辅助选项

含 义

-z

调用 gzip 命令在文件打包的过程中进行压缩/解压文件

-w

在还原文件时,把所有文件的修改时间设定为现在时间

-j

调用 bzip2 命令在文件打包的过程中进行压缩/解压文件

-Z

调用 compress 命令过滤档案

-f

“-f”选项后面紧跟档案文件的存储设备,默认是磁盘,需要指定档案文 件名;如果是磁带,只需指定磁带设备名即可。注意,在“-f”选项之 后不能再跟任何其他选项,也就是说“-f”必须是 tar 命令的最后一个选

-v

指定在创建归档文件过程中,显示各个归档文件的名称

-p

在文件归档的过程中,保持文件的属性不发生变化

-N “yyyy/mm/dd”

在指定日期之后的文件才会被打包到档案文件中

--exclude file

在打包过程中,不将指定 file 文件打包

举例

(1)将/etc 目录下的所有文件打包,并显示打包的详细文件,设置打包文件名为 etc.tar,同时保存文件到/opt目录下。

tar -cvf /opt/etc.tar /etc

这里的档案名“etc.tar”名字是我们自己随便取的,Linux上利用tar 命令打包出来的档案文件我们一般用.tar作为标识。

(2)将/etc目录下的所有文件打包并压缩,然后显示打包的详细文件,设置打包文件名为
etc.tar.gz,同时保存文件到/opt目录下。

tar -zcvf /opt/etc.tar.gz /etc
tar -jcvf /opt/etc.tar.bz2 /etc

“zcvf”选项表示在打包完成后调用 gzip 命令对档案文件进行压缩,这里的档案名“etc.tar.gz”也是我们随便取的,“.tar”表示是用 tar 命令打包的,“.gz”表示调用了 gzip命令进行了压缩。同理,“jcvf”选项表示在打包完成后调用 bzip2 命令对档案文件进行压缩,档案命名标识中“.bz2”表示调用了 bzip2 命令进行了压缩处理。

这里对档案文件的取名没有硬性的规定,上面采用的命名规则,可以很方便地让我们知道文件的类型以及对应的解压方式,因为压缩方式不同,解压方式也是不同的。同时,这种规则也是大家都默许了的一种潜规则。如果你不喜欢这种规则,完全可以按照自己喜欢的方式命名档案文件。

(3)查阅上面/opt/etc.tar.gz压缩包的内容。

tar -ztvf /opt/etc.tar.gz
tar -jtvf /opt/etc.tar.gz

注意:“etc.tar.gz”可能包含很多个文件,无法一个屏幕显示完毕,这时可以使用 more命令,比如,“tar -zxvf /opt/etc.tar.gz|more”。

(4)将/opt/etc.tar.gz解压到/usr/local/src下。

cd /usr/local/src
tar -zxvf /opt/etc.tar.gz

一般情况下,可以把/opt/etc.tar.gz 在任何地方解开,这里我们首先切换到了/usr/local/src 目录下,然后解开/opt/etc.tar.gz,因此/usr/local/src/etc 目录就是我们解开的目录。

(5)将/etc目录下的所有文件打包备份到/opt目录下,并保存每个文件的权限。

tar -zcvpf /opt/etc.tar.gz /etc

(6)在/opt目录下,仅解开/opt/etc.tar.gz压缩文件中的/etc/inittab文件。

cd /opt
tar -zxvf /opt/etc.tar.gz etc/inittab

我们首先可以通过“tar –ztvf”查看“etc.tar.gz”文件中包含的文件,然后找到需要解开的文件,通过上面的方式解压。后面指定的需要解压出来的文件一定要是通过“tar -ztvf” 显示出来的文件完整路径。这样就在/opt目录下解压出了一个etc目录,而etc目录下的inittab 就是我们需要的文件。

(7)打包备份/var/log目录中2008/7/21以后的文件。

tar –N  “2008/7/21” –zcvf log.tar.gz /var/log 
pwd
ls
log.tar.gz

(8)打包备份/home目录和/etc目录,但是不备份/home下的ixdba目录。

tar –exclude /home/ixdba -zcvf myfile.tar.gz /home/* /etc

(9)将/etc目录打包压缩后直接解压到/opt 目录下,而不生成打包的档案文件。

cd /opt
tar –zcvf - /etc | tar –zxvf –

在上面的命令中,紧跟在“f”后面的“-”是将创建的档案文件输出到标准输出上,“|”在Linux下表示管道符,命令最后的“-”表示将 tar 命令通过管道传入的档案文件作为需要解压的数据来源。

dd命令

功能说明

dd命令用来转换或拷贝文件,同时可以对设备进行备份。其格式如下:

dd if="input_file" of="output_file" bs="block_size" count="number"

dd命令的选项及其说明如下。

  • if:就是输入的文件,可以是设备,例如磁盘某分区或者整个磁盘。
  • of:就是输出文件,也可以是输出设备,例如磁盘、磁带等。
  • bs:指定一个block的大小,如果没有指定,默认为512bytes。
  • count:就是“bs”的数量。

举例

(1)将/etc/inittab文件备份到/opt/inittab.bak中。

dd if=/etc/inittab  of=/opt/inittab.bak 
3+1 records in
3+1 records out
ls –al /etc/inittab /opt/inittab.bak
-rw-r--r--  1 root root 1666 Jul 22 17:37 /etc/inittab
-rw-r--r--  1 root root 1666 Jul 23 08:09 /opt/inittab.bak

上面两个文件的大小没有任何异同,都是1666 bytes。由于没有指定“bs”大小,因此默认为 512 bytes 为一个单位块,刚好是上面的“3+1”。3 表示有 3 个完整的 512 bytes的块,而“1”表示未满 512 bytes的那个块。

(2)将/dev/sda2整个分区进行备份,保存备份文件到/opt目录。

dd if=/dev/sda2 of=/opt/sda2.back

这里是将磁盘某个分区的数据全部备份,dd命令还能够备份整个磁盘的数据,这里的备份输出路径一定不能是“/dev/sda2“所在分区,否则怎么都备份不完的。

(3)将上面例子中的备份包/opt/sda2.back恢复到相应的分区,使用以下命令:

dd if=/opt/sda2.back of=/dev/sda2

注意:在恢复目标分区时,一定要先卸载目标分区,待恢复完成,进行挂载。

还需要注意的是,备份的分区最好和恢复的分区一致,例如本例中“/opt/sda6.back” 文件是对“/dev/sda2”分区的备份,那么恢复的时候最好将“/opt/sda6.back”文件恢复到“/dev/sda2”分区下,或者恢复到大小与“/dev/sda2”一致的分区下。因为恢复的目 标分区如果大于备份时的分区,将浪费空间;相反,若恢复目标分区小于备份的分区,就将在恢复的时候提示空间不足。

cpio命令

功能说明

cpio 命令是通过重定向的方式将文件进行打包备份、还原恢复的工具,它可以解压以“.cpio”或者“.tar”结尾的文件。其格式如下:

cpio [选项] > 文件名或者设备名
cpio [选项] < 文件名或者设备名

cpio命令的选项及其说明如表所示。

cpio命令的选项及其说明

选 项

含 义

-o

将文件拷贝打包成文件或者将文件输出到设备上

-i

将打包文件解压或者将设备上的备份还原到系统

-t

查看 cpio 打包的文件内容或者输出到设备上的文件内容

-v

显示打包过程中的文件名称

-d

在 cpio 还原文件的过程中,自动建立相应的目录

-c

一种较新的存储方式

-B

让默认的 Blocks 可以增大到 5120bytes,默认 Blocks 为 512bytes,这样做的好处是可以加快存取速度

举例

(1)将/etc下的所有普通文件都备份到/opt/etc.cpio。

find /etc –type f | cpio –ocvB >/opt/etc.cpio

(2)将系统上所有资料备份到磁带机内。

find / -print | cpio -covB > /dev/st0

这里的“/dev/st0”是磁带的设备名,代表 SCSI磁带机。

(3)查看上例磁带机上备份的文件。

cpio  -icdvt < /dev/st0

有时可能因为备份的文件过多,一个屏幕无法显示完毕,此时我们利用下面命令,让磁带机的文件信息输出到文件。

cpio  -icdvt < /dev/st0 > /tmp/st_content

(4)将示例(1)中的备份包还原到相应的位置,如果有相同文件就进行覆盖。

cpio –icduv < /opt/etc.cpio

注意:cpio恢复的路径,如果cpio在打包备份的时候用的是绝对路径,那么在恢复的时候会自动恢复到这些绝对路径下,本例就会将备份文件全部还原到/etc路径下对应的目录中。同理,如果在打包备份时用的是相对路径,那么还原时也将恢复到相对路径下。

通过上面的示例可以看出,cpio 无法直接读取文件,它需要每个文件或者目录的完整路径名才能识别读取,而 find 命令的输出刚好做到了这点,因此 cpio 命令一般和 find 命令配合使用。其实,上面的示例我们已经看到了它们的组合用法。

相关推荐

  1. 04.压缩压缩命令

    2024-04-30 08:40:03       28 阅读
  2. linux压缩/压缩命令

    2024-04-30 08:40:03       21 阅读
  3. golang压缩压缩文件

    2024-04-30 08:40:03       56 阅读
  4. boost 压缩压缩

    2024-04-30 08:40:03       37 阅读
  5. linux tar压缩命令

    2024-04-30 08:40:03       39 阅读
  6. 探索Linux中的gzip命令压缩压缩的艺术

    2024-04-30 08:40:03       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-30 08:40:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-30 08:40:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-30 08:40:03       82 阅读
  4. Python语言-面向对象

    2024-04-30 08:40:03       91 阅读

热门阅读

  1. LXC的原理及应用详解(二)

    2024-04-30 08:40:03       29 阅读
  2. spring Bean的实例化过程

    2024-04-30 08:40:03       32 阅读
  3. vue查询数据里面指定的数据

    2024-04-30 08:40:03       33 阅读
  4. ChatGPT: 人工智能对话的革命

    2024-04-30 08:40:03       29 阅读
  5. RNN时序预测

    2024-04-30 08:40:03       30 阅读
  6. 预训练语言模型

    2024-04-30 08:40:03       34 阅读
  7. Arch Linux安装macOS

    2024-04-30 08:40:03       28 阅读
  8. App在某个页面静止造成卡死假象

    2024-04-30 08:40:03       38 阅读
  9. 定期删除服务器n天前日志

    2024-04-30 08:40:03       34 阅读
  10. 【Linux】基于Udp的简易服务端和客户端

    2024-04-30 08:40:03       33 阅读
  11. 给vue配置路径别名@

    2024-04-30 08:40:03       34 阅读
  12. npm 安装vite

    2024-04-30 08:40:03       69 阅读