linux 文件的压缩和打包

在我们的生活中,经常会和朋友、同事、客户发一些文件。为了能够更加快速、高效的将文件传递出去,经常会用到压缩工具。压缩工具通过一定的算法,把数据给尽可能的缩小。这样不仅方便传递、而且可以节省空间。有时候我们需要把一些零散的文件集中到一起。通过使用打包工具,很容易就能把多个文件集中在一个包内,再对包进行压缩传递。是不是很方便呢!下面我们将介绍linux环境下如何对文件进行打包、压缩。
1、文件的压缩
文件的压缩方式有5种:compress、gzip、bzip2、xz、zip
各打包工具的使用及常用选项如下:
(1)compress(.Z结尾的文件)
-d 解压缩
uncompress
zcat X.Z > X
-c 将结果打印到屏幕上,配合重定向,不会覆盖原文件,但权限会变。
-f 默认不对硬链接数为2及以上的文件压缩,加上f,强制压缩指定文件,而其他同inode的文件硬链接数减1.
-v 显示详细过程。包含压缩进度
(2)gzip(.gz结尾的文件)
-d 解压缩
gunzip
zcat X.gz > X
-c 将结果打印到屏幕上,配合重定向,不会覆盖原文件,但权限会变。
-f 默认不对硬链接数为2及以上的文件压缩,加上f,强制压缩指定文件,而其他同inode的文件硬链接数减1.
-v 显示详细过程。
-# 数字越大,压缩比越高,速度越慢,文件越小。
-1 等于 --fast
-2,3,4,5,6(default),7,8
-9 等于 --best
(3)bzip2(.bz2结尾的文件)
-d 解压缩
bunzip
bzcat X.bz2 > X
-k 保留原文件
-c 将结果打印到屏幕上,配合重定向,不会覆盖原文件,但权限会变。
-f 默认不对硬链接数为2及以上的文件压缩,加上f,强制压缩指定文件,而其他同inode的文件硬链接数减1.
-v 显示详细过程。
-# 数字越大,压缩比越高,速度越慢,文件越小。
-1 等于 --fast
-2,3,4,5,6,7,8
-9 等于 --best (default)
(4)xz(.xz结尾的文件)
-d 解压缩
xzcat
-k 保留原文件
-f 默认不对硬链接数为2及以上的文件压缩,加上f,强制压缩指定文件,而其他同inode的文件硬链接数减1.
-v 显示详细过程。
-# 数字越大,压缩比越高,速度越慢,文件越小。
-0 等于 --fast
-1 -2,3,4,5,6(default),7,8
-9 等于 --best
(5)zip(.zip结尾的文件)
unzip
|zip 将生成的文件名 -
可以将管道前的输出结果转为文件并压缩。通过此方式压缩的文件只能使用“unzip -p 压缩包 > 新文件 ”来解压缩
unzip -p 预览解压缩后的内容到屏幕,可以配置重定向将结果保存到指定文件,权限会发生变化。
2、文件的打包
生活中我们常见到文件以 .tar.xz结尾,这表示了它把多个文件用tar打包后进行了压缩
(1)tar
-cf 创建包名字 原文件(可以指定多个)
-tf 包名字 显示包中的文件名
-tvf 详细显示包中的文件名
-rf 包名字 新文件名(可以指定多个)
--delete -f 包名字 被删除的文件名(可以指定多个)
eg:tar --delete -f sumfile.tar ./f{1..4}
-xf 包名字 解出所有的文件到当前目录
-xf 包名字 文件名 解所指定的文件到当前目录
-C 解包到指定目录
-v 显示过程
-Jcf 创建包的名字(.tar.xz) 原文件(可以指定多个) 打包并用xz压缩
-jcf 创建包的名字(.tar.bz2) 原文件(可以指定多个) 打包并用bzip压缩
-zcf 创建包的名字(.tar.gz) 原文件(可以指定多个) 打包并用gzip压缩
-T 指定个列表,包含需要被打包的文件,以换行符为间隔
-X 指定个排除列表,以换行符为间隔(不支持递归排除)
分割大的 tar 文件为多份小文件:
split –b Size –d tar-file-name prefix-name
合并
cat 被分隔出的多个文件名 > 单个文件名
(2)cpio
cpio 命令是通过重定向的方式将文件进行打包备份,还原恢复
的工具,它可以解压以“.cpio” 或者“.tar”
cpio [ 选项] > 文件名或者设备名
cpio [ 选项] < 文件名或者设备名
选项
-o 将文件拷贝打包成文件或者将文件输出到设备上
-i 解包,将打包文件解压或将设备上的备份还原到系统
-t 预览,查看文件内容或者输出到设备上的文件内容
-v 显示打包过程中的文件名称。
-d 解包生成目录,在cpio 还原时,自动的建立目录
-c 一种较新的存储方式
将etc 目录备份:
find ./etc -print |cpio -ov >etc.cpio
内容预览
cpio –tv < etc.cpio
要 解包 文件
cpio –idv < etc.cpio
3、参数替换
由于很多命令不 支持 管道|来传递参数,而日常工作 中有 这个必要,所以就有了xargs 命令
xargs 用于产生某个命令的参数,xargs 可以读入 stdin 的数据,并且以空格符 或 回车符将stdin的数据分隔成为arguments
注意:文件 名 或者是其他意义的名词内含有 空格符 的情况
有些命令不能接受过多参数 ,命令执行 可能会 失败,xargs可以解决
示例:
ls f* |xargs rm
find /sbin -perm +700 |ls -l 这个命令是错误的
find /sbin -perm +7000 | xargs ls –l
find 和xargs 格式:find | xargs COMMAND
----------------------------------------------------------------------------------------------------------------------
练习:试着将find查找到的文件进行打包
法一:利用-T我们可以把find搜索到的列表里的文件打包,利用-X我们可以将若干保密文件规避掉
#find -maxdepth 1 -name "f[0-9]" >filelist.txt
#echo ./f2 >except.txt
[root@Centos7 test]#cat filelist.txt
./f1
./f2
./f3
./f4
[root@Centos7 test]#cat except.txt
./f2
[root@Centos7 test]#tar -cvf file.tar -T filelist.txt -X except.txt
[root@Centos7 test]#tar -tvf file.tar
-rw-r--r-- root/root 18 2017-08-10 22:35 ./f1
-rw-r--r-- root/root 21 2017-08-10 22:36 ./f3
-rw-r--r-- root/root 11 2017-08-10 22:36 ./f4
可以发现filelist.txt列表里除了./f2(被-X 排除列表排除了)没有被打包,其他均被打包在了file.tar里
法2:利用-exec把搜索到的文件直接打包
#find -name "f*" -exec tar -rvf sumfile.tar {} \;
注意:这里tar的选项是rvf,为什么是追加而不是创建呢?
因为-exec命令 会把查到的所有文件一 一传递给tar,如果是创建的话,每次创建都会覆盖之前打包的文件,
到最后包里只能剩下一个文件。所以我们只能用追加的方法,将他们一 一添加至打包文件,当然这个包需要提前创建。
----------------------------------------------------------------------------------------------------------------------------

转载于:https://www.cnblogs.com/whblinux/p/7351338.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/355003.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 爬取svg数据_抓取SVG图表

我试图从以下链接中获取以下svg&#xff1a;我要刮的部分如下&#xff1a;我不需要图表中的文字(只需要图表本身)。但是&#xff0c;我以前从来没有抓取过svg图像&#xff0c;我不确定这是否可能。我环顾四周&#xff0c;但找不到任何有用的python包来直接执行此操作。在我知道…

protected default

protected:主要作用 保护子类 子类可以继承和使用它的成员 其他不行 default:针对本包 类内部本包子类外部包publicOKOKOKOKprotectedOKOKOK defaultOKOK private OK 转载于:https://www.cnblogs.com/love-yangerlei/p/7352337.html

Java 8:再见手册SQL,您好!

大多数用Java编写的应用程序都需要某种形式的数据存储。 在小型应用程序中&#xff0c;这通常是通过使用普通SQL查询的原始JDBC连接来实现的。 另一方面&#xff0c;较大的系统通常使用对象关系映射&#xff08;ORM&#xff09;框架来处理数据库通信。 这两种方法都有优点和缺点…

java 鼠标拖动矩形_java – 用鼠标拖动创建矩形,而不是绘制

nb-首先要注意的是,这是使用Java 7完成的,在Java 6中创建透明窗口的方式不同,在更新10之下是不可能的(我相信)基本上,这会创建一个透明窗口,其大小和位置可以覆盖整个虚拟屏幕(也就是说,如果您有多个屏幕,它将覆盖所有虚拟屏幕).然后我使用JPanel作为主要容器来捕获鼠标事件并执…

java实现123n_java三线程交替打印123……n

使用多线程交替打印1--n&#xff0c;a进程打印1,4,7,……(3n1),b进程打印2,7,10,……(3n2),c进程打印3,6,9,……(3n)涉及到多线程的同步&#xff0c;阻塞&#xff0c;wait,notify代码如下Num.javapublic class Num {private int num 0;public Num(int num) {this.num num;}pu…

8月12

MTBF两次故障的时间&#xff0c;时间越长越好。 MTTR两次系统恢复的时间&#xff0c;越短越好 修改完参数后若出现报205的错误&#xff0c;检查路径 控制文件 SQL> show parameter control_files SQL> select * from v$controlfile; 修改路径&#xff1a; $ cd $ORACLE_H…

spring roo_使用Spring Roo进行快速云开发–第2部分:VMware Cloud Foundry

spring rooSpring Roo是在Java平台上提供快速应用程序开发的工具。 我已经解释了何时使用它&#xff1a; http : //www.kai-waehner.de/blog/2011/04/05/when-to-use-spring-roo 。 Spring Roo目前支持两种针对云计算的解决方案&#xff1a;Google App Engine&#xff08;GAE&a…

this指针 java_彻底理解Java中this指针

每次看到Java中的this指针&#xff0c;总摸不着头绪。在网上看了很多人的讲解&#xff0c;还是不知道this指针到底是什么东西&#xff0c;今天的的这篇日志可以让你看清this到底是谁。(内容摘自&#xff1a;http://www.mathcs.emory.edu/~cheung/Courses/170.2010/Syllabus/03/…

python中的浅拷贝和深拷贝

本篇介绍下python中的深拷贝和浅拷贝&#xff0c;主要从基本类型、类、不可变类型等方面进行介绍。 1.介绍拷贝之前首先应该明白is和的区别&#xff0c;即is表示同一个对象&#xff0c;比较的是值 >>> a 1000 >>> b 1000 >>> a b True >>&…

Spring开发人员知道的一件事

在最近关于&#xff08;核心&#xff09;Spring Framework的培训课程中&#xff0c;有人问我&#xff1a;“&#xff08;Java&#xff09;Spring开发人员是否应该知道一件事&#xff0c;那应该是什么&#xff1f;” 这个问题使我措手不及。 是的&#xff0c;&#xff08;核心&a…

mysql匿名事务gtid_MySQL GTID (二)

MySQL GTID 系列之二三.在线将GTID转化为传统模式环境见上篇系列文章关闭GTID,不用停止服务,不影响线上业务3.1 关闭GTID复制,调整为传统复制#SLVAE实例上停止复制STOP SLAVE#SLVAE实例上查看复制的位置SHOW SLAVE STATUS \G# 查看 Master_Log_File 和 Read_Master_Log_Pos对应…

JavaWeb(十七)——JSP中的九个内置对象

一、JSP运行原理 每个JSP 页面在第一次被访问时&#xff0c;WEB容器都会把请求交给JSP引擎&#xff08;即一个Java程序&#xff09;去处理。JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet) &#xff0c;然后按照servlet的调用方式进行调用。  由于JSP第一次访问…

jrockit_JRockit – JRCMD有用的命令

jrockit自2007年以来&#xff0c;我一直在使用JRockit。我发现它的速度比Hotspot慢&#xff0c;但在诊断和分析问题上总是更好。 从去年夏天开始&#xff0c;我一直在为一家国际电信系统供应商工作。 我们在HP OpenCall融合通信平台之上为电信运营商设计和实施各种产品。 我是开…

java并发问题_并发理论基础:并发问题产生的三大根源

并发问题变幻莫测&#xff0c;一谈到并发就显得非常高深&#xff0c;一般的程序员对于并发问题也是头疼不已&#xff0c;但是随着网络互联越来越普遍&#xff0c;大规模用户访问网站程序也越来越频繁&#xff0c;并发问题又无法避免。在我们解决并发问题前首先要理解产生并发问…

[luoguP1849] [USACO12MAR]拖拉机Tractor(spfa)

传送门 神奇的spfa #include <queue> #include <cstdio> #include <cstring> #include <iostream> #define N 1010 #define max(x, y) ((x) > (y) ? (x) : (y))int n, mx, my; int dis[N][N]; bool map[N][N], vis[N][N]; int dx[4] {0, -1, 0, 1…

在Eclipse上创建JSF / CDI Maven项目

当我在研究JSF和CDI示例时&#xff0c;我认为提及创建JSF和CDI Maven项目所需的步骤会很有用。 您可以找到以下步骤。 工具类 默认情况下&#xff0c;M2E插件随附的Eclipse Luna。 因此&#xff0c;无需自己安装插件。 WildFlye8.x。 从主菜单中选择文件->新建->其他。…

luoguP3690 【模板】Link Cut Tree (动态树)[LCT]

题目背景 动态树 题目描述 给定&#xff2e;个点以及每个点的权值&#xff0c;要你处理接下来的&#xff2d;个操作。操作有&#xff14;种。操作从&#xff10;到&#xff13;编号。点从&#xff11;到&#xff2e;编号。 &#xff10;&#xff1a;后接两个整数&#xff08;&a…

python爬虫多进程_Python爬虫技术--基础篇--多进程

要让Python程序实现多进程(multiprocessing)&#xff0c;我们先了解操作系统的相关知识。Unix/Linux操作系统提供了一个fork()系统调用&#xff0c;它非常特殊。普通的函数调用&#xff0c;调用一次&#xff0c;返回一次&#xff0c;但是fork()调用一次&#xff0c;返回两次&am…

java 电力系统_算法java实现--动态规划--电路布线问题

/** dianlubuxian.java* Version 1.0.0* Created on 2017年11月30日* Copyright ReYo.Cn*/package reyo.sdk.utils.test.dy;/*** 创 建 人&#xff1a;AdministratorReyoAut * 创建时间&#xff1a;2017年11月30日 下午4:58:56** author ReYo* version 1.0*//*** 电路布线问题(…

百度图片网址

http://qcloud.dpfile.com/pc/jPAgaVMWC7zueHYEzky7IUJs0w6QIgvTQ0p08wxCK1OUDUk6-KqvLg70OVUXtjEHTYGVDmosZWTLal1WbWRW3A.jpg转载于:https://www.cnblogs.com/leshen/p/7387677.html