我想将一些文件夹(递归地)添加到新的 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/ .