2021SC@SDUSC
文件压缩
你是否有过文件文件太大,导致无法以U盘将他复制完成的困扰,还有你是否有过要备份某些重要数据,偏偏这些数据量太大了,耗掉了你很多的磁盘空间呢,这个时候,那个『文件压缩』技术可就派的上用场了。
由于我们记录数字是 1 考虑计算机所谓的二进位如此一来 1 会在最右边占据 1 个bit,而其他的 7 个bits将会自动的被填上 0 所以说,剩下的那 7 位空间则是空值,而压缩就是将这些空值暂时的填充满,使其能够节约空间,当我们使用的时候,再将这些空值展开,这就是最常用的压缩技术。
另外一种压缩技术也很有趣,他是将重复的数据进行统计记录的,举例来说,如果你的数据为『111....』共有100个1时,那么压缩技术会记录为『100个1』而不是真的有100个1的位存在,这样也能够精简文件记录的容量呢。
在这里有个小知识点,有些汇编语言算法,可以将一部电影压缩到几KB的大小,而且还可以有声音,是不是很神奇,这也是汇编语言的强大之处。
这是因为 Linux 支持的压缩命令非常多,且不同的命令所用的压缩技术并不相同,当然彼此之间可能就无法互通压缩/解压缩文件,所以当你下载到某个压缩包时,自然就需要知道该文件是由哪种压缩命令所制作出来的,好用来对照着解压缩啊,也就是说,虽然 Linux 文件的属性基本上是与文件没有绝对关系的,但是为了好区分这些文件使用的是那种压缩技术,从而出现了拓展名。
文件备份
老实说,备份是系统损毁时等待救援的救星,因为你需要重新安装系统时,备份的好坏会影响到你系统复原的进度,不过我们想先知道的是,系统为什么会损坏啊?是人为的还是怎样产生的啊? 事实上,系统有可能由于不预期的伤害而导致系统发生错误,什么是不预期的伤害呢?这是由于系统可能因为不预期的硬件损坏,例如硬盘坏掉等等,或者是软件问题导致系统出错,包括人为的操作不当或是其他不明因素等等所致,下面我们就来谈谈系统损坏的情况与如何备份吧。
实验八:备份压缩部分
1.实验目的
1)掌握 Ubuntu 系统下文件系统中备份压缩部分命令行的原理及使用
2.实验内容
本次实验主要是掌握 Linux 系统下的备份压缩部分的使用,主要包括以下内容:
第八部分(备份压缩部分):
1.zipinfo 命令 – 查看压缩文件信息
2.zip 命令 – 压缩文件
3.gzip 命令 – 压缩和解压文件
4.unzip 命令 – 解压缩 zip 文件
5.unarj 命令 – 解压.arj 文件
3.实验环境
树莓派 4B,系统为 Ubuntu 21.10 系统 。实验的编程环境为 Terminal 终端程序
4.实验步骤
1.zipinfo 命令 – 查看压缩文件信息
(1)语法
zipinfo [参数]
(2)功能
zipinfo命令用于列出压缩文件信息。执行zipinfo指令可得知zip压缩文件的详细信息。
(3)参数
-1 只列出文件名称。
-2 此参数的效果和指定”-1″参数类似,但可搭配”-h”,”-t”和”-z”参数使用。
-h 只列出压缩文件的文件名称。
-l 此参数的效果和指定”-m”参数类似,但会列出原始文件的大小而非每个文件的压缩率。
-m 此参数的效果和指定”-s”参数类似,但多会列出每个文件的压缩率。
-M 若信息内容超过一个画面,则采用类似more指令的方式列出信息。
-s 用类似执行”ls -l”指令的效果列出压缩文件内容。
-t 只列出压缩文件内所包含的文件数目,压缩前后的文件大小及压缩率。
-T 将压缩文件内每个文件的日期时间用年,月,日,时,分,秒的顺序列出。
-v 详细显示压缩文件内每一个文件的信息。
-x<范本样式> 不列出符合条件的文件的信息。
-z 如果压缩文件内含有注释,就将注释显示出来。
(4)实例
显示压缩文件信息:
[root@localhost ~]# zipinfo cp.zip
Archive: cp.zip 486 bytes 4 files
-rw-r--r-- 2.3 unx 0 bx stor 24-May-10 18:54 a.c
-rw-r--r-- 2.3 unx 0 bx stor 24-May-10 18:54 b.c
-rw-r--r-- 2.3 unx 0 bx stor 24-May-10 18:54 c.c
-rw-r--r-- 2.3 unx 0 bx stor 24-May-10 18:54 e.c
4 files, 0 bytes uncompressed, 0 bytes compressed: 0.0%
[root@localhost ~]#
2.zip 命令 – 压缩文件
(1)语法
zip [参数] [文件]
(2)功能
zip命令可以用来解压缩文件,或者对文件进行打包操作,zip是个使用广泛的压缩程序,文件经它压缩后会另外产生具有 ".zip" 扩展名的压缩文件,由于各种系统都支持zip的压缩格式,所以在一定程度上,是可以通用的。
(3)参数
[root@localhost ~]# zip --help
命令语法:[ zip/unzip [选项] 文件或目录 ]
-r #递归压缩,连同子目录一同压缩
-S #包含系统和隐藏文件
-v #显示指令执行过程
-q #不显示指令执行过程
(4)实例
通过使用zip -r -v
命令将/etc/目录全部内容压缩:
[root@localhost ~]# zip -r -v lyshark.zip /etc/
[root@localhost ~]# ls -lh
total 12M
-rw-r--r--. 1 root root 12M Nov 16 09:46 lyshark.zi
3.gzip 命令 – 压缩和解压文件
(1)语法
gzip [参数]
(2)功能
gzip命令是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用,其拓展名为gz,gzip不仅可以用来压缩大的、较少使用的文件以节省磁盘空间,还可以和tar命令一起构成Linux操作系统中比较流行的压缩文件格式,据统计gzip命令对文本文件有60%~70%的压缩率,减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。
注:将一个大文件通过压缩算法变成一个小文件,gzip命令不能直接压缩目录,因此需要先用tar打包成一个文件,然后tar再调用gzip进行压缩
(3)参数
-d # 加开压缩文件
-v # 显示指令执行的过程
-l # 列出压缩文件的内容消息
-c # 将内容输出到标准输出,不改变原始文件
-r # 将目录下的所有文件递归进行压缩操作
-t # 测试,检查压缩文件是否完整
(4)实例
(1)压缩实例:通过使用gzip -rv
命令压缩一个文件:
[root@localhost ~]# ls -lh
total 944K
-rwxr-xr-x. 1 root root 942K Sep 26 2017 bash
[root@localhost ~]# gzip -rv bash
bash: 51.2% -- replaced with bash.gz
[root@localhost ~]# ls -lh
total 460K
-rwxr-xr-x. 1 root root 460K Sep 26 2017 bash.gz
(2)查询实例:通过使用gzip -l/zcat -l
命令查询一个文件:
[root@localhost ~]# gzip -l bash.gz
compressed uncompressed ratio uncompressed_name
470300 964544 51.2% bash
[root@localhost ~]# zcat -l bash.gz
compressed uncompressed ratio uncompressed_name
470300 964544 51.2% bash
(3)解压实例:通过使用gzip -dv / zcat
命令解压一个文件:
[root@localhost ~]# ls -lh
total 460K
-rwxr-xr-x. 1 root root 460K Sep 26 2017 bash.gz
[root@localhost ~]# gzip -dv bash.gz
bash.gz: 51.2% -- replaced with bash
[root@localhost ~]# zcat -d bash.gz >bash_zcat
[root@localhost ~]# ls -lh
total 2.1M
-rw-r--r--. 1 root root 942K Nov 16 06:56 bash
-rw-r--r--. 1 root root 942K Nov 16 06:56 bash.zcat
-rwxr-xr-x. 1 root root 460K Sep 26 2017 bash.gz
4.unzip 命令 – 解压缩 zip 文件
(1)语法
unzip [参数] [文件]
(2)功能
unzip命令可以解压zip命令或其他压缩软件压缩的zip格式的文件
(3)参数
-c 将解压缩的结果显示到屏幕上,并对字符做适当的转换。
-f 更新现有的文件。
-l 显示压缩文件内所包含的文件。
-p 与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换。
-t 检查压缩文件是否正确。
-u 与-f参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中。
-v 执行是时显示详细的信息。
-z 仅显示压缩文件的备注文字。
-a 对文本文件进行必要的字符转换。
-b 不要对文本文件进行字符转换。
-C 压缩文件中的文件名称区分大小写。
-j 不处理压缩文件中原有的目录路径。
-L 将压缩文件中的全部文件名改为小写。
-M 将输出结果送到more程序处理。
-n 解压缩时不要覆盖原有的文件。
-o 不必先询问用户,unzip执行后覆盖原有文件。
-P<密码> 使用zip的密码选项。
-q 执行时不显示任何信息。
-s 将文件名中的空白字符转换为底线字符。
-V 保留VMS的文件版本信息。
-X 解压缩时同时回存文件原来的UID/GID。
[.zip文件] 指定.zip压缩文件。
[文件] 指定要处理.zip压缩文件中的哪些文件。
-d<目录> 指定文件解压缩后所要存储的目录。
-x<文件> 指定不要处理.zip压缩文件中的哪些文件。
-Z unzip -Z等于执行zipinfo指令。
(4)实例
通过使用unzip -l
命令查询一个压缩包中的文件:
[root@localhost ~]# unzip -l lyshark.zip
通过使用unzip -d
命令将文件解压到指定目录:
[root@localhost ~]# unzip lyshark.zip -d /tmp/
[root@localhost ~]# ls -lh /tmp/
total 12K
drwxr-xr-x. 84 root root 8.0K Nov 6 11:02 etc
5.unarj 命令 – 解压.arj 文件
(1)语法
unarj [参数] [.arj 压缩文件]
(2)功能
unarj命令用于解压缩.arj文件。unarj为.arj压缩文件的压缩程序。
(3)参数
-e 解压缩.arj文件。
-l 显示压缩文件内所包含的文件。
-t 检查压缩文件是否正确。
-x 解压缩时保留原有的路径。
(4)实例
解压缩.arj文件:
[root@localhost ~]# unarj -e test.arj
显示压缩文件内所包含的文件:
[root@localhost ~]# unarj -l test.arj
检查压缩文件是否正确:
[root@localhost ~]# unarj -t test.arj
解压缩时保留原有的路径:
[root@localhost ~]# unarj -x test.arj
把文件解压到当前路径:
[root@localhost ~]# unarj -ex test.arj