深度剖析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企业级项目实战,源码深度剖析视频教程

Spark 项目实战企业级,源码深度剖析,机器学习,数据分析

深度剖析 Linux 的 3 种“拷贝”命令

Linux 压缩解压及备份命令

Linux 的备份和压缩命令

Linux操作命令分类详解 - 压缩备份