问题:
在Linux 系统中,使用 tar 命令进行文件的压缩打包,解压后会发现整个路径也都一起打包进去了,特别是在脚本中打包文件时比较麻烦!
问题复现:
[root@Jenkins ~]# ls /var/lib/jenkins/workspace/freestyle-nongye #查看web项目的代码文件 css g2.jpg g4.jpg g5.jpg js fonts g3-1646724756761.jpg g5-1646724774424.jpg images README.md g1.jpg g3.jpg g5-1646724779175.jpg index.html slid.jpg [root@Jenkins ~]# tar -czf web.tar.gz /var/lib/jenkins/workspace/freestyle-nongye/* #使用tar打包绝对路径下的文件 tar: 从成员名中删除开头的“/” [root@Jenkins ~]# ls web.tar.gz [root@Jenkins ~]# tar -xf web.tar.gz #解压打包好的文件 [root@Jenkins ~]# ls #可以看到并没有只打包代码文件,而是将整个绝对路径都打包进去了 var web.tar.gz [root@Jenkins ~]# cd var/lib/jenkins/workspace/freestyle-nongye/ #进入查看 [root@Jenkins freestyle-nongye]# pwd /root/var/lib/jenkins/workspace/freestyle-nongye #可以看到解压后整个绝对路径都打包进去了 [root@Jenkins freestyle-nongye]# ls css g2.jpg g4.jpg g5.jpg js fonts g3-1646724756761.jpg g5-1646724774424.jpg images README.md g1.jpg g3.jpg g5-1646724779175.jpg index.html slid.jpg
解决方法:
-C 临时切换到指定的目录。(执行打包前,在源文件的绝对路径前面-大写的参数C,后面在跟 . 即可)
[root@Jenkins ~]# tar -czf web.tar.gz -C /var/lib/jenkins/workspace/freestyle-nongye . #临时切换到/var/lib/jenkins/workspace/freestyle-nongye目录下,使用tar打包该目录下所有的代码文件 [root@Jenkins ~]# ls web.tar.gz [root@Jenkins ~]# tar xf web.tar.gz -C /opt/ #解压打包文件至/opt目录下 [root@Jenkins ~]# ls /opt/ #可以看到这次只打包了项目文件夹中所有的代码文件 css g2.jpg g4.jpg g5.jpg js fonts g3-1646724756761.jpg g5-1646724774424.jpg images README.md g1.jpg g3.jpg g5-1646724779175.jpg index.html slid.jpg