关于linux:Liunx-Tar-归档命令实操讲解

40次阅读

共计 4655 个字符,预计需要花费 12 分钟才能阅读完成。

在这篇文章中,咱们将通过理论例子学习 linux 下的 tar 命令。

tar 命令用于将多个文件和目录的归档文件创立为单个归档文件,归档文件的扩大名为 tar。tar 能够应用 gzip 和 bzip2 技术进一步压缩归档文件。tar (tape archive) 磁带归档,用于从命令行创立和提取归档文件。Tar 还被视为命令行备份和复原实用程序。

根底语法

# tar <options> <files>

可选参数

  • -c : create a new archive
  • -f : Archive file name
  • -t, –list : list the contents of an archive
  • -x, –extract, –get : extract files from an archive
  • -d, –diff, –compare : find differences between archive and file system
  • –delete : Delete from the archive.
  • -r, –append : append files to the end of an archive
  • -v : Verbose output
  • -u, –update : only append files newer than copy in archive
  • -X, –exclude-from=file : exclude patterns listed in file
  • -C, –directory=DIR: Change to DIR before performing any operations.
  • -j, –bzip2 : Compress and extract archive through bzip2
  • -J, –xz : Compress and extrach the archive through xz
  • -z, –gzip : Compress and extract the archive through gzip

留神:应用选项时,tar 命令中的连字符(–)是可选的。

(1) 创立归档文件

为 /etc 目录和 /var/log/syslog 文件创建一个归档文件

# tar -cvf archive.tar /etc /var/log/syslog

下面的命令将在以后文件夹中创立一个名称为 achive.tar 的 归档文件。归档文件蕴含 /etc 和 /var/log/syslog 目录下的所有文件和目录。

在上述命令中,-c 选项用于创立 tar 文件,-v 选项用于具体输入,-f 选项用于指定存档名称。

# ls -l archive.tar
-rw-r--r-- 1 root root 12554240 Oct 7 08:25 archive.tar
#

(2) 列出归档文件的内容

应用 -t 选项能够查看 tar 文件的内容,而不提取内容。

# tar -tvf archive.tar

从 tar 文件中列出特定的文件或目录。在上面的示例中,咱们试图列出 tar 文件中是否有 var/log/syslog 目录。

# tar -tvf archive.tar var/log/syslog
-rw-r----- syslog/adm 951215 2022-10-07 08:18 var/log/syslog
#

(3) 将文件追加到存档中

-r 选项用于将文件附加或增加到现有的存档文件中。让咱们将 /var/log/auth.log 文件增加到 archive.tar 归档中,运行如下命令

# tar -rvf archive.tar /var/log/auth.log

验证文件是否被追加,运行如下命令

# tar -tvf archive.tar var/log/auth.log
-rw-r----- syslog/adm 52790 2022-10-07 08:30 var/log/auth.log
#

留神: 在压缩的 tar 文件中,咱们不能追加文件或目录。

(4) 提取归档文件

要提取归档文件,请在 tar 命令中应用 -x 选项,如下所示。

# tar -xvf archive.tar

以上命令将解压 archive.tar 文件中的所有文件和目录到当前目录。

(5) 解压归档文件到特定的文件夹

应用 -C 选项,解压归档文件到特定的目录,前面跟着文件夹的门路。如下所示

# tar -xvf archive.tar -C /tmp/

(6) 从归档文件中提取特定文件

假如咱们要从归档文件中 /tmp 文件夹中提取 /etc/netplan/01-network-manager-all.yaml 文件。

Syntax : # tar -xvf {tar-file} {file-to-be-extracted} -C {path-where-to-extract}

# tar -xvf archive.tar etc/netplan/01-network-manager-all.yaml
etc/netplan/01-network-manager-all.yaml
#
# ls -l etc/netplan/01-network-manager-all.yaml
-rw-r--r-- 1 root root 104 Aug 9 12:55 etc/netplan/01-network-manager-all.yaml
#

(7) 创立并压缩归档文件 (gzip)

假如咱们要创立一个 /etc 和 /opt/opt 文件夹的归档文件,并且还心愿应用 gzip 工具将其压缩。能够应用 tar 命令中的 -z 选项来实现。此类归档文件的扩展名是 tar.gz 或 tgz

# tar -zcpvf archive.tar.gz /etc/ /opt/
Or
# tar -zcpvf archive.tgz /etc/ /opt/

(8) 创立和压缩归档文件 (bzip2)

假如咱们要创立一个 /etc 和 /opt/opt 文件夹的归档文件,并且还心愿应用 bzip2 工具将其压缩。能够应用 tar 命令中的 -j 选项来实现。此类归档文件的扩展名是 tar.bz2 或 tbz2

# tar -jcpvf archive.tar.bz2 /etc/ /opt/
Or
# tar -jcpvf archive.tbz2 /etc/ /opt/

(9) 在创立归档时排除特定的文件类型

在 tar 命令中应用 --exclude 选项能够在创立归档文件时排除特定的文件类型。假如在创立压缩 tar 文件时要排除 html 文件类型

# tar -zcpvf archive.tgz /var/ /opt/ --exclude=*.html

(10) 列出压缩归档文件的内容 (tar.gz 或 tgz)

应用 -t 选项列出扩大名为 tar.gz 或 tgz 的压缩归档文件的内容,如下所示

# tar -tvf archive.tgz | more

(11) 列出压缩归档文件的内容 (tar.bz2 或 tbz2)

应用 -t 选项列出扩大名为 tar.bz2 或 tbz2 的压缩归档文件的内容,如下所示

# tar -tvf archive.tbz2 | more
or 
# tar -tvf archive.tar.bz2 | more

(12) 提取压缩归档文件 (tar.gz 或.tgz)

应用 -x-z 选项提取扩大名为 tar.gz 或 tgz 的压缩归档文件的内容,如下所示

# tar -zxpvf archive.tgz -C /tmp/

下面的命令将把归档文件提取到 /tmp 目录

留神: tar 命令会主动剖析压缩文件类型,这意味着 tar 命令中指定压缩类型是可选的。示例如下所示:

# tar -xpvf archive.tgz -C /tmp/

(13) 提取压缩归档文件 (tar.bz2 或 .tbz2)

应用 -x-j 选项提取扩大名为 tar.bz2 或 tbz2 的压缩归档文件的内容,如下所示

# tar -jxpvf archive.tbz2 -C /tmp/
Or
# tar xpvf archive.tbz2 -C /tmp/

(14) 应用 tar 命令打算备份

在某些场景中,咱们必须每天创立特定文件和目录的归档文件。假如咱们必须每天备份整个 /opt 文件夹,这能够通过 tar 命令 + 打算工作来实现。示例如下所示:

# tar -zcvf optbackup-$(date +%Y-%m-%d).tgz /opt/

而后为上述命令创立一个打算工作

扩大浏览:如何在 Linux 中应用 Crontab 自动化工作

(15) 用 -T 和 -X 选项创立压缩归档文件

在日常流动中,系统管理员可能须要在应用 tar 命令创立归档时排除和蕴含文件。这能够通过在 tar 命令中应用 include (-T) 和 exclude (-X) 文件来实现。

假如咱们要存档和压缩 /etc,/opt 和 /home 之类的目录,并心愿排除文件 /etc/sysconfig/kdump 和 etc/etc/sysconfig/foreman

首先,创立一个文本文件 /root/tar-conclude 和 /root/tar-exclude,并将以下内容放入相应的文件中。

# cat /root/tar-include
/etc
/opt
/home
#

# cat /root/tar-exclude
/etc/sysconfig/kdump
/etc/sysconfig/foreman
#

当初,运行以下命令

# tar zcpvf mybackup-$(date +%Y-%m-%d).tgz -T /root/tar-include -X /root/tar-exclude

(16) 查看.tar,.tgz 和.tbz2 文件的大小

应用以下 tar 命令查看压缩归档文件的大小

# tar -czf - data.tar | wc -c
427
# tar -czf - archive.tgz | wc -c
1450527
#
# tar -czf - archive.tbz2 | wc -c
1206287

(17) 将大 tar 文件拆分为小文件

在类 Linux 操作系统中,能够应用 split 命令 将大文件拆分为较小的文件,大归档文件也能够应用 Split 命令将其拆分为较小的局部。

Let’s assume we want to split‘bigarchive.tgz‘file into smaller parts of each 6 MB.

假如咱们想要把 bigarchive.tgz 文件拆分成更小的局部,每个 6 MB。

Syntax :  split -b <Size-in-MB> <tar-file-name>.<extension>“prefix-name”
# split -b 6M bigarchive.tgz bigarchive-parts
# ls -l bigarchive-parts*
-rw-r--r-- 1 root root 6291456 Oct 7 10:43 bigarchive-partsaa
-rw-r--r-- 1 root root 6291456 Oct 7 10:43 bigarchive-partsab
-rw-r--r-- 1 root root 6291456 Oct 7 10:43 bigarchive-partsac
-rw-r--r-- 1 root root 6291456 Oct 7 10:43 bigarchive-partsad
-rw-r--r-- 1 root root 6291456 Oct 7 10:43 bigarchive-partsae
-rw-r--r-- 1 root root 6291456 Oct 7 10:43 bigarchive-partsaf
-rw-r--r-- 1 root root 6291456 Oct 7 10:43 bigarchive-partsag
#

咱们能够通过网络将这些文件转移到其它服务器上,而后应用上面的 cat 命令将所有文件合并到一个 tar 压缩文件中

# cat bigarchive-parts* > bigarchive.tgz

扩大浏览:Linux 中 16 个 CAT 命令示例

我的开源我的项目

  • course-tencent-cloud(酷瓜云课堂 – gitee 仓库)
  • course-tencent-cloud(酷瓜云课堂 – github 仓库)

正文完
 0