Невозможно установить целевой каталог при извлечении архива с помощью tar

Я пытаюсь извлечь архив tar в определенную директорию. Я пытался использовать флаг -C, но он не работает, как ожидалось. Вот командная строка, которую я использую

tar xvf myarchive.tar -C mydirectory/

Это дает мне следующую ошибку:

tar: file -C: not present in archive
tar: file mydirectory/: not present in archive

Я также попытался установить флаг -C перед файлом архива, но он просто говорит это:

tar xvf -C mydirectory/ myarchive.tar
tar: -C: No such file or directory

Что я делаю неправильно?

РЕДАКТИРОВАТЬ: tar -tf показывает, что архив tar не имеет полных путей:

tar -tf myarchive.tar
herareport/
herareport/bin/
...

5 ответов

Решение

:: от пыли Crusty Old Unix Monger значок::

Из комментариев:

Если я попытаюсь использовать sudo -u myuser cd /home/myuser/; sudo -u myuser tar xvf /path/to/myarchive.tar он пытается извлечь в неправильный каталог.

Это потому что sudo cd не является постоянным (попробуйте сами - sudo cd / а потом беги pwd - вы будете в каталоге, в котором вы начали, так что ваш второй sudo команда не работает там, где вы хотите).

Чтобы это исправить, нужно сказать sudo запустить собственную оболочку, чтобы вы могли запускать несколько команд в качестве целевого пользователя.
sudo -u myuser -s -- "(cd /home/myuser ; tar xvf /path/to/tarfile)" вероятно, добьется цели.

(Если для какого-то резонанса ваша версия sudo не любит это, sudo -u myuser sh -c "cd /home/myuser ; tar xvf /path/to/tarfile" тоже должно работать.)

(Конечно, ничего из этого не объясняет, почему -C не работает должным образом в AIX, но это должно решить вашу непосредственную проблему)

Пытаться

tar -xvC mydirectory/ -f myarchive.tgz 

Извлекает myarchive.tar в /mydirectory

Команды:

cd /mydirectory
pax -rv -f myarchive.tar -s ',^/,,'

mv myarchive.tgz mydirectory/ && tar xvf mydirectory/myarchive.tgz

Поскольку ваш tarball был создан с полным путем, скачайте GNU tar и попробуйте еще раз, чтобы увидеть, работает ли он.

Другие вопросы по тегам