我如何才能将路径中的最后一个目录打包到tar文件中?

时间:2013-08-01 14:11:11

标签: linux command-line path archive tar

如何从路径中仅将最终目录打包到tar文件中? 例如,我有几条路径

/usr/local/files/dir1/

   file1.txt
   file2.txt
   file3.txt

/usr/local/files/dir2/

   file3.txt
   file4.txt
   file5.txt

如果我运行命令:

tar czf my_arch.tar.gz -C /usr/local/files/dir1 .

我只收录 dir1 目录,没有自己。

所以我有 - my_arch.tar.gz / file1.txt,file2.txt,file3.txt,但我需要在我的存档中使用这样的结构 -

my_arch.tar.gz/dir1/file1.txt, file2.txt, file3.txt

我怎么能这样做?

谢谢。

4 个答案:

答案 0 :(得分:2)

尝试

cd /usr/local/files
tar -cvzf my_arch.tar.gz dir1

-C指令将使您更改为dir1,因此不会归档文件夹,但其内容为:

 -C, --directory DIR
     change to directory DIR

答案 1 :(得分:2)

你不能直接通过tar来做到这一点。 这是我的建议:

#!/bin/bash
mydir=/my_dir/whit/long_and/complicated_path/the_stuff_is_here
dirname=$(dirname $mydir )
basename=$(basename $mydir )

 tar cvf /tmp/$basename.tar    -C $dirname $basename  

答案 2 :(得分:0)

如果我理解你的要求正确,你希望你的tar文件包含目录。

尝试不带-C标志,如:

tar -czf my_arch.tar.gz /usr/local/files/dir1

答案 3 :(得分:0)

$ tar vczf tmp/export/files.tar.gz -C tmp/export src
files.tar.gz

结构

src
src/app
src/app/main.js
src/app/util
src/app/util/runtime.js