【Linux】tar 压缩使用绝对路径时解压会出现多级文件夹
tar 压缩使用绝对路径时解压会出现多级文件夹
写了一段代码,其中需要执行一段linux命令,用来压缩文件
遇到的问题是
原文件路径:/usr/userdata/log/1.txt
将其压缩为1.tar.gz
我在程序里面写的命令是
tar -czf /usr/userdata/log/1.tar.gz /usr/userdata/log/1.txt
这样的压缩命令执行了之后会有一个问题
当你在这个目录下 /usr/userdata/log/
解压的时候,使用tar -xzvf 1.tar.gz
会为你在这个目录下再创建一个/usr/userdata/log/
然后将解压文件放在这里
如何解决这个问题呢?
有三种方法:(我推荐第三种)
1、加上参数-P
压缩的时候加上参数P
tar -czPf /usr/userdata/log/1.tar.gz /usr/userdata/log/1.txt
注意 解压的时候你也要加上参数P
tar -xzvPf 1.tar.gz
这样就可以在这级目录下正常解压了
ps:这个方法不能算完全解决了问题,它为解压增加了复杂度
2、使用cd
压缩之前,加一条命令 cd /usr/userdata/log/
然后使用相对路径去压缩
tar -czf 1.tar.gz 1.txt
这个方法是可以解决,但是有的时候,程序运行中我们不希望切换目录,所以也不太好
3、使用参数 -C指定压缩的目录
tar -czf /usr/userdata/log/1.tar.gz -C /usr/userdata/log 1.txt
注意,-C 之后跟着要压缩文件的目录,然后是空格,然后是文件名称
这样压缩出来的文件,再去解压,就可以正常解压,没有多级文件夹的问题