深度剖析Linux文件备份压缩命令--企业实战
Posted 涤生手记
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深度剖析Linux文件备份压缩命令--企业实战相关的知识,希望对你有一定的参考价值。
写在前面:
大家都知道,在Windows电脑中压缩文件文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件 时,可以减少传输的时间。。 在 Linux系统中同样支持这种操作,而且不同的压缩方式,压缩的效果还不一样,下面就和大家分享一下我日常工作中维护Linux系统常用的一些压缩命令。
一、Linux中常用的压缩文件拓展名
工作中常用压缩文件拓展名
文件拓展名类型 拓展名简述
- *.gz gzip程序压缩的文件:仅压缩普通文件
- *.bz2 bzip2程序压缩的文件:仅压缩普通文件
- *.tar tar程序打包的数据,并没有经过压缩
- *.tar.gz tar程序打包的文件,其中经过gzip的压缩
- *.tar.bz2 tar程序打包的文件,其中经过bzip2的压缩 *.zip zip压缩文件
二、常用压缩命令详解
2.1 gzip 压缩和解压文件
gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。gzip不仅可以用来压缩大的、较少使用的文件以节省磁盘空间,还可以和tar命令一起构成Linux操作系统中比较流行的压缩文件格式。据统计,gzip命令对文本文件有60%~70%的压缩率。
使用语法:
gzip [选项] 压缩(解压缩)的文件名
参数详解:
-c 将输出写到标准输出上,并保留原有文件。
-d 将压缩文件解压。
-l 对每个压缩文件,显示下列字段:
第一列:压缩文件的大小 第二列:未压缩文件的大小第三列:压缩比 第四列:未压缩文件的名字
-r 递归式地查找指定目录并压缩其中的所有文件或者是解压缩。
-t 测试,检查压缩文件是否完整。
-v 对每一个压缩和解压的文件,显示文件名和压缩比。
-num 用指定的数字num调整压缩的速度,-1或--fast表示最快压缩方法(低压缩比),-9或--best表示最慢压缩方法(高压缩比)。系统缺省值为 6。
常用操作示例:
A.压缩A指定目录下的所有文件
在 目录/gzip 下有文件 1.txt 2.txt 3.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选项,这样也可以对子目录进行递归的。而且对原目录没有影响,只是目录里面的文件相应变成了.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命令详解
Linux gunzip 命令用于解压文件。
gunzip 是个使用广泛的解压缩程序,它用于解开被 gzip 压缩过的文件,这些压缩文件预设最后的扩展名为 .gz。事实上 gunzip 就是 gzip 的硬连接,因此不论是压缩或解压缩,都可通过 gzip 指令单独完成。
比如下面的示例:
[root@test ~]#gzip –d /test/test.testzip.gz
## 等价于执行
[root@test ~]#gunzip /test/test.zip.gz
2.2 tar--打包和备份的归档工具
--将多个零散的文件归档为一个单独的文件,并且能从归档中还原文件。
重要说明:工作中很常用
首先要弄清两个概念:打包和压缩。打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件。
为什么要区分这两个概念呢?这源于Linux中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip bzip2命令)。
语法
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 -cf all.tar *.txt
B:解压文件到当前目录
参考命令:tar -xvf all.tar
C:解压文件到指定目录
参考命令:tar -xvf all.tar -C /test2/
注意:核心参数是 -C(大写)
D:打包并压缩【工作中很常用】
tar可在打包时直接压缩,支持gzip压缩、bzip2压缩和xz压缩。
使用-z选项可压缩成gzip格式的文件
参考命令:tar -zcvf test.tar.gz /test2/
F:-zx选项,解压.tar.gz格式的压缩包
参考命令:
tar -xvzf test.tar.gz #j解压到当前目录
tar -xvzf test.tar.gz -C /test4 #解压到指定目录
2.3 Linux zip 命令用于压缩文件。
说明: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.3 Linux unzip 命令用于解压文件
说明:
Linux unzip命令用于解压缩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】
语法:
cp [options] source dest 或者 cp [options] source... directory
常用参数详解:
- -r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
操作示例:
使用指令 cp 将当前目录 test/ 下的所有文件复制到新目录 newtest 下,输入如下命令:
[root@10-6-161-230-Mob gzip]# cp –r test/ newtest
3.2 远程文件复制【scp】
说明:
Linux scp 命令用于 Linux 之间复制文件和目录。
scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。
语法简写:
scp [可选参数] file_source file_target
常用参数详解:
- -r: 递归复制整个目录。
- -P port:注意是大写的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.230,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
以上是关于深度剖析Linux文件备份压缩命令--企业实战的主要内容,如果未能解决你的问题,请参考以下文章
分享两套csdn下载的Spark企业级项目实战,源码深度剖析视频教程