关于压缩:如何使用特定目录树创建tar文件(tar.gz)文件

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

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

1
2
3
4
/home/joe/projects/goodie/binary_program
/home/joe/projects/goodie/image.png
/home/joe/projects/goodie/sound.ogg
/home/joe/projects/goodie/license.txt

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

1
2
3
4
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

我知道如何创建日期/时间戳标签,但我不知道如何在tar文件中实际创建树结构……有什么想法吗?


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

1
2
3
4
source=/home/joe/projects/goodie
name=goodie-2015_04_09-15_34

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