tar这个软件非常强大,光看那help里面的参数就海多了.....我只说一些常用的指令。
-j 使用bzip2来压缩 ; -z 使用gzip来压缩 这两者当然不能同时使用了
-t 查看打包文件内有哪些文件 -x 解压或解打包 -c 打包 这三个指令也只能单一的存在,不能共存
-v 将在解压或压缩过程中的处理的文件显示出来
-f 后面接处理后的名字,比如我们压缩文件,那么-f后面接的一定是压缩后的文件名而不是被压缩的文件!如果是解压的话,那么-f后面接的一定是压缩文件名,而不是解压缩后的文件名。也可以这么说,-f后面就是接的压缩或打包文件。
-C 指定解压缩的目录。
-p 保存被压缩文件的权限不变。
--exclude=file 排除指定的文件
用gzip,bzip2方式来压缩多个文件
[sunjiebin@rhel6 test]$ ls
libgtkmm-2.4.so.1 loo ssh_config
以gzip打包多个文件并压缩,并显示被压缩的文件,指定文件名为gzip.tar.gz
[sunjiebin@rhel6 test]$ tar -zcvf gzip.tar.gz libgtkmm-2.4.so.1 loo/ ssh_config
libgtkmm-2.4.so.1
loo/
loo/ab.gz
loo/abc.gz
loo/lo/
loo/lo/abcd.gz
ssh_config
以bzip2打包并压缩,不显示处理的文件,指定文件名为bzip2.tar.gz
[sunjiebin@rhel6 test]$ tar -jcf bzip2.tar.bz2 libgtkmm-2.4.so.1 loo/ ssh_config
[sunjiebin@rhel6 test]$ ll
总用量 7296
-rw-r--r--. 1 sunjiebin hzh 969974 11月 12 15:52 bzip2.tar.bz2
-rw-r--r--. 1 sunjiebin hzh 1116181 11月 12 15:51 gzip.tar.gz
-rw-r--r--. 1 sunjiebin hzh 5373110 11月 12 14:40 libgtkmm-2.4.so.1
drwxr-xr-x. 3 root root 4096 11月 11 00:43 loo
-rw-r--r--. 1 root root 2047 11月 11 00:29 ssh_config
注意:f选项只能放在最后,因为f后面直接接的是处理后的文件名,如果用-jcfv的话,处理出来的文件就是v了!如:
[sunjiebin@rhel6 test]$ tar -jcfv test.tar.bz2 ssh_config
tar: test.tar.bz2:无法 stat: 没有那个文件或目录
tar: 由于前次错误,将以上次的错误状态退出
[sunjiebin@rhel6 test]$ tar -jcfv ssh_config
[sunjiebin@rhel6 test]$ ls
bzip2.tar.bz2 gzip.tar.gz libgtkmm-2.4.so.1 loo ssh_config v
查看压缩的文件内容
[sunjiebin@rhel6 test]$ tar -tvf gzip.tar.gz
-rw-r--r-- sunjiebin/hzh 5373110 2011-11-12 14:40 libgtkmm-2.4.so.1
drwxr-xr-x root/root 0 2011-11-11 00:43 loo/
-rw-r--r-- root/root 23 2011-11-11 00:40 loo/ab.gz
-rw-r--r-- root/root 24 2011-11-11 00:41 loo/abc.gz
drwxr-xr-x root/root 0 2011-11-11 00:43 loo/lo/
-rw-r--r-- root/root 25 2011-11-11 00:43 loo/lo/abcd.gz
-rw-r--r-- root/root 2047 2011-11-11 00:29 ssh_config
注意,t,x,c是不能共存的!查看bzip2的压缩档也可以这样查看。
解压压缩文件内容
我们先用root用户建一个文件夹root,然后用jxf来解压
[root@rhel6 test]# mkdir root
[root@rhel6 test]# tar -jxf bzip2.tar.bz2 -C root/
[root@rhel6 test]# ll root/
总用量 5256
-rw-r--r--. 1 sunjiebin hzh 5373110 11月 12 14:40 libgtkmm-2.4.so.1
drwxr-xr-x. 3 root root 4096 11月 11 00:43 loo
-rw-r--r--. 1 sunjiebin hzh 2047 11月 11 00:29 ssh_config
我们再切换到普通用户sunjiebin,再解压看
[root@rhel6 test]# su sunjiebin
[sunjiebin@rhel6 test]$ mkdir user
[sunjiebin@rhel6 test]$ tar -jxf bzip2.tar.bz2 -C user/
[sunjiebin@rhel6 test]$ ll user/
总用量 5256
-rw-r--r--. 1 sunjiebin hzh 5373110 11月 12 14:40 libgtkmm-2.4.so.1
drwxr-xr-x. 3 sunjiebin hzh 4096 11月 11 00:43 loo
-rw-r--r--. 1 sunjiebin hzh 2047 11月 11 00:29 ssh_config
这时候我们会发现解压出来的文件所属者并不一样了。这里就涉及到了tar的两个默认参数-m -p。默认情况下,普通用户tar会加上一个-m的参数,即代表将文件解压为用户自身所有,且权限改为用户默认权限。而超级用户执行tar时,会加上一个-p参数,即保存文件原有的所有者及权限。