如何创建具有特定目录树的 tar 文件 (tar.gz) 文件

How to create a tar file (tar.gz) file with a specific directory tree

我正在尝试备份具有以下结构的目录树:

/home/joe/projects/goodie/binary_program
/home/joe/projects/goodie/image.png
/home/joe/projects/goodie/sound.ogg
/home/joe/projects/goodie/license.txt

我想创建具有以下结构的存档:

goodie-2015_04_09-15_34/binary_program
goodie-2015_04_09-15_34/image.png
goodie-2015_04_09-15_34/sound.ogg
goodie-2015_04_09-15_34/license.txt

我知道如何创建 date/time 邮票标签,但我不知道如何在 tar 文件中实际创建树结构。有什么想法吗?

GNU tar 有一个 --transform 选项,它在将文件名(或文件路径)放入存档之前对它们运行 sed。

source=/home/joe/projects/goodie
name=goodie-2015_04_09-15_34

tar cvzf $name.tar.gz $source/* --transform "s@^$source@$name@"