如何在Linux中解压缩tar.xz文件并解压缩所有文件

时间:2020-01-09 14:17:08  来源:igfitidea点击:

如何在Linux中解压缩tar.xz文件?
你能告诉我命令解压缩linux-5.6.13.tar.xz文件吗?
如何解压缩(或解压缩)当前目录中的所有文件?

tar命令和xz命令提供对在Linux操作系统下提取和解压缩tar.xz文件和.txz归档文件的支持。

如何在Linux中解压缩tar.xz文件?

语法为:

  • 在CentOS/RHEL/Fedora Linux上使用`dnf install xz``安装xz。
  • Debian/Ubuntu Linux用户尝试使用``apt install xz-utils`命令。
  • 使用tar -xf backup.tar.xz命令解压缩tar.xz
  • 要解压缩filename.tar.xz文件,请运行:``xz -d -v filename.tar.xz`

安装XZ

XZ是一套用于无损数据压缩器的开源软件,包括LZMA和xz格式。
这些格式由于比其他压缩工具(例如gzip和bzip2)更高的压缩率而在开源开发人员和项目中广受欢迎。
如果系统上安装了xz,则tar命令有效。
因此,我们必须安装它。

Debin/Ubuntu Linux安装xz

使用apt命令/apt-get命令:

$ sudo apt install xz-utils

CentOS/RHEL/Fedora Linux安装xz

打开终端应用程序,然后运行yum命令/dnf命令,如下所示:

$ sudo dnf install xz
## On an older version of CentOS/RHEL try yum ##
$ sudo yum install xz

在OpenSUSE/SUSE Enterprise Linux上安装xz

我们可以使用zypper命令安装xz:

$ sudo zypper install xz

例子

现在我们安装xz。
现在,我们可以按如下所示直接使用tar命令来提取名为linux-5.6.13.tar.xz的文件:

$ tar -xf linux-5.6.13.tar.xz
$ tar -xvf linux-5.6.13.tar.xz
$ tar -Jxvf linux-5.6.13.tar.xz
## extract tar.xz files aka .txz file ##
$ tar --xz -xf archive.txz

从tar.xz文件中提取特定文件

我们使用以下语法从backup.tar.xz文件中提取给定的文件名:

$ tar -xf backup.tar.xz resume.pdf
$ tar -xf backup.tar.xz babys-3rd-cake-day.jpg sales.txt

有时我们不事先知道文件名。
因此,我们通过如下方式传递-t列出档案的内容,然后解压缩tar.xz文件:

$ tar -tvf backup.tar.xz
## filter out tar listing option using the grep command/egrep command ##
$ tar -tvf backup.tar.xz | grep file1
$ tar -tvf backup.tar.xz | egrep 'file.txt|data.doc|cake.jpg'

是否要提取所有Perl或Python源代码文件?
尝试以下选项:

$ tar --wildcards '*.py' -xvf webroot.tar.xz
$ tar --wildcards '*.pl' -xvf centos-7-sysadmin-scripts.txz

tar命令选项

  • -x:从档案中提取/获取/解压缩文件。
  • -f archive.tar.xz:使用此存档文件或设备存档来提取文件
  • -J--xz:通过xz命令过滤归档文件。因此,我们使用软件包管理器安装xz。
  • -v:详细。显示进度。
  • -t:列出存储在.tar.xz/.xz归档文件中的文件。
  • --wildcards:默认情况下,通配符在您当前的shell对待或处理它们时不起作用。因此,要提取文件,请使用--wildcards选项。例如,提取所有我将通过--wildcards'* .webp'选项传递给tar的.webp镜像。

如何使用xz命令提取.xz文件

到目前为止,我们学会了使用tar进行提取。
但是,我们也可以将xz命令直接用作压缩器和解压缩器。

Tar内部调用xz本身或使用libs提供的API。
让我们看看xz命令的一些提示和技巧。

解压缩.tar.xz文件

$ xz --decompress filename.tar.xz
$ xz -v -d archives.tar.xz

解压缩名为mysql.sql.xz的文件,并替换为mysql.sql:

$ xz -v -d mysql.sql.xz

将tar包压缩为.tar.xz文件

压缩一个名为mysql.sql的文件,并用mysql.sql.xz替换它以节省磁盘空间:

$ xz mysql.sql

压缩现有的tar包的语法如下:

$ xz -v -z filename.tar

另外,为了方便起见,请使用tar命令

$ tar -cvJf {your-filename-here.tar.xz} file1 file2
$ tar -cvJf {your-filename-here.tar.xz} /path/to/dir1 ./dir2
$ sudo tar -cvJf /efs/backups/14-05-2020/production-webroot.tar.xz /var/www/
$ sudo tar --xz -cvf /efs/backups/aws-us-west-www-prod-42-etc.txz /etc/

从标准输入压缩

$ mysqldump theitroad-blog | xz > theitroad-blog.sql.xz

当然,我们也可以为mysql命令解压缩并将内容发送到stdout。

$ xzcat theitroad-blog.sql.xz | mysql theitroad-blog

让我们从nc发送的stdin解压缩tar目录,输入(假设受VPN保护的目标服务器IP,否则使用ssh命令):

$ nc -l -p 4242 | tar -xJvf 

另一方面将目录压缩到stdout并发送到nc,运行:

$ tar -cJvz - /var/www/html | nc server-ip-here 4242

我们的最后一个示例使用ssh而不是nc:

$ tar --xz -cf - /path/to/dir | ssh [email protected] "cat > filename.txz"