【笔记】Tar学习笔记

前言

各种操作系统上常见压缩包的压缩与解压方法学习笔记

Tar

前言

  • tar是Unix和类Unix系统上的归档打包工具,可以将多个文件合并为一个文件,打包后的文件名亦为tar。目前,tar文件格式已经成为POSIX标准,最初是POSIX.1-1988,目前是POSIX.1-2001。维基百科

基本参数

-c--create:建立新的备份文件
-x--extract--get:从备份文件中还原文件
-v--verbose:显示指令执行过程
-f <file>--file <file>:指定备份文件。必须放在所有选项之后,因为这个选项后面要加参数
-t:显示归档中的文件清单
-C <file>:指定解压路径
-z--gzip--ungzip:通过gzip指令压缩/解压缩文件,文件名最好为*.tar.gz

Gzip是一种压缩文件格式并且也是一个在类 Unix 上的一种文件解压缩的软件,通常指GNU计划的实现,此处的gzip代表GNU zip。也经常用来表示gzip这种文件格式。软件的作者是Jean-loup Gailly和Mark Adler。在1992年10月31日第一次公开发布,版本号0.1,1993年2月,发布了1.0版本。维基百科

-Z--compress--uncompress:通过compress指令处理备份文件

Linux compress命令是一个相当古老的 unix 档案压缩指令,压缩后的档案会加上一个 .Z 延伸档名以区别未压缩的档案,压缩后的档案可以以 uncompress 解压。若要将数个档案压成一个压缩档,必须先将档案 tar 起来再压缩。由于 gzip 可以产生更理想的压缩比例,一般人多已改用 gzip 为档案压缩工具。菜鸟笔记

-j:通过bzip2指令压缩/解压缩文件,文件名最好为*.tar.bz2

bzip2是Julian Seward开发并按照自由软件/开源软件协议发布的数据压缩算法及程序。Seward在1996年7月第一次公开发布了bzip2 0.15版,在随后几年中这个压缩工具稳定性得到改善并且日渐流行,Seward在2000年晚些时候发布了1.0版。维基百科

-J:通过xz指令压缩/解压缩文件

xz是一个使用LZMA/LZMA2压缩算法的无损数据压缩文件格式。维基百科

压缩.tar文件

1
tar -cf <file_archive>.tar <file_1> <file_2>

解压.tar文件

1
tar -xf <file_archive>.tar

压缩.tar.gz.tgz)文件

1
tar -zcf <file_archive>.tar.gz <file_1> <file_2>

解压.tar.gz.tgz)文件

1
tar -zxf <file_archive>.tar.gz

压缩.tar.bz2文件

1
tar -jcf <file_archive>.tar.bz2 <file_1> <file_2>

解压.tar.bz2文件

1
tar -jxf <file_archive>.tar.bz2

压缩.tar.Z文件

1
tar -Zcf <file_archive>.tar.Z <file_1> <file_2>

解压.tar.Z文件

1
tar -Zxf <file_archive>.tar.Z

压缩.tar.xz文件(一步)

1
tar -Jcf <file_archive>.tar.xz <file_1> <file_2>

解压.tar.xz文件(一步)

1
tar -Jxf <file_archive>.tar.xz

压缩.tar.xz文件(两步)

  • 先建立.tar归档,再压缩为.tar.xz文件
1
2
tar -cf <file_archive>.tar <file_1> <file_2>
xz -z <file_archive>.tar

解压.tar.xz文件(两步)

  • 先解压.tar.xz文件,再还原.tar归档
1
2
xz -d <file_archive>.tar.xz
tar -xf <file_archive>.tar

XZ

前言

  • xz是一个使用LZMA/LZMA2压缩算法的无损数据压缩文件格式。(维基百科

压缩.xz文件(不保留原文件)

  • 每次只能将一个文件压缩为.xz文件
1
xz -z <file_1> <file_2>

解压.xz文件(不保留原文件)

1
xz -d <file_archive_1>.xz <file_archive_2>.xz

压缩.xz文件(保留原文件)

  • 每次只能将一个文件压缩为.xz文件
1
xz -zk <file_1> <file_2>

解压.xz文件(保留原文件)

1
xz -dk <file_archive_1>.xz <file_archive_2>.xz

GunZip

前言

  • gzip是一种压缩文件格式并且也是一个在类 Unix 上的一种文件解压缩的软件,通常指GNU计划的实现,此处的gzip代表GNU zip。也经常用来表示gzip这种文件格式。软件的作者是Jean-loup Gailly和Mark Adler。在1992年10月31日第一次公开发布,版本号0.1,1993年2月,发布了1.0版本。(维基百科

压缩.gz文件(不保留原文件)

  • 每次只能将一个文件压缩为.gz文件
1
gzip <file_1> <file_2>

解压.gz文件(不保留原文件)

-f:强制覆盖同名文件
-r:递归操作

1
gunzip <file_archive>.gz

压缩.gz文件(保留原文件)

  • 每次只能将一个文件压缩为.gz文件
1
gzip -c <file_1> > <file_archive>.gz
  • 如果传递了多个文件,则解压时只能得到一个被合并的文件
1
gzip -c <file_1> <file_2> > <file_archive>.gz

解压.gz文件(保留原文件)

-f:强制覆盖同名文件
-r:递归操作

1
gunzip -c <file_archive>.gz > <file_1>

Zip

前言

  • ZIP文件格式是一种数据压缩和文档储存的文件格式,原名Deflate,发明者为菲尔·卡茨,他于1989年1月公布了该格式的资料。ZIP通常使用后缀名“.zip”,它的MIME格式为application/zip。维基百科

下载依赖

MacOS

1
2
brew install zip
brew install unzip

基本参数

-n:解压缩时不覆盖原有的文件
-o:解压缩时覆盖原有的文件
-d:指定文件解压后存储的目录
-v:显示详细信息
-r:递归操作

压缩.zip文件

-r:递归操作

1
zip <file_archive>.zip <file_1>

解压.zip文件

-d:指定解压后文件存放目录
-n:不会覆盖同名文件
-o:强制覆盖同名文件

1
unzip <file_archive>.zip

分卷压缩.zip文件

1
zip -r -s 10m <file_archive>.zip <dir>/

分卷解压.zip文件

<file_archive_part>:指定分卷的某一部分,自动识别当前目录的其他部分

1
unzip <file_archive_part>.zip

RAR

前言

  • RAR是一种专利文件格式,用于数据压缩与归档打包,开发者为尤金·罗谢尔,RAR的全名是”Roshal ARchive”,即”罗谢尔的归档”之意。首个公开版本RAR 1.3发布于1993年。维基百科

下载依赖

Linux

Debian
1
apt install rar unrar

MacOS

1
brew install rar

基本参数

-a:添加文件到压缩档案
-e:将文件解压到当前目录
-x:使用完整路径提取文件
-l:列出存档内容
-v:详细列出存档

压缩.rar文件

<new_file_name>:生成的压缩文件名
<file_name>:需要被压缩的文件名

1
rar a <file_archive>.rar <file_1> <file_2>

解压.rar文件

1
unrar x <file_archive>.rar <dir>

7-Zip

前言

  • 7-Zip预设的格式是其自行开发的7z格式,扩展名为.7z。7z格式包含多种算法,最常使用的就是Bzip2以及作者伊戈尔·帕夫洛夫开发的LZMA。LZMA算法比起其他常见的传统压缩算法,如Zip、RAR来说相对较新,压缩率也比较高。7z格式支持Unicode,且将其默认用于存储文件名称,可以避免不同系统、语言环境间压缩解压乱码的问题。除7-Zip外,目前流行的压缩程序也大多支持此格式,如WinRAR、Peazip等。(维基百科

下载依赖

MacOS

  • MacOS上安装sevenzip软件包后,得到的是7zz命令,且sevenzip7zip7-zip是相同的软件包
1
brew install sevenzip
1
brew install 7zip
1
brew install 7-zip

压缩.7z文件

-r:递归操作

1
7zz a <file_archive>.7z <file_1> <file_2>

解压.7z文件

-o<dir>:指定解压后的文件存放路径
-y:强制覆盖同名文件

1
7zz x <file_archive>.7z

压缩.zip文件

1
7zz a -tzip <file_archive>.zip <file_1> <file_2>

p7zip

前言

  • p7zip是移植到POSIX/Unix-like系统的7-Zip软件,可以压缩解压7z格式的文件。常用命令包括7z和7za,通过参数调整压缩解压设置。其支持的系统包括但不限于Linux内核的Debian、Fedora、Gentoo Linux、AltLinux.org,非Linux内核的FreeBSD、Mac OS X、iOS(越狱后可安装)、BeOS、FreeDOS、AmigaOS等。(维基百科

下载依赖

Linux

  • p7zip只能处理.7z文件
1
apt install p7zip
  • p7zip-full包含了p7zip的所有功能,并且额外支持其他压缩格式
1
apt install p7zip-full

MacOS

  • MacOS上安装p7zip软件包后,得到的是7z7za7zr三个命令,且7z7za7zr是相同的命令
1
brew install p7zip

压缩.7z文件

-r:递归操作

1
7za a <file_archive>.7z <file_1> <file_2>

解压.7z文件

-o<dir>:指定解压后的文件存放路径
-y:强制覆盖同名文件

1
7za x <file_archive>.7z

压缩.zip文件

1
7za a -tzip <file_archive>.zip <file_1> <file_2>

Windows Tar

前言

  • Windows上的tar命令是来自于基于libarchive的bsdtar软件包

  • bsdtar has been included in Windows since Windows 10 April 2018 Update. In May 2023, Microsoft announced Windows 11 will natively support additional archive formats such as 7z and RAR via libarchive.(维基百科

压缩.tar文件

  • 每次只能将一个文件压缩为.tar文件
1
tar -cf <file_archive>.tar <file_1>

解压.tar文件

1
tar -xf <file_archive>.tar

压缩.tar.gz文件

1
tar -zcf <file_archive>.tar.gz <file_1> <file_2>

解压.tar.gz文件

1
tar -zxf <file_archive>.tar.gz

压缩.tar.gz文件

  • 需要提前下载Windows的bzip2软件包,否则会报错:tar: Error exit delayed from previous errors.
1
choco install bzip2
1
tar -jcf <file_archive>.tar.gz <file_1> <file_2>

解压.tar.gz文件

  • 需要提前下载Windows的bzip2软件包,否则会报错:tar: Error exit delayed from previous errors.
1
choco install bzip2
1
tar -jxf <file_archive>.tar.gz

解压.zip文件

1
tar -jxf <file_archive>.zip

Windows 7-Zip

前言

  • 7-Zip是一个开放源码的数据压缩程序,主要在Microsoft Windows操作系统,Unix-like的操作系统(如Linux与FreeBSD)可以使用7-zip的移植版本p7zip。它提供命令行接口的程序与图形用户界面的程序,而且可以与资源管理器结合。7-Zip是自由软件,由伊戈尔·帕夫洛夫于1999年开始开发,并把主体在GNU LGPL下发布;加密部分,使用高级加密标准(AES)的代码,使用BSD许可证发布;解压RAR部分,使用RAR特定的许可协议。在2007年获得SourceForge.net的社区票选为“最佳技术设计”及“最佳项目”两个奖项。(维基百科

下载依赖

1
choco install 7zip

压缩.7z文件

-r:递归操作

1
"C:\Program Files\7-Zip\7z.exe" a <file_archive>.7z <file_1> <file_2>

解压.7z文件

-o<dir>:指定解压后的文件存放路径
-y:强制覆盖同名文件

1
"C:\Program Files\7-Zip\7z.exe" x <file_archive>.7z

压缩.zip文件

1
"C:\Program Files\7-Zip\7z.exe" a -tzip <file_archive>.zip <file_1> <file_2>

完成

参考文献

开源中国
CSDN——一个从入门到放弃再到改行的工程师
菜鸟教程
CSDN——Locutus
REILLET的博客
CSDN——霸王凯旋
IDC严选
CSDN——菜鸟fox
知乎——小卖部坑我们滴钱