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 减号-也不用的