### Linux下的tar命令详解
#### 一、tar命令概述
`tar`命令是Linux系统中极为重要的文件打包工具之一,其名称来源于“tape archive”,最初用于磁带存储设备上的文件归档。随着技术的发展,`tar`命令已经成为现代操作系统中进行文件打包与解包的标准工具。`tar`命令不仅支持简单的文件打包,还支持多种压缩格式,如gzip和bzip2等。
#### 二、tar命令的基本语法
```bash
tar [选项] 文件与目录
```
其中,`选项`用于指定不同的操作模式和功能,`文件与目录`则是需要处理的具体目标。
#### 三、常用参数详解
1. **-c** (create): 创建一个新的归档文件。
2. **-x** (extract): 从已有的归档文件中提取文件。
3. **-t** (list): 查看归档文件中的内容列表。
4. **-z** (gzip): 在归档的同时使用gzip进行压缩或解压。
5. **-j** (bzip2): 使用bzip2进行压缩或解压。
6. **-v** (verbose): 显示详细的处理过程,便于观察。
7. **-f** (file): 指定归档文件的名称。
8. **-p** (preserve-permissions): 保持原文件的权限不变。
9. **-P** (absolute-names): 允许使用绝对路径进行归档。
10. **-N** (newer): 只包含较指定日期更新的文件。
11. **--exclude** (exclude): 在归档过程中排除特定的文件或目录。
#### 四、示例解析
##### 范例一:创建压缩文件
```bash
[root@linux~]# tar -cvf /tmp/etc.tar /etc # 仅打包,不压缩
[root@linux~]# tar -zcvf /tmp/etc.tar.gz /etc # 打包后,使用gzip压缩
[root@linux~]# tar -jcvf /tmp/etc.tar.bz2 /etc # 打包后,使用bzip2压缩
```
- `-cvf`表示创建归档文件并指定输出文件名为`/tmp/etc.tar`。
- `-zcvf`表示在创建归档文件的同时使用gzip压缩。
- `-jcvf`表示在创建归档文件的同时使用bzip2压缩。
##### 范例二:查看压缩文件内容
```bash
[root@linux~]# tar -ztvf /tmp/etc.tar.gz
```
- `-ztvf`表示查看使用gzip压缩的归档文件`/tmp/etc.tar.gz`中的内容。
##### 范例三:解压缩文件至指定目录
```bash
[root@linuxsrc]# tar -zxvf /tmp/etc.tar.gz
```
- `-zxvf`表示将`/tmp/etc.tar.gz`解压至当前目录。
##### 范例四:解压特定文件
```bash
[root@linuxtmp]# tar -zxvf /tmp/etc.tar.gz etc/passwd
```
- `-zxvf`后面紧跟要解压的文件名,例如`etc/passwd`。
##### 范例五:备份文件并保持权限
```bash
[root@linux~]# tar -zcvpf /tmp/etc.tar.gz /etc
```
- `-zcvpf`中的`-p`表示保持原文件的权限。
##### 范例六:备份指定日期后的文件
```bash
[root@linux~]# tar -N '2005/06/01' -zcvf home.tar.gz /home
```
- `-N '2005/06/01'`表示只备份比2005年6月1日更新的文件。
##### 范例七:排除特定目录进行备份
```bash
[root@linux~]# tar --exclude=/home/dmtsai -zcvf myfile.tar.gz /home /* /etc
```
- `--exclude=/home/dmtsai`表示在备份过程中排除`/home/dmtsai`目录。
##### 范例八:管道操作
```bash
[root@linuxtmp]# tar -cvf - /etc | tar -xvf -
```
- 此命令使用管道`|`连接两个`tar`命令,第一个命令将`/etc`目录打包,第二个命令将打包后的数据解压到当前目录。
#### 五、总结
`tar`命令在Linux系统管理中扮演着至关重要的角色,它提供了丰富的选项和功能,使得用户能够灵活地管理和操作文件及目录。通过掌握上述的基础命令和示例,你可以更加高效地使用`tar`命令进行文件打包和解包的操作。在实际工作中,根据具体需求选择合适的选项组合可以大大提高工作效率。