LinuxBasicsForHackers笔记 -- 压缩和归档

2023-12-13 07:33:51

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

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

将文件打包在一起

通常,压缩文件时要做的第一件事是将它们组合成存档。在大多数情况下,归档文件时,您将使用 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

文章来源:https://blog.csdn.net/jiawenhao_/article/details/134866600
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。