给定一组文件创建.tar.bz2文件

时间:2016-01-12 03:12:56

标签: bash shell tar bz2

Bash脚本中,我有一个包含文件列表的数组(以完整文件路径的形式):

declare -a individual_files=("/path/to/a" "/path/to/b" "/path/to/c")

我想在tar.bz2中创建一个压缩文件,其中包含数组中的所有文件,使用tar命令。

到目前为止,我已经尝试了

tar rf files.tar "${individual_files[@]}"
tar cjf files.tar.bz2 files.tar

但由于某种原因,files.tar.bz2始终只包含数组中的最后一个文件。

执行此操作的正确命令是什么,最好不创建中间.tar文件?

更新:使用@ PanRuochen的答案,这是我在详细信息中看到的:

+ tar cfvj /Users/skyork/test.tar.bz2 /Users/skyork/.emacs /Users/skyork/.Rprofile /Users/skyork/.aspell.en.pws /Users/skyork/.bash_profile /Users/skyork/.vimrc /Users/skyork/com.googlecode.iterm2.plist
tar: Removing leading '/' from member names 
a Users/skyork/.emacs
a Users/skyork/.Rprofile
a Users/skyork/.aspell.en.pws
a Users/skyork/.bash_profile
a Users/skyork/.vimrc
a Users/skyork/com.googlecode.iterm2.plist

但是,结果test.tar.bz2文件中只包含数组的最后一个文件(/Users/skyork/com.googlecode.iterm2.plist)。

我的不好,文件确实存在,但隐藏了。

1 个答案:

答案 0 :(得分:2)

tar cfvj files.tar.bz2 "${individual_files[@]}"

v应该为您提供有关如何创建bz2文件的详细信息。