Linux(6):文件与文件系统的压缩,打包与备份

压缩文件的用途与技术

由于 1 byte = 8 bits ,所以每个byte当中会有8个空格,而每个空格可以是0,1

其实文件里面有相当多的『空间』存在,并不是完全填满的,而『压缩』的技术就是将这些『空间』填满,以让整个文件占用的容量下降。
『压缩过的文件]并无法直接被操作系统所使用的,因此,若要使用这些被压缩过的文件数据,则必须解压缩』将他『还原』回来未压缩前的模样。

压缩比等于压缩后与压缩的文件所占用的磁盘空间大小的比值。

Linux 系统常见的压缩指令

常见的几个压缩拓展名:
在这里插入图片描述

gzip,zcat/zmore/zless/zgrep

gzip 可以解开:compress,zip 与 gzip 等软件所压缩的文件。gzip 所建立的压缩文件为 *.gz。

gzip [-cdtc#] 档名

在这里插入图片描述可以使用 zcat 读取压缩文件

zcat 档名

cat/more/less 可以使用不同的方式来读取纯文本档;
zcat/zmore/zless 则可以对应于 cat/more/less 的方式来读取纯文本档被压缩后的压缩文件;
由于 gzip这个压缩指令主要想要用来取代compress 的,所以不但 compress 的压缩文件案可以使用gzip 来解开,同时 zcat这个指令可以同时读取compress 与gzip 的压缩文件。
egrep可以用来搜寻关键词:从文字压缩文件当中找数据

bzip2,bzcat/bzmore/bzless/bzgrep

bzip2 [-cdkzv#] 档名
bzcat 档名.bz2

在这里插入图片描述
bzip2 压缩时间比 gzip 久,压缩率高。

xz,xzcat/xzmore/xzless/xzgrep

xz [-dtlkc#] 档名
xcat 档名.xz

在这里插入图片描述
它可以将 gzip压缩比的21% 进一步优化到 15%。时间久。。。。

打包指令:tar

打包与压缩:

tar [-zl-jl-I] [cv] [-f 待建立的新档名] filename...

查看档名:

tar [-zl-jl-I] [tv] [-f 已有档名]

解压缩:

tar [-zl-jl-I] [xv] [-f 已有档名] [-C 目录]

在这里插入图片描述
仅解开单一文件:使用 -jtv 找到要的档名,将该档名解开

tar -jtv -f /root/etc.tar.bz2|gep '要的文档名'
## 找到后,解开
tar -jxv -f 压缩包.tar.baz2 待解开的文档名

打包某目录,但不含某些文件:使用 --exclude

tar -jcv -f /root/system.tar.bz2 --exclude=/root/etc*

仅备份比某个时刻新的文件:使用 --newer-mtime

tar -jcv -f /root/etc.newer.then.paswd.tar.bz2 --newer-mtime="2015/06/17" /etc/*

tar 打包出来的文件有没有进行压缩所得到文件称呼不同:
如果仅是打包而已,就是[tar -cv -f file.tar]而已,这个文件我们称呼为 tarfile
如果还有进行压缩的支持,例如[tar-jcv -f file.tar.bz2]时,称呼为 tarball

在 tar 的使用中,有一种方式最特殊,那就是透过标准输入输出的数据流重导向(standard input/standard output),以及管线命令(pipe)的方式,将待处理的文件一边打包一边解压缩到目标目录去。

tar -cvf - /etc | tar -xvf -
#这个动作有点像是cp -r /etc /tmp
#要注意的地方在于输出档变成-而输入档也变成-,又有一个Ⅰ存在~
#一这分别代表standard output , standard input与管线命令
#简单的想法中,可以将 – 想成是在内存中的一个装置(缓冲区)。

XFS 文件系统的备份与还原

xfsdump 除了可以进行文件系统的完整备份外,还可以进行累积备份。
累积备份:在第一次使用xfsdump进行完整备份后,等过一段时间的文件系统自然运作后,再进行第二次xfsdump时,就可以选择累积备份了,此时新备份的数据只会记录与第一次完整备份所有差异的文件。
第一份备份一定是完整备份,完整备份在 xfsdump 当中被定义为 level 0。第二次备份时,被定义为 level1,比较过后,备份有变化的文件。。。

xfsdump 限制:
1.xfsdump 不支援没有挂载的文件系统备份,所以只能备份已挂载的;
2.xfsdump 必须使用root的权限才能操作(涉及文件系统的关系);
3.xfsdump 只能备份XFS 文件系统;
4.xfsdump 备份下来的数据文件或储存媒体)只能让 xfsrestore 解析
5.xfsdump 是透过文件系统的UUID来分辨各个备份档的,因此不能备份两个具有相同UUID 的文件系统

xfsdump [-L S_label] [-M M_label] [-1 #] [-f 备份档] 待备份资料

在这里插入图片描述
特别注意,xfsdump 预设仅支持文件系统的备份,并不支持特定目录的备份
所以不能用 xfsdump去 备份/etc,因为 /etc 从来就不是一个独立的文件系统。

xfsrestore文件系统还原

xfsrestore -I
xfsrestore [-f 备份档] [-L S_label] [-s] 待复原目录
xfsrestore [-f 备份文件] -r 待复原目录
xfsrestore [-f 备份文件] -i 待复原目录

在这里插入图片描述

光盘写入工具

文本模式的刻录行为:
1.先将所需要备份的数据建置成为一个映像档(iso),利用 mkisofs 指令来处理;
2.将该映像文件刻录至光盘或 DVD 当中,利用 cdrecord 指令来处理。

mkisofs:建立映像档

mkisofs [-o 映像档] [-Jrv] [-V vol] [-m file] 待备份文件... -graft-point isodir=systemdir ...

在这里插入图片描述
光盘的格式一般称为 iso9660,这种格式一般仅支持旧版的 DOS 档名,亦即档名只能以8.3(文件名8个字符,扩展名3个字符)的方式存在。
如果加上 -r 的选项之后,那么文件信息能够被记录的比较完整,可包括 UID/GID 与权限等等。

一般预设的情况下,所有要被加到映像档中的文件都会被放置到映象文件中的根目录,如此一来可能会造成刻录后的文件分类不易的情况。所以,可以使用-graft-point这个选项,当你使用这个选项之后,可以定义位于映像文件中的目录。

可透过wodim来写入CD或DVD 刻录机

其他常见的压缩与备份工具

dd

dd 可以读取磁盘装置的内容(几乎是直接读取扇区"sector"),然后将整个装置备份成一个文件。

dd if="input_file" of="output_file" bs="block size" count="number"

在这里插入图片描述

默认 dd 是一个一个扇区去读/写的,而且即使没有用到的扇区也会倍写入备份档中。因此这个文件会变得跟原本的磁盘一模一样大。

dd 可备份完整的 partition 或 disk ,因为 dd 可读取磁盘的 sector 表面数据。

cpio

cpio 可以备份任何东西,包括装置设备文件

cpio -ovcB > [file|device] <=备份
cpio -ivcdu < [file|device] <=还原
cpio -ivct < [file|device] <=察看

在这里插入图片描述

cipo 必须要搭配类似 find 指令来读入欲备份的文件名数据

《鸟哥的Linux私房菜-基础篇》学习笔记

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

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

相关文章

5分钟搞定!学会使用pytest测试框架!

本文将会把关于 Pytest 的内容分上下两篇&#xff0c;上篇主要涉及关于 pytest 概念以及功能组件知识的介绍&#xff0c;下篇主要以一个 Web 项目来将 Pytest 运用实践中。 为什么要做单元测试 相信很多 Python 使用者都会有这么一个经历&#xff0c;为了测试某个模块或者某个…

原始类型 vs. 对象实践应用

● 首先是原始类型的例子 let lastName Williams; let oldLastName lastName; lastName Davis; console.log(lastName.oldLastName);● 然后是对象的例子 const jessica {firstName: Jessica,lastName: Williams,age: 27, }; const marriedJessica jessica; marriedJess…

教育数字化转型:塑造未来学习新范式

在国家教育数字化战略行动指引下&#xff0c;我国正积极推动数字化赋能教育高质量发展&#xff0c;以塑造教育发展的新优势。如今&#xff0c;随着科技新基建的普及和数字化赋能教育的深入推进&#xff0c;未来的教育模型正在逐渐形成。 在新的教育模型中&#xff0c;数字化学…

Doris中的物化视图(十八)

物化视图就是包含了查询结果的数据库对象&#xff0c;可能是对远程数据的本地 copy&#xff0c;也可能是一个表或多表 join 后结果的行或列的子集&#xff0c;也可能是聚合后的结果。说白了&#xff0c;就是预先存储查询结果的一种数据库对象。 在 Doris 中的物化视图&#xf…

docker的使用方法

文章目录 为什么要用dockerdocker安装docker工作原理docker命令docker搭建练习docker可视化docker镜像docker容器数据卷DockerFiledocker全流程Docker网络原理docker composedocker swarm 为什么要用docker 官网&#xff1a;https://www.docker.com文档地址&#xff1a;https:…

Jmeter接口测试——使用教程(上)

前言 jmeter是一款小巧&#xff0c;轻便、开源的性能测试工具&#xff0c;它也可以很方便的进行接口测试。 下面我就带大家学习下jmeter接口测试。 一、Jmeter简介 Jmeter是apache公司基于java开发的一款开源压力测试工具&#xff0c;体积小&#xff0c;功能全&#xff0c;使…

Java 之 final 详解

目录 一. 前言 二. final 的基础使用 2.1. 修饰类 2.2. 修饰方法 2.2.1. private 方法是隐式的 final 2.2.2. final 方法可以被重载 2.3. 修饰参数 2.4. 修饰变量 2.4.1. static final 2.4.2. blank final 2.4.3. 所有 final 修饰的字段都是编译期常量吗&#xff1f…

10年测试老鸟,自动化测试经验10条建议,一路狂飙...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、哪一刻&#x…

安卓手机SD卡不小心删除了怎么办?几步轻松恢复数据!

随着科技的不断发展&#xff0c;安卓手机已经成为了我们生活中不可或缺的一部分。然而&#xff0c;在使用安卓手机的过程中&#xff0c;我们有时会不小心将重要的文件或者照片删除掉&#xff0c;这无疑会给我们的生活带来不便。那么&#xff0c;当安卓手机的SD卡不小心被删除了…

IDEA必备插件!一键生成接口文档

IDEA是一款功能强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;它可以帮助开发人员更加高效地编写、调试和部署软件应用程序。我们在编写完接口代码后需要进行接口调试等操作&#xff0c;一般需要打开额外的调试工具&#xff0c;而今天给大家介绍一款IDEA插件&…

什么葡萄酒会适用这种双重滗析方法呢?

滗析有两个主要目的&#xff0c;一种是去除陈年或未经过滤的葡萄酒中的沉淀物。虽然沉淀物不会对你造成任何伤害&#xff0c;但当喝葡萄酒满嘴都是葡萄沉淀物时是一件很糟糕的事。其次&#xff0c;倾析葡萄酒是可以让葡萄酒“呼吸”与氧气接触的&#xff0c;氧气可以软化单宁&a…

比起转本备考不努力,更让人痛心的是这五点

在转本考试中&#xff0c;有一部分同学花费了很多时间去学习&#xff0c;看似很努力&#xff0c;却没有太大的进步与成果。 比起不努力&#xff0c;努力了没有效果才是更让人心痛的。下面这五点行为&#xff0c;希望大家一定要避免&#xff01;一、纠结转本我们身边可能不乏转…