深度剖析Linux文件备份压缩命令—企业实战
nanshan 2025-03-26 14:39 18 浏览 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
相关推荐
- 0722-6.2.0-如何在RedHat7.2使用rpm安装CDH(无CM)
-
文档编写目的在前面的文档中,介绍了在有CM和无CM两种情况下使用rpm方式安装CDH5.10.0,本文档将介绍如何在无CM的情况下使用rpm方式安装CDH6.2.0,与之前安装C5进行对比。环境介绍:...
- ARM64 平台基于 openEuler + iSula 环境部署 Kubernetes
-
为什么要在arm64平台上部署Kubernetes,而且还是鲲鹏920的架构。说来话长。。。此处省略5000字。介绍下系统信息;o架构:鲲鹏920(Kunpeng920)oOS:ope...
- 生产环境starrocks 3.1存算一体集群部署
-
集群规划FE:节点主要负责元数据管理、客户端连接管理、查询计划和查询调度。>3节点。BE:节点负责数据存储和SQL执行。>3节点。CN:无存储功能能的BE。环境准备CPU检查JDK...
- 在CentOS上添加swap虚拟内存并设置优先级
-
现如今很多云服务器都会自己配置好虚拟内存,当然也有很多没有配置虚拟内存的,虚拟内存可以让我们的低配服务器使用更多的内存,可以减少很多硬件成本,比如我们运行很多服务的时候,内存常常会满,当配置了虚拟内存...
- 国产深度(deepin)操作系统优化指南
-
1.升级内核随着deepin版本的更新,会自动升级系统内核,但是我们依旧可以通过命令行手动升级内核,以获取更好的性能和更多的硬件支持。具体操作:-添加PPAs使用以下命令添加PPAs:```...
- postgresql-15.4 多节点主从(读写分离)
-
1、下载软件[root@TX-CN-PostgreSQL01-252software]#wgethttps://ftp.postgresql.org/pub/source/v15.4/postg...
- Docker 容器 Java 服务内存与 GC 优化实施方案
-
一、设置Docker容器内存限制(生产环境建议)1.查看宿主机可用内存bashfree-h#示例输出(假设宿主机剩余16GB可用内存)#Mem:64G...
- 虚拟内存设置、解决linux内存不够问题
-
虚拟内存设置(解决linux内存不够情况)背景介绍 Memory指机器物理内存,读写速度低于CPU一个量级,但是高于磁盘不止一个量级。所以,程序和数据如果在内存的话,会有非常快的读写速度。但是,内存...
- Elasticsearch性能调优(5):服务器配置选择
-
在选择elasticsearch服务器时,要尽可能地选择与当前业务量相匹配的服务器。如果服务器配置太低,则意味着需要更多的节点来满足需求,一个集群的节点太多时会增加集群管理的成本。如果服务器配置太高,...
- Es如何落地
-
一、配置准备节点类型CPU内存硬盘网络机器数操作系统data节点16C64G2000G本地SSD所有es同一可用区3(ecs)Centos7master节点2C8G200G云SSD所有es同一可用区...
- 针对Linux内存管理知识学习总结
-
现在的服务器大部分都是运行在Linux上面的,所以,作为一个程序员有必要简单地了解一下系统是如何运行的。对于内存部分需要知道:地址映射内存管理的方式缺页异常先来看一些基本的知识,在进程看来,内存分为内...
- MySQL进阶之性能优化
-
概述MySQL的性能优化,包括了服务器硬件优化、操作系统的优化、MySQL数据库配置优化、数据库表设计的优化、SQL语句优化等5个方面的优化。在进行优化之前,需要先掌握性能分析的思路和方法,找出问题,...
- Linux Cgroups(Control Groups)原理
-
LinuxCgroups(ControlGroups)是内核提供的资源分配、限制和监控机制,通过层级化进程分组实现资源的精细化控制。以下从核心原理、操作示例和版本演进三方面详细分析:一、核心原理与...
- linux 常用性能优化参数及理解
-
1.优化内核相关参数配置文件/etc/sysctl.conf配置方法直接将参数添加进文件每条一行.sysctl-a可以查看默认配置sysctl-p执行并检测是否有错误例如设置错了参数:[roo...
- 如何在 Linux 中使用 Sysctl 命令?
-
sysctl是一个用于配置和查询Linux内核参数的命令行工具。它通过与/proc/sys虚拟文件系统交互,允许用户在运行时动态修改内核参数。这些参数控制着系统的各种行为,包括网络设置、文件...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- linux 查询端口号 (58)
- docker映射容器目录到宿主机 (66)
- 杀端口 (60)
- yum更换阿里源 (62)
- internet explorer 增强的安全配置已启用 (65)
- linux自动挂载 (56)
- 禁用selinux (55)
- sysv-rc-conf (69)
- ubuntu防火墙状态查看 (64)
- windows server 2022激活密钥 (56)
- 无法与服务器建立安全连接是什么意思 (74)
- 443/80端口被占用怎么解决 (56)
- ping无法访问目标主机怎么解决 (58)
- fdatasync (59)
- 405 not allowed (56)
- 免备案虚拟主机zxhost (55)
- linux根据pid查看进程 (60)
- dhcp工具 (62)
- mysql 1045 (57)
- 宝塔远程工具 (56)
- ssh服务器拒绝了密码 请再试一次 (56)
- ubuntu卸载docker (56)
- linux查看nginx状态 (63)
- tomcat 乱码 (76)
- 2008r2激活序列号 (65)