tar с относительными путями


24

Я пытаюсь создать архив с tar, используя относительные пути. Я использую следующую команду:

tar czf ~/files/wp/my-page-order.tar.gz -C ~/webapps/zers/wp-content/plugins/ ~/webapps/zers/wp-content/plugins/my-page-order

Но архивные файлы все еще имеют абсолютные пути. Как я могу использовать tar с относительными путями?


Ответы:


24

'~' расширяется оболочкой. Не используйте '~' с -C:

tar czf ~/files/wp/my-page-order.tar.gz \
      -C ~ \
       webapps/zers/wp-content/plugins/my-page-order

(tar будет включать webapps / zers / wp-content / plugins / my-page-order path) или

tar czf ~/files/wp/my-page-order.tar.gz \
      -C ~/webapps/zers/wp-content/plugins \
       my-page-order

(tar будет содержать путь к моей странице)

Или просто сначала CD

cd ~/webapps/zers/wp-content/plugins
tar czf ~/files/wp/my-page-order.tar.gz my-page-order

2
Объяснение неверно. Здесь не имеет значения, что ~ раскрывается оболочкой. Важно то, что -Cизменяется текущий рабочий каталог, как объяснено в ответе Лекенштейна.
Петр Доброгост

1
Нет - посмотрите на исходный вопрос - последний аргумент - это абсолютный путь.
Symcbean

Ну и что? Оба экземпляра ~ раскрываются, и весь вызов работает не так, как ожидалось, только потому, что последний аргумент в случае использования -Cдолжен был быть задан как относительный путь, а вместо этого задан как абсолютный путь. Использование ~ здесь не имеет значения вообще.
Петр Доброгост

11

-C new_cwdизменяет текущий рабочий каталог на new_cwd. Следующие аргументы затем оцениваются относительно new_cwd.

tar czf ~ / files / wp / my-page-order.tar.gz -C ~ / webapps / zers / wp-content / plugins / my-page-order


4

Решение без GNU, если tarнет -zвозможности, просто упомянуть:

pushd ~/files/wp; tar cvf - my-page-order | gzip > my-page-order.tar.gz && rm -rf my-page-order; popd

РЕДАКТИРОВАТЬ (с &&и без rm):

pushd ~/files/wp && tar cvf - my-page-order | gzip > my-page-order.tar.gz && popd

(1) Вопрос ничего не говорит о rm; почему вы включаете это в свой ответ? (2) Ваш ответ архивирует неправильный каталог. (3) Почему вы изменились tar -zна tar | gzip? (4) Пока вы собираетесь использовать &&, вам, вероятно, следует использовать и &&после pushd.
G-Man говорит: «Восстанови Монику»

(1) Вы правы (2) на самом деле? Какой хороший? (3) в этом суть: версия tar, не относящаяся к GNU (например, в Unix), не имеет -z (4) я бы, вероятно, использовал &&в скрипте, но я думаю, что это не обязательно в «одном лайнере»
Mattia72

(2) OP хочет архивировать ~/webapps/zers/wp-content/plugins/my-page-orderс выводом на ~/files/wp/my-page-order.tar.gz; ваша команда архивов ~/files/wp/my-page-order. (3) Спасибо за редактирование вашего ответа, чтобы объяснить, почему вы использовали gzip.
G-Man говорит «Восстановить Монику»
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.