我在linux机器上有以下文件夹
./myFolder
./tmp
./packages
./zips
compress.sh
我tar -czf ./zips/someFile.tar.gz ./tmp/someFolder
从compress.sh
.文件夹已创建,但生成的嵌套发生在 zip 文件内:
。 -> tmp -> 某个文件夹
我怎样才能压缩这个文件,以便当我打开它时,它只是在里面someFolder
,而不是在里面?someFolder
tmp
.
答案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
压缩每个文件并将其添加到存档中。zip
并tar
使用不同的压缩算法。
这GNU tar 的手册页显示用于更改目录的-C
标志 ( --directory
),因此您可以执行此操作
tar czfC zips/someFile.tar.gz tmp someFolder
您还可以使用该--transform
选项删除前导tmp/
tar czf zips/someFile.tar --transform 's#^tmp/##' tmp/someFolder