相信不少读者朋友都用过Linux上的tar命令,它能帮助我们将多个文件打包成一个文件包,既方便我们传输,又可用于文件备份和解压缩归档等。但你真的完全学会了tar命令嘛,让我们一起来看看它的具体用法。
本文包括:语法介绍、使用示例、通过file命令确定文件的压缩格式、通过MD5检验比较两个tar包是否一致、批量压缩和解压缩。
tar命令目前常用的格式是:
tar [option] [file]
其中file
参数通常是我们要操作的文件名。而 option
参数一般是我们要对该文件进行的操作,它可以简单的分为操作选项、附加选项。
这里我们仅列出最为常用的六个操作选项参数。需要注意的是,它们之间互相独立,一般不可同时使用,但可以和下面的附加选项参数配合使用(为了方便理解,我们一般会操作选项参数放在附加选项参数之前)。
这里我们仅列出最为常用的六个附加选项参数。这些参数是根据压缩或者解压缩需要选择的,使用时放在操作选项参数的后面。
这里我们根据上面介绍的语法,看一些tar命令的使用示例。
当我们从别人那里下载了一个没有后缀的压缩包或者是后缀格式错误的压缩包时,我们可以通过file
命令来确定压缩包的格式,进行选用对应的解压缩命令(但通常tar -xvf
能解压缩大多数包)。
[zhxia@aemol tar]$ file model.tar
model.tar: gzip compressed data, from Unix, last modified: Sat Dec 8 14:23:00 2018
[zhxia@aemol tar]$ tar -xzf model.tar
当我们在不同服务器间使用scp等命令传输tar压缩包时,时常会担心因断点续传(即传输过程中服务器中断后又重新连上接着传输)而造成接收到的压缩包中文件不完整,这时候我们可以通过MD5检验来确定两个压缩包内容是否完全一致。
[zhxia@aemol tar]$ md5sum guess.tar
d152e779254eadb6cca31cfcacab6e60 guess.tar
[zhxia@aemol tar]$ md5sum guess.tar &>md5.log
[zhxia@aemol tar]$ cat md5.log
d152e779254eadb6cca31cfcacab6e60 guess.tar
[zhxia@aemol tar]$ scp md5.log guess.tar target@21.10.40.30:/home/zhxia
[target@21.10.40.30 zhxia]$ md5sum guess.tar
d152e779254eadb6cca31cfcacab6e60 guess.tar
[target@21.10.40.30 zhxia]$ cat md5.log
d152e779254eadb6cca31cfcacab6e60 guess.tar
一个 MD5 校验和(checksum)通过对接收的传输数据执行散列运算来检查数据的正确性。计算出的散列值拿来和随数据传输的散列值比较。如果两个值相同,说明传输的数据完整无误、没有被窜改过(前提是散列值没有被窜改),从而可以放心使用。MD5校验可以应用多个领域,比如说机密资料的检验,下载文件的检验,明文密码的加密等。
要想批量压缩和解压缩tar包,我们需要先写一个bash脚本(如命名为:mlutitar.sh),然后通过bash multitar.sh
运行bash脚本实现。
对于批量压缩文件我们需要先单独写一个list.txt告诉系统我们想要压缩的文件,再通过运行bash脚本实现批量压缩。
示例:批量压缩当前目录下文件名为plot*.py和data*.py的文件分别到plot.tar和data.tar的压缩包中去(*为通配符)。
plot
data
#!/bin/bash
for i in `cat list.txt`
do
tar -cvf $i.tar $i*.py
done
示例:批量解压当前目录下文件名为test*.tar的压缩包(*为通配符)。
#!/bin/bash
for i in `ls ./test*.tar`
do
tar -xvf $i
done