tar¶
tar 命令可以为 linux 的文件和目录创建档案。利用 tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。
首先要弄清两个概念——打包和压缩:
- 打包是指将一大堆文件或目录变成一个总的文件;
- 压缩则是将一个大的文件通过一些压缩算法变成一个小文件。
为什么要区分这两个概念呢?这源于 Linux 中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar 命令),然后再用压缩程序进行压缩(gzip/bzip2 命令)。
语法¶
$ tar [OPTION...] [FILE]...
选项¶
-A, -catenate | 新增文件到以存在的备份文件 |
-B | 设置区块大小 |
-c, --create | 建立新的备份文件 |
-C <目录> | 这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项 |
-d | 记录文件的差别 |
-x, --extract, --get | |
从备份文件中还原文件 | |
-t, --list | 列出备份文件的内容 |
-z, --gzip, --ungzip | |
通过gzip指令处理备份文件 | |
-Z, --compress, --uncompress | |
通过compress指令处理备份文件 | |
-f <备份文件>, --file=<备份文件> | |
指定备份文件 | |
-v, --verbose | 显示指令执行过程 |
-r | 添加文件到已经压缩的文件 |
-u | 添加改变了和现有的文件到已经存在的压缩文件 |
-j | 支持bzip2解压文件 |
-v | 显示操作过程 |
-l | 文件系统边界设置 |
-k | 保留原有文件不覆盖 |
-m | 保留文件不被覆盖 |
-w | 确认压缩文件的正确性 |
-p, --same-permissions | |
用原来的文件权限还原文件 | |
-P, --absolute-names | |
文件名使用绝对名称,不移除文件名称前的“/”号 | |
-N <日期格式>, --newer=<日期时间> | |
只将较指定日期更新的文件保存到备份文件里 | |
--exclude=<范本样式> | |
排除符合范本样式的文件 |
打包/压缩¶
打包使用参数 -c
,压缩使用参数 -z/-j
:
$ tar -cvf log.tar *.log # 仅打包,不压缩!
$ tar -zcvf log.tar.gz *.log # 打包后,以 gzip 压缩
$ tar -jcvf log.tar.bz2 *.log # 打包后,以 bzip2 压缩
解包/解压¶
解压缩使用参数 -x
:
$ tar -zxvf log.tar.gz
如果要指定解压的目录(目录要求存在),使用 -C
参数:
$ tar -zxvf log.tar.gz -C ~/logs
以上是解压所有文件,如果只想解压部分文件在最后指定文件列表(可以先使用 -t
查看包内容):
$ tar -zxvf log.tar.gz log2012.log