018 tar命令
命令说明
tar(Tape Archive)是 Linux 最核心的打包工具,可把多个文件/目录打包成一个 .tar 归档,并常配合 gzip/bzip2/xz 压缩,形成 .tar.gz 等格式。
语法
tar [主选项+辅选项]... 文件/目录...
tar {z|j|J}cvf 包名.tar.gz 目录/常用参数
| 参数 | 说明 |
|---|---|
| -c | 创建新归档(Create) |
| -x | 解包(eXtract) |
| -t | 列出归档内容(List) |
| -v | 显示过程(Verbose) |
| -f | 指定归档文件名(File),必须紧跟包名 |
| -z | 同时用 gzip 压缩/解压(.tar.gz / .tgz) |
| -j | 同时用 bzip2 压缩/解压(.tar.bz2) |
| -J | 同时用 xz 压缩/解压(.tar.xz) |
| -C 目录 | 切换工作目录,常用于指定解压目标 |
| --exclude | 打包时排除匹配的文件 |
| -p | 保留原文件权限 |
| -P | 保留绝对路径(默认会去掉开头的 /) |
使用示例
$ tar cvf backup.tar /etc
打包 /etc 为 backup.tar(不压缩)
$ tar zcvf app.tar.gz /opt/app
打包并用 gzip 压缩
$ tar xvf app.tar.gz
解包到当前目录
$ tar xvf app.tar.gz -C /opt/
解包到指定目录
$ tar tvf app.tar.gz
查看归档内文件列表
$ tar zcvf src.tar.gz --exclude="*.log" src/
打包时排除日志文件
$ tar jcvf big.tar.bz2 data/
用 bzip2 压缩(体积更小、速度更慢)
$ tar zxf app.tar.gz 'app/conf'
只解出归档中的某个子目录
实用技巧
- 记忆口诀:c 创建、x 解包、t 查看,v 详细、f 文件、z/j/J 选压缩算法。
- -f 必须紧跟归档名,写成 tar -zfcv 会出错;正确顺序如 tar -zcvf。
- tar 只打包不压缩,.tar 体积≈原大小;要压缩必须加 -z/-j/-J。
- 解压 .tar.gz 直接 tar xzf 即可,无需先 gunzip 再 tar xf。
- 排除目录:tar zcvf b.tar.gz --exclude=cache --exclude="*.tmp" dir/。