Linux压缩格式与命令详解:tar、dd、cpio使用方法全解析

概述

对于文件系统的压缩和解压缩,我们需要了解压缩格式,然后学会解压和压缩即可。

本文介绍了Linux 中,常见的打包和压缩命令的使用。包括tar 打包,dd命令,cpio以及常用的压缩方式。

压缩格式

*.Z         compress 程序压缩的文件;
*.zip       zip 程序压缩的文件;
*.gz       gzip 程序压缩的文件;
*.bz2       bzip2 程序压缩的文件;
*.xz       xz 程序压缩的文件;
*.tar       tar 程序打包的数据,并没有压缩过;
*.tar.gz   tar 程序打包的文件,其中并且经过 gzip 的压缩
*.tar.bz2   tar 程序打包的文件,其中并且经过 bzip2 的压缩
*.tar.xz   tar 程序打包的文件,其中并且经过 xz 的压缩

如此多的压缩格式,其实也不用记忆,我们看格式后缀就可以了

Linux 常见压缩格式:gzip/bzip2 以及xz

compress 不在常用之列

zip 是windows常用格式

Linux压缩格式问题

我想用户一定有问题:这么多格式使用这个多压缩方式,需要学习那么多压缩格式不费事吗?linux没人针对这个这问题提出解决方案吗?

tar 打包和解压

我们知道,每一个压缩格式,对应这一个压缩命令的使用,这么多对用户来说肯定是不友好的

tar 支持将多个文件(目录)进行打包,打包完成后,通过gzip/bzip2/xz的支持,将文件进行压缩

tar 常见的压缩和解压用法

tar -jcv -f filename.tar.bz2 [目录或者文件] #压
tar -jxv -f filename.tar.bz2 -C [目录]#解压

-j 表示 bzip2 压缩/解压缩 名称:.tar.bz2

-J表示XZ 名称:.tar.bz2

-z表示gzip解压缩 tar.gz

将对应的字母进行替换即可。

dd 命令

dd 是一个在 Unix 和类 Unix 系统中常用的命令行工具,它的主要功能是进行数据转换和拷贝dd 命令可用于复制文件、处理数据流、执行备份和恢复操作等。

dd是直接读取扇区,因此可以将整个设备备份成一个文件。备份完成我们会发现,文件会变成的和磁盘一样大。它不理会文件系统,单纯得依据磁盘扇区进行备份。

dd 命令的基本语法为:

dd [选项]

以下是 dd 命令的一些常见用途和选项:

拷贝文件或设备: dd 命令可以复制文件、设备或数据流。例如,将一个文件复制到另一个文件:

dd if=input_file of=output_file

其中 input_file 是源文件,output_file 是目标文件。

制作镜像: 可以使用 dd 命令创建设备或文件的镜像。例如,制作硬盘镜像:

dd if=/dev/sda of=hard_drive_image.img

这将把 /dev/sda 的内容复制到 hard_drive_image.img 文件中。

更改数据流: dd 命令可以处理输入和输出的数据流,可以结合不同选项进行数据转换、修改等操作。

指定块大小和偏移量: 通过设置 bs(块大小)和 skip(跳过的块数)等选项,可以控制 dd 命令处理数据时的块大小和位置。

用于备份和恢复: dd 命令可以用于备份整个硬盘或分区,并在需要时进行恢复。

随机数据生成: dd 命令可以生成随机数据或空数据文件,常用于测试或填充文件。

它的常见用法包括:

创建设备镜像: 通过将一个设备的内容复制到另一个设备或文件,可以创建设备的镜像。例如,从一个硬盘复制到另一个硬盘:

dd if=/dev/sda of=/dev/sdb

这将硬盘 /dev/sda 的内容完整复制到 /dev/sdb

备份和恢复: 可以使用 dd 命令创建设备或分区的备份,并在需要时进行恢复。例如,备份分区到一个文件:

dd if=/dev/sda1 of=backup_partition.img

这会将 /dev/sda1 分区的内容复制到 backup_partition.img 文件中。

制作随机数据或空文件: dd 可以生成特定大小的随机数据或空文件。例如,生成一个 1GB 大小的随机文件:

dd if=/dev/urandom of=random_file bs=1M count=1024

这会使用 /dev/urandom 中的随机数据创建一个名为 random_file 的 1GB 文件。

对数据进行转换: dd 可以根据需要对数据进行转换,例如改变块大小、跳过特定字节数等。

dd if=/dev/sda of=/dev/sdb bs=4M conv=sync,noerror status=progress

这个示例中,bs=4M 设置了块大小为 4MB,conv=sync,noerror 用于处理错误和同步数据。

擦除设备数据: 通过将特定数据模式写入设备,可以安全地擦除设备上的数据。

dd if=/dev/zero of=/dev/sda bs=1M

这会使用 /dev/zero 中的数据覆盖硬盘 /dev/sda 上的数据。

无论何时使用 dd 命令,都要特别小心,因为它是一个强大且直接操作数据的工具。错误的使用可能导致数据丢失或系统损坏。在使用时,请务必确保指定正确的输入和输出,以及正确的参数和选项。

cpio命令

cpio 命令是在类 Unix 系统中用于归档和备份文件的一个工具。它通常与其他命令(例如 findtar)一起使用,用于创建和提取文件归档。

cpio 命令的主要功能是在文件系统中复制文件。它的名称 "cpio" 代表 "copy in, copy out",它的工作方式是读取输入并将其写入输出,因此可以用于创建归档、复制文件、备份数据等。

常见用法示例:

创建归档文件: 使用 find 命令将文件列表传递给 cpio 命令,然后将它们归档到一个文件中:

find /path/to/files -depth | cpio -o > archive.cpio

这会将 /path/to/files 下的文件列表归档到 archive.cpio 文件中。

从归档文件中提取文件: 从一个 cpio 归档文件中提取文件:

cpio -i < archive.cpio

这会从 archive.cpio 文件中提取归档的文件列表。

使用 cpiotar 进行归档和解压: cpio 通常与 findtar 一起使用,以便选择性地归档和提取文件。例如,可以将 find 的输出传递给 cpio 进行归档,然后再用 cpio 提取需要的文件。

cpio 的强大之处在于它能够以多种不同的方式读取文件列表,包括从标准输入中读取、从文件中读取列表以及使用其他命令的输出作为输入。

需要注意的是,cpio 命令有许多选项和用法,具体用法可能会因操作系统和版本而有所不同。因此,在使用时最好查看相应操作系统版本的文档或使用命令的帮助文档以了解详细的用法和选项。

发表评论

0 评论