tar

 压缩后删除源文件

tar -zcvf {}.tar.gz {} --remove-files

遍历解压tar.gz文件,并删除tar.gz文件

      [plain] view plaincopy 
      find . -name "*.tar.gz" -type f -exec tar -zxvf {} ; -exec rm -rf {} ; > /dev/null

-C 参数适用 后跟路径  不带文件

zzx@sdcm152:~/zzx1$ tar -zcvf cat1.tar.gz -C /home/zzx  cat1        # 压缩    注意  /home/zzx 与cat1之间空格       备份目录zzx下的cat1文件到本目录下(/home/zzx/zzx1)  

zzx@zzx120:~$ tar -zcvf /home/zzx/zzx1/test2/a2.gz  -C /home/zzx/zzx1 a2
a2是文件或者文件夹

tar -zcvf /home/zzx/zzx1/test2/test.gz  -C /home/zzx/zzx1 test        备份test文件夹到test2下 文件名为test.gz

#  tar -zcvf /home/zzx/z1.gz -C /home/zzx/test1 dhcpzzx.sh    备份zzx/test1下的文件到/zzx/  文件名为z1.gz

zzx@sdcm152:~/zzx1$ ls
1 2 aaa.bjasd.shf cat1.tar.gz

zzx@sdcm152:~/zzx1$ pwd
/home/zzx/zzx1 

 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

zzx@sdcm152:~$ pwd
/home/zzx
zzx@sdcm152:~$ tar -zxf /home/zzx/zzx1/cat1.tar.gz -C /home/zzx/tartest/  #    解压      在/home/zzx目录下   把/zzx/zzx1下的文件cat1.tar.gz 还原到 /zzx/tartest下
zzx@sdcm152:~$ cd tartest/
zzx@sdcm152:~/tartest$ ls
aaa1.tar.gz aaa.bjasd.shf aaa.tar.gz abc.tar.gz cat1

参考

问题:在/home/usr1目录下,想要打包/home/usr2目录中的文件file2,应该使用什么样的tar命令?   (应该用 tar -cvf file2.tar -C /home/usr2  file2)

解答1:
$ tar -cvf file2.tar /home/usr2/file2
tar: Removing leading '/' from members names
home/usr2/file2
该命令可以将/home/usr2/file2文件打包到当前目录下的file2.tar中,需要注意的是:使用绝对路径标识的源文件,在用tar命令压缩后,文件名连同绝对路径(这里是home/usr2/,根目录'/'被自动去掉了)一并被压缩进来。使用tar命令解压缩后会出现以下情况:
$ tar -xvf file2.tar
$ ls
…… …… home …… …… 
解压缩后的文件名不是想象中的file2,而是home/usr2/file2。

1.    tar xvf      将目标文件或目录解包
2.    tar cvf      将目录下的文件或目录打成tar包
3.    tar zxvf    将目录或文件解压缩并解包
4.    tar zcvf    将目录或文件打成tar包并压缩

z是有压缩的 名字命名为.gz结尾  cvf就打包成.tar     tar代表把多个文件打包成一个文件   gz再对这个tar进行压缩让size变小

对.tar.gz的解压用 xvf和zxvf结果是一样的 说明不带z也可以v也可以省略 直接用xf  减号-也不用的

原文地址:https://www.cnblogs.com/hanxing/p/4056381.html