写在上面:
你们都晓得,在Windows笔记本中压缩文件文件大小有两个显著的益处,一是可以降低储存空间,二是通过网路传输文件时,可以降低传输的时间。。在Linux系统中同样支持这些操作,但是不同的压缩方法,压缩的疗效还不一样,下边就和你们分享一下我日常工作中维护Linux系统常用的一些压缩命令。
一、Linux中常用的压缩文件拓展名
工作中常用压缩文件拓展名
文件拓展名类型拓展名阐述
二、常用压缩命令解读
2.1gzip压缩和解压文件
gzip是在Linux系统中常常使用的一个对文件进行压缩和解压缩的命令,既便捷又好用。gzip除了可以拿来压缩大的、较少使用的文件以节约c盘空间,还可以和tar命令一起构成Linux操作系统中比较流行的压缩文件格式。据统计,gzip命令对文本文件有60%~70%的压缩率。
使用句型:
gzip压缩(解压缩)的文件名
参数解读:
-c将输出讲到标准输出上,并保留原有文件。
-d将压缩文件解压。
-l对每位压缩文件,显示下述数组:
第一列:压缩文件的大小第二列:未压缩文件的大小
第三列:压缩比第四列:未压缩文件的名子
-r递归式地查找指定目录并压缩其中的所有文件或则是解压缩。
-t测试,检测压缩文件是否完整。
-v对每一个压缩和解压的文件,显示文件名和压缩比。
-num用指定的数字num调整压缩的速率,-1或--fast表示最快压缩方式(低压缩比),-9或--best表示最慢压缩方式(高压缩比)。系统缺省值为6。
常用操作示例:
A.压缩A指定目录下的所有文件
在目录/gzip下有文件1.txt2.txt3.txt,全部压缩成.gz文件。
[root@10-6-161-230-Mob gzip]# cd /gzip/
[root@10-6-161-230-Mob gzip]# gzip *
[root@10-6-161-230-Mob gzip]# ll
total 12
-rw-r--r-- 1 root root 362 Sep 16 16:33 1.txt.gz
-rw-r--r-- 1 root root 722 Sep 16 16:34 2.txt.gz
-rw-r--r-- 1 root root 1472 Sep 16 16:34 3.txt.gz
B.解压指定文件下的所有压缩文件
解压/gzip目录下的每位压缩文件
[root@10-6-161-230-Mob gzip]# cd /gzip/
[root@10-6-161-230-Mob gzip]# gzip -dv *
1.txt.gz: 66.5% -- replaced with 1.txt

2.txt.gz: 53.8% -- replaced with 2.txt
3.txt.gz: 53.4% -- replaced with 3.txt
[root@10-6-161-230-Mob gzip]# ll
total 12
-rw-r--r-- 1 root root 984 Sep 16 16:33 1.txt
-rw-r--r-- 1 root root 1492 Sep 16 16:34 2.txt
-rw-r--r-- 1 root root 3092 Sep 16 16:34 3.txt
C.查看所有早已压缩文件的压缩详情,不会解压文件
[root@10-6-161-230-Mob gzip]# cd /gzip/
[root@10-6-161-230-Mob gzip]# gzip -l *
compressed uncompressed ratio uncompressed_name
362 984 66.5% 1.txt
722 1492 53.8% 2.txt
1472 3092 53.4% 3.txt
2556 5568 54.7% (totals)
内容解读:
第一列:压缩文件的大小
第二列:未压缩文件的大小
第三列:压缩比
第四列:未压缩文件的名子
D.压缩一个tar备份文件,此时压缩文件的扩充名为.tar.gz
[root@localhost test]# ls -al log.tar
-rw-r--r-- 1 root root 307200 11-29 17:54 log.tar
[root@localhost test]# gzip -r log.tar
[root@localhost test]# ls -al log.tar.gz
-rw-r--r-- 1 root root 1421 11-29 17:54 log.tar.gz
E.递归的压缩目录
递归的压缩/gzip目录
[root@10-6-161-230-Mob ~]# gzip -rv /gzip/
/gzip//2.txt: 53.8% -- replaced with /gzip//2.txt.gz
/gzip//3.txt: 53.4% -- replaced with /gzip//3.txt.gz
/gzip//1.txt: 66.5% -- replaced with /gzip//1.txt.gz
[root@10-6-161-230-Mob ~]# cd /gzip/
[root@10-6-161-230-Mob gzip]# ll
total 12
-rw-r--r-- 1 root root 362 Sep 16 16:33 1.txt.gz
-rw-r--r-- 1 root root 722 Sep 16 16:34 2.txt.gz

-rw-r--r-- 1 root root 1472 Sep 16 16:34 3.txt.gz
解读:
递归压缩的操作,由于是对目录操作,所以须要加上-r选项linux社区,这样也可以对子目录进行递归的。并且对原目录没有影响,只是目录上面的文件相应变成了.gz.这就是压缩
F.递归解压指定目录【/gzip】的文件
[root@10-6-161-230-Mob ~]# cd /gzip/
[root@10-6-161-230-Mob gzip]# ll
total 12
-rw-r--r-- 1 root root 362 Sep 16 16:33 1.txt.gz
-rw-r--r-- 1 root root 722 Sep 16 16:34 2.txt.gz
-rw-r--r-- 1 root root 1472 Sep 16 16:34 3.txt.gz
[root@10-6-161-230-Mob gzip]# gzip -dr /gzip/
[root@10-6-161-230-Mob gzip]# ll
total 12
-rw-r--r-- 1 root root 984 Sep 16 16:33 1.txt
-rw-r--r-- 1 root root 1492 Sep 16 16:34 2.txt
-rw-r--r-- 1 root root 3092 Sep 16 16:34 3.txt
G.gunzip命令解读
Linuxgunzip命令用于解压文件。
gunzip是个使用广泛的解压缩程序,它用于解开被gzip压缩过的文件,这种压缩文件预设最后的扩充名为.gz。事实上gunzip就是gzip的硬联接解压xz文件命令 linux,因而不论是压缩或解压缩解压xz文件命令 linux,都可通过gzip指令单独完成。
例如下边的示例:
[root@test ~]#gzip –d /test/test.testzip.gz
## 等价于执行
[root@test ~]#gunzip /test/test.zip.gz
2.2tar--打包和备份的归档工具
--将多个零散的文件归档为一个单独的文件,而且能从归档中还原文件。
重要说明:工作中很常用
首先要弄清两个概念:打包和压缩。打包是指将一大堆文件或目录弄成一个总的文件;压缩则是将一个大的文件通过一些压缩算法弄成一个小文件。
为何要分辨这两个概念呢?这缘于Linux中好多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar命令),之后再用压缩程序进行压缩(gzipbzip2命令)。
句型
tar [选项...] [FILE]...
选项
-A, --catenate, --concatenate 追加 tar 文件至归档
-c, --create 创建一个新归档
-d, --diff, --compare 找出归档和文件系统的差异
--delete 从归档(非磁带!)中删除
-r, --append 追加文件至归档结尾
-t, --list 列出归档内容

--test-label 测试归档卷标并退出
-u, --update 仅追加比归档中副本更新的文件
-x, --extract, --get 从归档中解出文件
- z:有gzip属性的
- j:有bz2属性的
- Z:有compress属性的
- v:显示所有过程
- O:将文件解开到标准输出
操作示例:
A.打包目录下所有.txt结尾的文件
参考命令:tar-cfall.tar*.txt
B.解压文件到当前目录
参考命令:tar-xvfall.tar
C.解压文件到指定目录
参考命令:tar-xvfall.tar-C/test2/
注意:核心参数是-C(小写)
D.打包并压缩【工作中很常用】
tar可在打包时直接压缩,支持gzip压缩、bzip2压缩和xz压缩。
使用-z选项可压缩成gzip格式的文件
参考命令:tar-zcvftest.tar.gz/test2/
F.-zx选项,解压.tar.gz格式的压缩包
参考命令:
tar-xvzftest.tar.gz#j解压到当前目录
tar-xvzftest.tar.gz-C/test4#解压到指定目录
2.3Linuxzip命令用于压缩文件。
说明:zip是个使用广泛的压缩程序,压缩后的文件后缀名为.zip。
句型:
zip压缩包名源文件或源目录列表
常用参数:
-c:将解压缩的结果
-l:显示压缩文件内所包含的文件
-p:与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换
-t:检测压缩文件是否正确
-u:与-f参数类似,而且不仅更新现有的文件外,也会将压缩文件中的其它文件解压缩到目录中
-v:执行是时显示详尽的信息
操作示例:
A.将/test/test/这个目录下所有文件和文件夹打包为当前目录下的test.zip:
[root@10-6-161-230-Mob gzip]# zip -q -r test.zip /test/test
B.若果在我们在/test/test目录下,可以执行以下命令:
[root@10-6-161-230-Mob gzip]# zip -q -r test.zip *
C.从压缩文件cp.zip中删掉文件a.test
[root@10-6-161-230-Mob gzip]# zip -dv test.zip a.test
2.3Linuxunzip命令用于解压文件
说明:
Linuxunzip命令用于解压缩zip文件,unzip为.zip压缩文件的解压缩程序。
常用参数:
-l显示压缩文件内所包含的文件。
-v执行是时显示详尽的信息。
-n解压缩时不要覆盖原有的文件。
-o不必先寻问用户,unzip执行后覆盖原有文件。
常用操作示例:
A.在当前目录解压:text.zip
[root@10-6-161-230-Mob gzip]# unzip test.zip
B.解压到指定的目录:【-d+目录路径】
[root@10-6-161-230-Mob gzip]# unzip -d /temp test.zip
C.解压的时侯,不覆盖早已存在的同名文件,加上-n参数
[root@10-6-161-230-Mob gzip]# unzip -n -d /temp test.zip
D.覆盖先前的文件
[root@10-6-161-230-Mob gzip]# unzip -o test.zip -d /tmp/
E.只看一下zip压缩包中包含什么文件,不解压缩
[root@10-6-161-230-Mob gzip]# unzip -l test.zip
F.查看显示的文件列表还包含压缩百分比
[root@10-6-161-230-Mob gzip]# unzip -v test.zip
三、文件的传输
3.1本地文件拷贝【cp】
句型:
cpsourcedest或则cpsource…directory
常用参数解读:
-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
操作示例:
使用指令cp将当前目录test/下的所有文件复制到新目录newtest下,输入如下命令:
[root@10-6-161-230-Mob gzip]# cp –r test/ newtest
3.2远程文件复制【scp】
说明:
Linuxscp命令用于Linux之间复制文件和目录。
scp是securecopy的简写,scp是linux系统下基于ssh登录进行安全的远程文件拷贝命令。
句型缩写:
scp
可选参数
file_sourcefile_target
常用参数解读:
-r:递归复制整个目录。-Pport:注意是小写的P,port是指定数据传输用到的端标语
命令格式详尽:
[root@10-6-161-230-Mob gzip]# scp 本地文件 远程用户名@远程ip:远程路径
或者
[root@10-6-161-230-Mob gzip]# scp 本地文件 远程用户名@远程ip:远程文件
或者
[root@10-6-161-230-Mob gzip]# scp 本地文件 远程ip:远程路径
或者
[root@10-6-161-230-Mob gzip]# scp 本地文件 远程ip:远程路径
递归目录复制:
[root@10-6-161-230-Mob gzip]#scp -r 本地目录 远程用户名@远程ip:远程目录
或者
[root@10-6-161-230-Mob gzip]#scp -r 本地目录 远程ip:远程目录
指定端标语复制:
#scp 命令使用端口号 57522
[root@10-6-161-230-Mob gzip]# scp -P 57522 用户名@ip:文件名 远程路径
操作示例展示:
两台机器IP分别为:A.10.6.161.230linux是什么系统,B.10.6.161.231。
1.在A服务器上操作,将B服务器上/home/lk/目录下所有的文件全部复制到本地的/root目录下:
[root@10-6-161-230-Mob gzip]# scp -r root@:10.6.161.230/home/lk /root
2.在A服务器中将/root/lk目录下所有的文件传输到B的/home/lk/cpfile目录下
[root@10-6-161-230-Mob gzip]# scp -r /root/lk root@10.6.161.230:/home/lk/cpfile
3.在A服务器中将/root/lk目录下所有的文件传输到B的/home/lk/cpfile目录下使用指定端口57522
[root@10-6-161-230-Mob gzip]# scp -P 57522 -r /root/lk root@10.6.161.230:/home/lk/cpfile