Извлечение определенной папки в конкретный каталог из tar.gz

Я искал и нашел, как две части того, что я хочу, но ничего, что позволило бы вам сделать это целиком....

Что я хотел бы сделать, так это извлечь определенную папку из tar.gz в другую папку по другому пути, как в tar.gz.

Например:

  • Путь к каталогам в моем файле backup.tar.gz: a/b/c/d (d является моим главным со многими другими внутри)

  • Я хочу распаковать каталог 'd' в 'm' внутри этого другого пути сервера: a/b/m

  • Если я попытаюсь выполнить этот код: tar -xzf backup.tar.gz -C a/b/m

** Структура папок выглядит так: a/b/m/a/b/c/d, но я хотел бы, чтобы он выглядел как a/b/m + d, так что все мои основные файлы/папки в архиве Путь 'd' заканчивается на пути 'm'

Любая помощь очень ценится.

Спасибо!

Ответ 1

Хорошо, я понял это!

В принципе, я могу просто использовать команду strip, чтобы удалить число x ведущих каталогов. В этом случае моя команда будет выглядеть так:

tar -xzf backup.tar.gz --strip-components = 3 -C a/b/m

Это удалило первые три каталога путей из моего архива (backup.tar.gz: a/b/c/d), прежде чем извлечь его в каталог desctination.

Теперь он выглядит так: a/b/m + d

Ответ 2

Это работало для меня на OS X (вытаскивание определенных файлов из репозитория GitHub):

# Move to target directory and run:
curl -#L https://github.com/USER/REPO/tarball/BRANCH | tar -xzv --strip-components 3 --include=*./some/folder