创建平面 tar 存档:添加文件夹时忽略所有父级

创建平面 tar 存档:添加文件夹时忽略所有父级

我想将一些文件夹(递归地)添加到新的 tar 存档中。所有文件夹都应位于生成的存档的根级别。有没有什么方法可以添加所有文件夹而无需其父文件夹,并且无需cd先 -ing 进入其目录并逐步添加它们?

考虑以下目录结构

.
├── bar
│   ├── bar-file
│   └── barsub
│       └── barsub-file
└── foo
    ├── foo-file
    └── foosub
        └── foosub-file

我想补充一下酒吧富子到 tar 存档。

# add folders with different parents
# could be e.g. /some/foo/foosub and /other/bar as well
$ tar cvf archive.tar bar foo/foosub
a bar
a bar/bar-file
a bar/barsub
a bar/barsub/barsub-file
a foo/foosub
a foo/foosub/foosub-file

但我想要的是

.
├── bar
│   ├── bar-file
│   └── barsub
│       └── barsub-file
└── foosub
    └── foosub-file

有没有简单的方法来创建这样一个平坦的焦油档案?

答案1

使用 GNU 或 FreeBSD tar,您可以在将文件添加到存档(或提取它们)时对文件名进行转换。

tar czf foo.tgz --transform='!^bar/!!' bar/ foo

便携地,你可以做同样的事情帕克斯

pax -w -pe -s'!^bar/!!' foo bar/

答案2

tar cvf archive.tar bar -C /path/to/foo/ .

相关内容