Linux基础教程:关于tar

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参数,即保存文件原有的所有者及权限。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/23171.html