当前位置: 首页 > article >正文

LinuxBasicsForHackers笔记 -- 压缩和归档

压缩分为有损或无损。有损压缩对于减小文件大小非常有效,但会丢失信息的完整性。换句话说,压缩后的文件与原始文件并不完全相同。 这种类型的压缩非常适合图形、视频和音频文件,文件中的微小差异几乎不会被注意到。

本章重点介绍这种无损压缩类型,许多实用程序和算法都可以提供这种压缩类型。 不幸的是,正如您想象的那样,无损压缩不如有损压缩那么有效,但有时,完整性往往比压缩比重要得多。

将文件打包在一起

通常,压缩文件时要做的第一件事是将它们组合成存档。在大多数情况下,归档文件时,您将使用 tar 命令。Tar 代表磁带存档,指的是系统使用磁带存储数据的史前计算时代。 tar 命令从多个文件创建一个文件,该文件称为存档、tar 文件或 tarball。

您可以使用下面的命令将多个文件组合起来创建一个存档文件:tar -cvf <文件名.tar> 文件1 文件2 文件3

c 选项表示创建,v(代表详细且可选)列出 tar 正在处理的文件,f 表示写入以下文件。

我们可以通过使用带有 -t 内容列表开关的 tar 命令来显示 tarball 中的这些文件,而无需提取它们,如下所示:tar -tvf <文件名>.tar

您可以使用带有 -x(extract)开关的 tar 命令从 tarball 中提取这些文件,如下所示:tar -xvf <文件名>.tar

如果您想提取文件并“静默”执行,即不显示任何输出,您可以简单地删除 -v(verbose)开关,如下所示:tar -xf <文件名>.tar

请注意,默认情况下,如果提取的文件已存在,tar 将删除现有文件并将其替换为提取的文件。

压缩文件

现在我们有一个存档文件,但该文件比原始文件的总和还要大。 如果您想压缩这些文件以便于传输怎么办?Linux 有几个能够创建压缩文件的命令。 我们将看看这些:

  • gzip, which uses the extension .tar.gz or .tgz
  • bzip2, which uses the extension .tar.bz2
  • compress, which uses the extension .tar.z

这些都能够压缩我们的文件,但是它们使用不同的压缩算法并且具有不同的压缩率。一般来说,compress 速度最快,但生成的文件较大; bzip2 最慢,但生成的文件最小; gzip 介于两者之间。

gzip压缩

gzip <文件名>.tar – 对文件进行压缩。
gunzip <文件名>.* – 使用gunzip 命令(GNU unzip 的缩写)解压缩文件。

bzip2压缩

bzip2 <文件名>.tar – 对文件进行压缩。
bunzip2 <文件名>.* – 解压缩文件。

compress压缩

compress <文件名>.tar – 对文件进行压缩。
uncompress <文件名>.* – 解压缩文件。

创建存储设备的逐位或物理副本

dd 命令会逐位复制文件、文件系统甚至整个硬盘驱动器。 这意味着即使已删除的文件也会被复制(是的,重要的是要知道已删除的文件可能是可恢复的),从而可以轻松发现和恢复。大多数逻辑复制实用程序(例如 cp)不会复制已删除的文件。

需要注意的是,dd 命令不应用于典型的日常文件和存储设备复制,因为它非常慢; 其他命令可以更快、更有效地完成工作。 不过,当您需要一份没有文件系统或其他逻辑结构的存储设备副本时(例如在取证调查中),它非常有用。

dd 命令的基本语法如下:dd if=inputfile of=outputfile

因此,如果您想制作闪存驱动器的物理副本,假设闪存驱动器是 sdb,您将输入以下内容:dd if=/dev/sdb of=/root/flashcopy

有许多选项可与 dd 命令一起使用,您可以对这些选项进行一些研究,但最有用的是 noerror 选项和 bs(block size)选项。 顾名思义,noerror 选项即使遇到错误也会继续复制。 bs 选项允许您确定要复制的数据的块大小(每个块读取/写入的字节数)。默认情况下,它设置为 512 字节,但可以更改它以加快进程。例如: dd if=/dev/media of=/root/flashcopy bs=4096 conv:noerror


http://www.kler.cn/news/162800.html

相关文章:

  • AIGC创作系统ChatGPT网站源码,Midjourney绘画,GPT联网提问/即将支持TSS语音对话功能
  • 【漏洞复现】万户协同办公平台ezoffice wpsservlet接口存在任意文件上传漏洞 附POC
  • 因为 postman环境变量全局变量设置好兄弟被公司优化了!
  • C语言精选——选择题Day39
  • 共享娱乐宝库:电视盒子影视源分享攻略
  • 常用Nmap脚本
  • 新时代商业旨意:传统商家如何变革?
  • 潮落云起:中国云桌面的产业变局
  • maven学习笔记总结
  • TCP/IP_整理起因
  • 【已解决】MySQL:执行存储过程报错(MySQL字符集和排序方式冲突)
  • 计算机网络入侵检测技术研究
  • n个人排成一圈,数数123离队
  • 在 Mac 上使用浅色或深色外观
  • 扁平的MutableList元素每隔若干元素一组装入新MutableList,Kotlin
  • Fabric.js 实战开发使用介绍
  • 谈谈c语言中的sizeof
  • 天文馆元宇宙3d展厅打造沉浸式的参观体验
  • Spring Boot实现接口幂等
  • 国产接口测试工具APIpost
  • 数据结构线性表-栈和队列的实现
  • kafka高吞吐、低延时、高性能的实现原理
  • yarn和npm的区别
  • QToolTip 是 Qt 框架中用于显示工具提示(Tooltip)的类
  • LLaMA-Factory微调ChatGLM3报错: Segmentation fault (core dumped)
  • 工程管理系统简介 工程管理系统源码 java工程管理系统 工程管理系统功能设计
  • 一文详解Java单元测试Junit
  • SEO优化是什么,如何进行SEO优化
  • python的websocket方法教程
  • MySQL中是如何insert数据的