tar 压缩文件夹,但创建嵌套结构

tar 压缩文件夹,但创建嵌套结构

我在linux机器上有以下文件夹

./myFolder
    ./tmp
    ./packages
    ./zips
    compress.sh

tar -czf ./zips/someFile.tar.gz ./tmp/someFoldercompress.sh.文件夹已创建,但生成的嵌套发生在 zip 文件内:

。 -> tmp -> 某个文件夹

我怎样才能压缩这个文件,以便当我打开它时,它只是在里面someFolder,而不是在里面?someFoldertmp.

答案1

您可以尝试以下操作:

tar -czf ./zips/someFile.tar.gz -C ./tmp/ someFolder

答案2

您可以使用参数-C--directory

tar -czf ./zips/someFile.tar.gz -C ./tmp someFolder

man tar

-C, --directory DIR
      change to directory DIR

例子

% ls -og
total 4
-rw-rw-r-- 1    0 Mai 21 18:39 bar
drwxrwxr-x 2 4096 Mai 21 18:39 foo

tar -cvf ../sample.tar -C /home/user/tmp .

tar -tvf ../sample.tar 
drwxrwxr-x user/user 0 2015-05-21 18:39 ./
-rw-rw-r-- user/user 0 2015-05-21 18:39 ./bar
drwxrwxr-x user/user 0 2015-05-21 18:39 ./foo/

答案3

tar命令不压缩。即使有国旗也不行-z。但是,它确实收集一系列文件/文件夹并可选择压缩结果。相比之下,zip压缩每个文件并将其添加到存档中。ziptar使用不同的压缩算法。

GNU tar 的手册页显示用于更改目录的-C标志 ( --directory),因此您可以执行此操作

tar czfC zips/someFile.tar.gz tmp someFolder

您还可以使用该--transform选项删除前导tmp/

tar czf zips/someFile.tar --transform 's#^tmp/##' tmp/someFolder

相关内容