百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 优雅编程 > 正文

深度剖析Linux文件备份压缩命令—企业实战

sinye56 2024-10-30 03:54 10 浏览 0 评论

写在前面:


大家都知道,在Windows电脑中压缩文件文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件 时,可以减少传输的时间。。 在 Linux系统中同样支持这种操作,而且不同的压缩方式,压缩的效果还不一样,下面就和大家分享一下我日常工作中维护Linux系统常用的一些压缩命令。


一、Linux中常用的压缩文件拓展名


工作中常用压缩文件拓展名


文件拓展名类型 拓展名简述


  • *.gz gzip程序压缩的文件:仅压缩普通文件
  • *.bz2 bzip2程序压缩的文件:仅压缩普通文件
  • *.tar tar程序打包的数据,并没有经过压缩
  • *.tar.gz tar程序打包的文件,其中经过gzip的压缩
  • *.tar.bz2 tar程序打包的文件,其中经过bzip2的压缩 *.zip zip压缩文件


二、常用压缩命令详解


2.1gzip 压缩和解压文件


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


?

相关推荐

程序员:JDK的安装与配置(完整版)_jdk的安装方法

对于Java程序员来说,jdk是必不陌生的一个词。但怎么安装配置jdk,对新手来说确实头疼的一件事情。我这里以jdk10为例,详细的说明讲解了jdk的安装和配置,如果有不明白的小伙伴可以评论区留言哦下...

Linux中安装jdk并配置环境变量_linux jdk安装教程及环境变量配置

一、通过连接工具登录到Linux(我这里使用的Centos7.6版本)服务器连接工具有很多我就不一一介绍了今天使用比较常用的XShell工具登录成功如下:二、上传jdk安装包到Linux服务器jdk...

麒麟系统安装JAVA JDK教程_麒麟系统配置jdk

检查检查系统是否自带java在麒麟系统桌面空白处,右键“在终端打开”,打开shell对话框输入:java–version查看是否自带java及版本如图所示,系统自带OpenJDK,要先卸载自带JDK...

学习笔记-Linux JDK - 安装&配置

前提条件#检查是否存在JDKrpm-qa|grepjava#删除现存JDKyum-yremovejava*安装OracleJDK不分系统#进入安装文件目...

Linux新手入门系列:Linux下jdk安装配置

本系列文章是把作者刚接触和学习Linux时候的实操记录分享出来,内容主要包括Linux入门的一些理论概念知识、Web程序、mysql数据库的简单安装部署,希望能够帮到一些初学者,少走一些弯路。注意:L...

测试员必备:Linux下安装JDK 1.8你必须知道的那些事

1.简介在Oracle收购Sun后,Java的一系列产品就被整合到Oracle官网中,打开官网乍眼一看也不知道去哪里下载,还得一个一个的摸索尝试,而且网上大多数都是一些Oracle收购Sun前,或者就...

Linux 下安装JDK17_linux 安装jdk1.8 yum

一、安装环境操作系统:JDK版本:17二、安装步骤第一步:下载安装包下载Linux环境下的jdk1.8,请去官网(https://www.oracle.com/java/technologies/do...

在Ubuntu系统中安装JDK 17并配置环境变量教程

在Ubuntu系统上安装JDK17并配置环境变量是Java开发环境搭建的重要步骤。JDK17是Oracle提供的长期支持版本,广泛用于开发Java应用程序。以下是详细的步骤,帮助你在Ubuntu系...

如何在 Linux 上安装 Java_linux安装java的步骤

在桌面上拥抱Java应用程序,然后在所有桌面上运行它们。--SethKenlon(作者)无论你运行的是哪种操作系统,通常都有几种安装应用程序的方法。有时你可能会在应用程序商店中找到一个应用程序...

Windows和Linux环境下的JDK安装教程

JavaDevelopmentKit(简称JDK),是Java开发的核心工具包,提供了Java应用程序的编译、运行和开发所需的各类工具和类库。它包括了JRE(JavaRuntimeEnviro...

linux安装jdk_linux安装jdk软连接

JDK是啥就不用多介绍了哈,外行的人也不会进来看我的博文。依然记得读大学那会,第一次实验课就是在机房安装jdk,编写HelloWorld程序。时光飞逝啊,一下过了十多年了,挣了不少钱,买了跑车,娶了富...

linux安装jdk,全局配置,不同用户不同jdk

jdk1.8安装包链接:https://pan.baidu.com/s/14qBrh6ZpLK04QS8ogCepwg提取码:09zs上传文件解压tar-zxvfjdk-8u152-linux-...

运维大神教你在linux下安装jdk8_linux安装jdk1.7

1.到官网下载适合自己机器的版本。楼主下载的是jdk-8u66-linux-i586.tar.gzhttp://www.oracle.com/technetwork/java/javase/downl...

window和linux安装JDK1.8_linux 安装jdk1.8.tar

Windows安装JDK1.8的步骤:步骤1:下载JDK打开浏览器,找到JDK下载页面https://d.injdk.cn/download/oraclejdk/8在页面中找到并点击“下载...

最全的linux下安装JavaJDK的教程(图文详解)不会安装你来打我?

默认已经有了linux服务器,且有root账号首先检查一下是否已经安装过java的jdk任意位置输入命令:whichjava像我这个已经安装过了,就会提示在哪个位置,你的肯定是找不到。一般我们在...

取消回复欢迎 发表评论: