运维人员不仅要熟悉操作系统、服务器、网络等只是,甚至对于开发相关的也要有所了解。很多运维工作者可能一时半会记不住那么多命令、代码、方法、原理或者用法等等。这里我将结合自身工作,持续给大家更新运维工作所需要接触到的知识点,希望大家喜欢。
今天我们要讲的是 TAR 命令。
一、简介
在Linux平台上,tar 命令是主要的归档实用程序。了解各种 tar 命令选项将帮助您掌握归档文件操作。Tar(Tape ARchive,磁带归档的缩写,LCTT 译注:最初设计用于将文件打包到磁带上,现在我们大都使用它来实现备份某个分区或者某些重要的目录)是类 Unix 系统中使用最广泛的命令,用于归档多个文件或目录到单个归档文件中,并且归档文件可以进一步使用 gzip 或者 bzip2 等技术进行压缩。换言之,tar 命令也可以用于备份:先是归档多个文件和目录到一个单独的 tar 文件或归档文件,然后在需要之时将 tar 文件中的文件和目录释放出来。
二、基本语法
tar [选项] [文件名]
- -c:建立新的备份文件
- -C:切换到指定的目录
- -d:对比备份文件内和文件系统上的文件的差异
- -x:解压缩归档文件
- -v:显示指令执行过程
- -f:指定归档文件的文件名
- -t:查看归档文件内容
- -j:通过 bzip2 指令处理备份文件
- -z:通过 gzip 指令处理备份文件
- -r:向现有存档文件追加或更新文件或目录
- -W:验证归档文件
- --totals:备份文件建立后,列出文件大小
- --delete:从备份文件中删除指定的文件
- --wildcards:在 unix tar 命令中指定匹配模式
三、实例说明
假设 /home/test/testdir/ 目录下有以下几个文件:
- /home/cyberpunk/testdir/file1.txt
- /home/cyberpunk/testdir/file2.sh
- /home/cyberpunk/testdir/file3.jpg
3.1. 创建一个 tar 格式的压缩文件
# 在当前工作目录的 /home/test/testdir 目录下创建一个名为 archive.tar 的 tar 归档文件:
tar -cvf archive.tar /home/test/testdir/
3.2. 创建压缩后的 tar.gz 存档文件
# 要创建一个压缩的 gzip 归档文件,我们需要使用选项 z
tar cvzf compressedArchive.tar.gz /home/test/testdir
3.3. 生成压缩率更高的 tar.bz2 文件
tar cvfj Archive.tar.bz2 /home/test/testdir
tar 的 bz2 压缩,可以创建比 gzip 文件小的归档。bz2 模式执行归档压缩和解压所需的时间比 gzip 模式多。通常,这个时间差可以忽略不计,但如果文件非常大,或者是文件数量非常多,那么时间差就会非常大。
3.4. 解压缩 tar 文件
tar -xvf Archive.tar -C /home/test/testdir/
要解压缩(提取)一个tar文件,将 x (提取)选项传递给该命令 使用不带 -C 选项的命令将在当前工作目录中提取存档。-C 选项告诉命令在哪里提取存档文件。
3.5. 解压缩 tar.gz(2) 文件
tar -xvf Archive.tar.gz
tar -xvf Archive.tar.bz2
使用 tar 命令创建的所有归档文件,都可以以相同的方式提取。
3.6. 查看 tar 归档内容
tar -tvf uploadprogress.tar
-rwxr--r-- root/root 1005 2020-10-19 12:33:42 file1.txt
-rwxr--r-- root/root 1005 2020-10-19 12:33:42 file2.txt
-rwxr--r-- root/root 1005 2020-10-19 12:33:42 file3.txt
-rwxr--r-- root/root 1005 2020-10-19 12:33:42 file4.txt
3.7. 从 tar 归档文件中提取文件
# 提取单个文件:
tar --extract --file=archive.tar file1.txt
# 提取多个文件:
tar -xvf Archive.tar "file 1" "file 2"
# 使用通配符提取文件组:
tar -xvf Archive.tar --wildcards *.txt'
3.8. 添加文件或目录到 tar 存档中
要向现有的 tar 文件中添加文件或目录,可以使用 r 选项。例如,我们将 xyz.txt 文件和 php 目录添加到现有的 Archive.tar 归档文件中:
tar -rvf Archive.tar xyz.txt # add file
tar -rvf Archive.tar php # add directory
Linux命令推荐网址:Linux命令大全(手册)