注:只用记忆tar和gzip,zip/unzip三种命令与常用参数使用方式,其他做为了解
目录
压缩与打包的概念
常用的压缩与打包工具
tar
gzip
bzip2
xz
速记总结
1.使用 tar 进行打包
2.使用 tar 结合压缩工具
3.解压缩与解打包
其他压缩工具(zip)
在 Linux 上,可以使用多种工具来打包和压缩文件和目录。以下是 Linux 上常用的压缩和打包工具以及它们的用法:
压缩与打包的概念
- 压缩 指的是将数据以较小的尺寸存储。常见的压缩格式有 gzip、bzip2、xz 、zip等。
- 打包 指的是将多个文件和目录合并为一个文件,常用的工具是 tar。
常用的压缩与打包工具
tar
tar
用于打包文件和目录。它也可以与压缩工具结合使用以创建压缩的归档文件。tar
支持多种格式,如 .tar.gz
、.tar.bz2
、.tar.xz
等。
-c
: 创建新的归档。-x
: 提取(解压缩)归档。-v
: 显示操作的详细信息(verbose)。-f
: 指定归档文件的文件名。-t
: 列出归档中的文件。-z
: 使用 gzip 压缩/解压缩。-j
: 使用 bzip2 压缩/解压缩。-J
: 使用 xz 压缩/解压缩。-C
: 指定提取归档的目标目录。-r
: 向现有归档中添加文件。-u
: 更新现有归档中的文件。-d
: 删除归档中的文件。
创建普通 tar 归档# 创建一个不压缩的 tar 归档
tar -cvf archive.tar file1 file2 dir1
这个命令会将 file1、file2 和 dir1 打包成 archive.tar。指定输出目录
如果要将压缩文件保存到特定目录,可以使用 gzip -c 选项,将压缩内容输出到标准输出,然后使用重定向将其写入到指定目录。
# 将压缩后的内容保存到特定目录
gzip -c myfile.txt > /path/to/destination/myfile.txt.gz#-c: 使用 gzip 压缩并输出到标准输出。
#> /path/to/destination/myfile.txt.gz: 将输出重定向到指定目录和文件名。创建压缩的 tar.gz 归档# 创建一个 gzip 压缩的 tar 归档
tar -czvf archive.tar.gz file1 file2 dir1
这个命令会创建一个 gzip 压缩的归档 archive.tar.gz。解压缩和提取归档
解压缩普通 tar 归档# 提取不压缩的 tar 归档
tar -xvf archive.tar
这个命令会解包 archive.tar 并在当前目录提取内容。解压缩 tar.gz 归档# 提取 gzip 压缩的 tar 归档
tar -xzvf archive.tar.gz
列出归档内容# 列出 tar 归档中的文件
tar -tvf archive.tar
这个命令会列出 archive.tar 中的所有文件。解压缩到指定目录# 将 tar 归档解压缩到指定目录
tar -xvf archive.tar -C /path/to/destination
这个命令会将 archive.tar 中的内容提取到指定的 /path/to/destination 目录。排除某些文件或目录# 创建归档时排除某个目录
tar -czvf archive.tar.gz dir1 --exclude="dir1/ignore_this"
这个命令会创建 archive.tar.gz,但排除 dir1/ignore_this 目录。更新归档# 更新现有 tar 归档
tar -uvf archive.tar new_file
这个命令会向 archive.tar 中添加 new_file。
gzip
gzip
是一种广泛使用的压缩工具,创建 .gz
文件。它通常与 tar
结合使用,形成 .tar.gz
压缩档。
-c
: 将压缩输出到标准输出,而不是覆盖原文件。常用于管道操作。-d
: 解压缩.gz
文件。-f
: 强制覆盖现有文件,不提示。-k
: 压缩时保留原文件。-v
: 显示压缩或解压缩的详细信息(verbose)。-r
: 递归压缩目录中的文件。--best
: 使用最大压缩比。--fast
: 使用最小压缩比,速度更快。
压缩文件# 压缩单个文件
gzip myfile.txt
这会将 myfile.txt 压缩成 myfile.txt.gz,原文件被替换。保留原文件# 压缩并保留原文件
gzip -k myfile.txt
这个命令会创建 myfile.txt.gz,但保留原来的 myfile.txt。压缩目录中的所有文件# 递归压缩目录中的所有文件
gzip -r mydirectory/
这个命令会压缩 mydirectory 目录中的所有文件,并将它们替换为 .gz 文件。gzip 解压缩操作
解压缩 .gz 文件# 解压缩单个文件
gzip -d myfile.txt.gz
这个命令会将 myfile.txt.gz 解压缩为 myfile.txt。使用 gunzip 解压缩# 使用 gunzip 解压缩
gunzip myfile.txt.gz
gunzip 是 gzip 的解压缩工具,它的效果与 gzip -d 相同。使用 gzip 管道
由于 -c 选项可以将输出发送到标准输出,因此可以使用管道将压缩数据直接传递给其他命令。# 使用 gzip 压缩文件并通过管道发送
gzip -c myfile.txt > compressed.gz
这个命令会压缩 myfile.txt 并将压缩后的数据写入 compressed.gz。其他常见参数
强制覆盖# 使用 -f 强制覆盖现有文件
gzip -f myfile.txt
显示详细信息# 使用 -v 显示压缩信息
gzip -v myfile.txt
使用最佳压缩比# 使用最佳压缩比
gzip --best myfile.txt
使用最小压缩比# 使用最小压缩比
gzip --fast myfile.txt
bzip2
bzip2
是一种压缩效率高于 gzip
的工具,创建 .bz2
文件,通常与 tar
结合,形成 .tar.bz2
。
-c
: 将压缩或解压缩输出发送到标准输出(常用于管道操作)。-d
: 解压缩.bz2
文件。-k
: 压缩时保留原文件。-v
: 显示详细信息(verbose),包括压缩率等。-f
: 强制覆盖现有文件。-t
: 测试压缩文件的完整性。-q
: 安静模式,抑制非必要输出。
压缩单个文件# 压缩 myfile.txt 到 myfile.txt.bz2
bzip2 myfile.txt
这会将 myfile.txt 压缩成 myfile.txt.bz2,原文件会被替换。保留原文件# 压缩并保留原文件
bzip2 -k myfile.txt
这个命令会创建 myfile.txt.bz2,但保留原来的 myfile.txt。使用标准输出# 将压缩输出发送到标准输出
bzip2 -c myfile.txt > myfile.txt.bz2
这个命令将 myfile.txt 压缩到 myfile.txt.bz2,原文件保持不变。使用 bzip2 解压缩文件
解压缩单个文件# 解压缩 myfile.txt.bz2
bzip2 -d myfile.txt.bz2
这个命令会解压缩 myfile.txt.bz2 并将其还原为 myfile.txt。使用 bunzip2# 使用 bunzip2 解压缩
bunzip2 myfile.txt.bz2
bunzip2 是 bzip2 的解压缩工具,它的作用与 bzip2 -d 相同。显示详细信息# 显示压缩率等详细信息
bzip2 -v myfile.txt
这个命令会显示压缩后的文件信息,包括压缩率。强制覆盖现有文件# 使用 -f 强制覆盖
bzip2 -f myfile.txt
如果 myfile.txt.bz2 已存在,使用 -f 参数会强制覆盖。测试压缩文件的完整性# 测试压缩文件的完整性
bzip2 -t myfile.txt.bz2
这个命令会测试 myfile.txt.bz2 的完整性,以确保文件没有损坏。安静模式# 使用 -q 进入安静模式
bzip2 -q myfile.txt
xz
xz
是一种高压缩率的工具,创建 .xz
文件,与 tar
结合后形成 .tar.xz
。
-c
: 将输出发送到标准输出,而不是覆盖原文件。-d
: 解压缩文件。-k
: 压缩时保留原文件。-f
: 强制覆盖现有文件。-v
: 显示详细信息(verbose)。-t
: 测试压缩文件的完整性。--best
: 使用最大压缩比。--fast
: 使用最小压缩比,压缩速度更快。
压缩单个文件# 压缩 myfile.txt 到 myfile.txt.xz
xz myfile.txt
这个命令会将 myfile.txt 压缩成 myfile.txt.xz,原文件会被替换。保留原文件# 压缩并保留原文件
xz -k myfile.txt
这个命令会创建 myfile.txt.xz,同时保留原来的 myfile.txt。使用标准输出# 压缩并通过标准输出传输
xz -c myfile.txt > compressed.txt.xz
这个命令会压缩 myfile.txt,并将输出发送到 compressed.txt.xz。使用 xz 解压缩文件
解压缩单个文件# 解压缩 myfile.txt.xz
xz -d myfile.txt.xz
这个命令会解压缩 myfile.txt.xz 并将其还原为 myfile.txt。使用 unxz# 使用 unxz 解压缩
unxz myfile.txt.xz
unxz 是 xz 的解压缩工具,效果与 xz -d 相同。显示详细信息# 显示压缩的详细信息
xz -v myfile.txt
这个命令会显示压缩或解压缩的详细信息,包括压缩率和压缩时间。测试压缩文件的完整性# 测试压缩文件的完整性
xz -t myfile.txt.xz
这个命令会测试 myfile.txt.xz 的完整性,确保文件没有损坏。强制覆盖# 使用 -f 强制覆盖
xz -f myfile.txt
这个命令会强制覆盖已存在的 myfile.txt.xz。使用最大压缩比# 使用最大压缩比
xz --best myfile.txt
这个命令会使用最大压缩比,尽可能压缩 myfile.txt。使用最小压缩比# 使用最小压缩比
xz --fast myfile.txt
速记总结
gzip,bzip2,xz对比:
1.压缩比: xz > bzip2 > gzip (即xz压缩的最小)
2.速度: gzip > bzip2 > xz (即压缩的最小的用的时间较长)
3.资源消耗:xz > bzip2 > gzip (压缩越小的耗费的资源较多)
4.gzip和bzip2,xz都可以结合tar使用
5.三种压缩方式压缩后原文件会被替换,如果需要保留原文件需要加-k, 但是要结合tar的压缩是不需要-k参数的,结合拉tar会默认保留原文件。
6.
gzip
、xz
和bzip2
通常用于压缩单个文件,而不是目录。如果是目录,需要结合tar使用。7.使用zip压缩与unzip解压时,原文件都会存在。
1.使用
tar
进行打包# 将多个文件和目录打包为一个 tar 文件 tar -cvf archive.tar file1 file2 dir1
-c
: 创建新的归档。-v
: 显示操作的详细信息。-f
: 指定归档文件名。2.使用
tar
结合压缩工具# 创建一个 gzip 压缩的 tar 文件 tar -czvf archive.tar.gz file1 file2 dir1 # 创建一个 bzip2 压缩的 tar 文件 tar -cjvf archive.tar.bz2 file1 file2 dir1 # 创建一个 xz 压缩的 tar 文件 tar -cJvf archive.tar.xz file1 file2 dir1
-z
: 使用 gzip 压缩。-j
: 使用 bzip2 压缩。-J
: 使用 xz 压缩。3.解压缩与解打包
# 解包一个普通的 tar 文件 tar -xvf archive.tar# 解压缩并提取一个 gzip 压缩的 tar 文件 tar -xzvf archive.tar.gz # 解压缩并提取一个 bzip2 压缩的 tar 文件 tar -xjvf archive.tar.bz2 # 解压缩并提取一个 xz 压缩的 tar 文件 tar -xJvf archive.tar.xz
-x
: 解打包/提取归档内容。
其他压缩工具(zip)
zip
和unzip
: 用于创建和解压缩 ZIP 文件。常用于与 Windows 兼容的压缩格式。
# 创建一个 zip 文件
zip archive.zip file1 file2 dir1
# 解压缩 zip 文件
unzip archive.zip
zip参数 :
-r
: 递归压缩目录及其内容。-e
: 对 ZIP 文件进行加密。-9
: 使用最佳压缩比。-0
: 不进行压缩,仅打包。-q
: 安静模式,减少输出信息。-j
: 不保存目录结构,将所有文件扁平化。-x
: 排除某些文件或目录。
压缩单个文件# 将 myfile.txt 压缩为 myarchive.zip
zip myarchive.zip myfile.txt
这个命令会将 myfile.txt 压缩到 myarchive.zip。递归压缩目录# 递归压缩目录
zip -r myarchive.zip mydirectory/
这个命令会将 mydirectory 目录及其所有子目录和文件压缩到 myarchive.zip。不保存目录结构# 扁平化压缩,不保存目录结构
zip -j myarchive.zip mydirectory/*
这个命令会将 mydirectory 中的文件压缩到 myarchive.zip,但不会保留目录结构。加密 ZIP 文件# 压缩并加密 ZIP 文件
zip -e myarchive.zip myfile.txt
这个命令会要求输入密码,并加密 ZIP 文件。排除某些文件# 压缩时排除特定文件
zip -r myarchive.zip mydirectory/ -x "mydirectory/exclude_this/*"
这个命令会将 mydirectory 中的文件和子目录压缩到 myarchive.zip,但排除 exclude_this 目录及其内容。
unzip参数:
-d
: 指定解压缩目录。-q
: 安静模式。-l
: 列出 ZIP 文件中的内容。-o
: 强制覆盖现有文件。-n
: 不覆盖现有文件。-t
: 测试 ZIP 文件的完整性
解压缩到当前目录# 解压缩 ZIP 文件到当前目录
unzip myarchive.zip
这个命令会将 myarchive.zip 的内容解压缩到当前目录。指定解压缩目录# 解压缩到指定目录
unzip myarchive.zip -d /path/to/destination
这个命令会将 myarchive.zip 解压缩到指定目录。列出 ZIP 文件内容# 列出 ZIP 文件中的内容
unzip -l myarchive.zip
这个命令会列出 myarchive.zip 中的文件和目录。测试 ZIP 文件的完整性# 测试 ZIP 文件的完整性
unzip -t myarchive.zip
这个命令会检查 ZIP 文件是否损坏或不完整。强制覆盖或不覆盖# 强制覆盖现有文件
unzip -o myarchive.zip# 不覆盖现有文件
unzip -n myarchive.zip