我们想要 tar.gz 以下所有 jar 文件
2.6.4.0-91/spark2/jars/super-csv-2.2.0.jar
2.6.4.0-91/spark2/jars/univocity-parsers-2.2.1.jar
2.6.4.0-91/spark2/jars/validation-api-1.1.0.Final.jar
2.6.4.0-91/spark2/jars/xbean-asm5-shaded-4.4.jar
2.6.4.0-91/spark2/jars/xercesImpl-2.9.1.jar
2.6.4.0-91/spark2/jars/xmlenc-0.52.jar
2.6.4.0-91/spark2/jars/xz-1.0.jar
2.6.4.0-91/spark2/jars/zookeeper-3.4.6.2.6.4.0-91.jar
所以我做了以下事情
cd /var/tmp
tar -czvf archive.tar.gz /usr/hdp/2.6.4.0-91/spark2/jars
但当我这样做时
tar xvf archive.tar.gz
我们得到 usr 文件夹
usr
而预期的结果应该只是罐子(没有子文件夹)
super-csv-2.2.0.jar
univocity-parsers-2.2.1.jar
validation-api-1.1.0.Final.jar
xbean-asm5-shaded-4.4.jar
xercesImpl-2.9.1.jar
jxmlenc-0.52.jar
xz-1.0.jar
zookeeper-3.4.6.2.6.4.0-91.jar
我的语法有什么问题
cd /var/tmp
tar -czvf archive.tar.gz /usr/hdp/2.6.4.0-91/spark2/jars
答案1
在开始归档文件之前,使用-C
选项让 tar进入目录:chdir
tar -czf archive.tar.gz -C /usr/hdp/2.6.4.0-91/spark2/jars .
不要忘记最后一个参数的点
请注意,参数后面的第一个参数f
是将存档输出到的文件名,以下选项-C
将目录名作为参数(其中 tarchdir
为),然后点是开始存档的目录。
答案2
tar
存储在命令行上传递的完整路径。
如果你只想要目录2.6.4.0-91
,简单cd
进入前打电话tar
。
请记住,在这种情况下,您应该指定您希望存档以该-C
选项结束的位置。
举个例子,假设您位于/home/user/
:
cd /usr/hdp/
tar -czvf -C /home/user/archive.tar.gz 2.6.4.0-91/spark2/jars/