Linux——tar命令
本文转载自:https://www.cnblogs.com/starof/p/4229017.html
一、使用介绍
1. 名词区分
打包:将一大堆文件或目录变成一个总的文件【tar命令】
压缩:将一个大的文件通过一些压缩算法变成一个小文件【gzip,bzip2等】
Linux中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip bzip2命令)。
2. tar语法
语法:tar [主选项+辅选项] 文件或目录
使用该命令时,主选项必须有,它告诉tar要做什么事情,辅选项是辅助使用的,可以选用。
主选项:【一条命令以下5个参数只能有一个】
-c: --create 新建一个压缩文档,即打包
-x: --extract,--get解压文件
-t: --list,查看压缩文档里的所有内容
-r:--append 向压缩文档里追加文件
-u:--update 更新原压缩包中的文件
辅助选项:
-z:是否同时具有gzip的属性?即是否需要用gzip压缩或解压?一般格式为xxx.tar.gz或xx.tgz
-j:是否同时具有bzip2的属性?即是否需要用bzip2压缩或解压?一般格式为xx.tar.bz2
-v:显示操作过程!这个参数很常用
-f:使用文档名,注意,在f之后要立即接文档名,不要再加其他参数!
-C:切换到指定目录
--exclude FILE:在压缩过程中,不要将FILE打包
二、例子
1. 打包
习惯上以.tar后缀代表tar包,用xxx.tar.gz或.tgz代表gzip压缩过的tar文件,用.tar.bz2代表bzip2压缩过的tar文件。
将img1和img2两个文件夹打包成img.tar,仅打包不压缩
liuxiaoyan@development:~/test$ tar -cvf img.tar img1 img2 img1/ img1/102.png img1/101.png img1/100.png img2/ img2/105.png img2/104.png img2/103.png liuxiaoyan@development:~/test$ ls img1 img2 img.tar
将img1和img2两个文件夹打包成img.tar.gz,打包后,以gzip压缩
liuxiaoyan@development:~/test$ tar -zcvf img.tar.gz img1 img2 img1/ img1/102.png img1/101.png img1/100.png img2/ img2/105.png img2/104.png img2/103.png liuxiaoyan@development:~/test$ ls img1 img2 img.tar img.tar.gz
将img1和img2两个文件夹打包成img.tar.bz2,打包后,以bzip2来压缩
liuxiaoyan@development:~/test$ tar -jcvf img.tar.bz2 img1 img2 img1/ img1/102.png img1/101.png img1/100.png img2/ img2/105.png img2/104.png img2/103.png liuxiaoyan@development:~/test$ ls img1 img2 img.tar img.tar.bz2 img.tar.gz
2. 不解压的情况下查看
查看img.tar中的所有内容
liuxiaoyan@development:~/test$ tar -tf img.tar img1/ img1/102.png img1/101.png img1/100.png img2/ img2/105.png img2/104.png img2/103.png
查看img.tar.gz的所有内容
加-v参数查看详细信息,-z可有可无
liuxiaoyan@development:~/test$ tar -tf img.tar.gz img1/ img1/102.png img1/101.png img1/100.png img2/ img2/105.png img2/104.png img2/103.png liuxiaoyan@development:~/test$ tar -ztf img.tar.gz img1/ img1/102.png img1/101.png img1/100.png img2/ img2/105.png img2/104.png img2/103.png liuxiaoyan@development:~/test$ tar -ztvf img.tar.gz drwxrwxr-x liuxiaoyan/liuxiaoyan 0 2015-05-20 22:09 img1/ -rw-r--r-- liuxiaoyan/liuxiaoyan 1952 2015-05-20 22:08 img1/102.png -rw-r--r-- liuxiaoyan/liuxiaoyan 2344 2015-05-20 22:08 img1/101.png -rw-r--r-- liuxiaoyan/liuxiaoyan 1995 2015-05-20 22:09 img1/100.png drwxrwxr-x liuxiaoyan/liuxiaoyan 0 2015-05-20 22:10 img2/ -rw-r--r-- liuxiaoyan/liuxiaoyan 1922 2015-05-20 22:09 img2/105.png -rw-r--r-- liuxiaoyan/liuxiaoyan 1546 2015-05-20 22:08 img2/104.png -rw-r--r-- liuxiaoyan/liuxiaoyan 2033 2015-05-20 22:08 img2/103.png
查看img.tar.bz2内容
加-v参数查看详细信息,-j可有可无
liuxiaoyan@development:~/test$ tar -tf img.tar.bz2 img1/ img1/102.png img1/101.png img1/100.png img2/ img2/105.png img2/104.png img2/103.png liuxiaoyan@development:~/test$ tar -jtf img.tar.bz2 img1/ img1/102.png img1/101.png img1/100.png img2/ img2/105.png img2/104.png img2/103.png liuxiaoyan@development:~/test$ tar -jtvf img.tar.bz2 drwxrwxr-x liuxiaoyan/liuxiaoyan 0 2015-05-20 22:09 img1/ -rw-r--r-- liuxiaoyan/liuxiaoyan 1952 2015-05-20 22:08 img1/102.png -rw-r--r-- liuxiaoyan/liuxiaoyan 2344 2015-05-20 22:08 img1/101.png -rw-r--r-- liuxiaoyan/liuxiaoyan 1995 2015-05-20 22:09 img1/100.png drwxrwxr-x liuxiaoyan/liuxiaoyan 0 2015-05-20 22:10 img2/ -rw-r--r-- liuxiaoyan/liuxiaoyan 1922 2015-05-20 22:09 img2/105.png -rw-r--r-- liuxiaoyan/liuxiaoyan 1546 2015-05-20 22:08 img2/104.png -rw-r--r-- liuxiaoyan/liuxiaoyan 2033 2015-05-20 22:08 img2/103.png
3. 解压
将img.tar减压到temp目录
liuxiaoyan@development:~/test$ cd temp/ liuxiaoyan@development:~/test/temp$ ls liuxiaoyan@development:~/test/temp$ tar -xf ../img.tar liuxiaoyan@development:~/test/temp$ ls img1 img2
只解压img.tar中的img1
liuxiaoyan@development:~/test/temp$ tar -xf ../img.tar img1 liuxiaoyan@development:~/test/temp$ ls img1
4. 更新
现在给movies文件下新建一个文件movie2.txt,然后更新enjoy.tar
$ tar -cf img.tar img1 img2 给img1增加了一张照片,现在用下面命令更新img.tar $ tar -uf img.tar img1
5. 追加
$ tar -cf img.tar img1 img2
img.tar里追加一个文件夹img3 $ tar -rf img.tar img3
6. -C参数
-C(大C参数很有用,改变文件目录,多层时用) -C, --directory=DIR change to directory DIR
使用了-C参数改变目录为-C后面 目录,不管是在打包还是解压都很有用。
用法:tar temp.tar file -C fileDir
$ cd temp $ ls img1 img2 img3 $ tar -cf img.tar temp/* 这样打包会将temp目录也打包进去,使用下面带有-C参数的命令可以去掉路径信息
$ tar -cf img.tar * -C temp
解压img.tar到当前目录下的temp目录
$ tar -xf img.tar -C temp
三、解压方法总结
1. 概览
- *.tar 用 tar –xvf 解压
- *.gz 用 gzip -d或者gunzip 解压
- *.tar.gz和*.tgz 用 tar –xzf 解压
- *.bz2 用 bzip2 -d或者用bunzip2 解压
- *.tar.bz2用tar –xjf 解压
- *.Z 用 uncompress 解压
- *.tar.Z 用tar –xZf 解压
- *.rar 用 unrar x 解压
- *.zip 用 unzip 解压
2. 常见解压/压缩命令
tar 解包:tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包,不是压缩!) .gz 解压1:gunzip FileName.gz 解压2:gzip -d FileName.gz 压缩:gzip FileName .tar.gz 和 .tgz 解压:tar zxvf FileName.tar.gz 压缩:tar zcvf FileName.tar.gz DirName .bz2 解压1:bzip2 -d FileName.bz2 解压2:bunzip2 FileName.bz2 压缩: bzip2 -z FileName .tar.bz2 解压:tar jxvf FileName.tar.bz2 压缩:tar jcvf FileName.tar.bz2 DirName .bz 解压1:bzip2 -d FileName.bz 解压2:bunzip2 FileName.bz 压缩:未知 .tar.bz 解压:tar jxvf FileName.tar.bz 压缩:未知 .Z 解压:uncompress FileName.Z 压缩:compress FileName .tar.Z 解压:tar Zxvf FileName.tar.Z 压缩:tar Zcvf FileName.tar.Z DirName .zip 解压:unzip FileName.zip 压缩:zip FileName.zip DirName .rar 解压:rar x FileName.rar 压缩:rar a FileName.rar DirName
3. 使用unrar注意:
先安装unrar,使用unrar不带参数运行一下就可以看到帮助信息。
如果一个文件s.rar,里面有1000首歌,用e参数,就直接把1000首歌全解压出来到当前目录。
如果是x参数,解压后,所有内容都放在同名的文件夹里面。
参考资料:
-
https://www.cnblogs.com/starof/p/4229017.html
- https://blog.csdn.net/hxpjava1/article/details/79765468
- https://blog.csdn.net/del1214/article/details/6841469
- http://www.runoob.com/linux/linux-comm-compress.html
- https://blog.csdn.net/xc_zhou/article/details/80732433
- https://blog.csdn.net/yiliumu/article/details/20656597
- http://www.cnblogs.com/peida/archive/2012/11/30/2795656.html