如何从路径中仅将最终目录打包到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
我怎么能这样做?
谢谢。
答案 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