Назад | Перейти на главную страницу

Невозможно установить целевой каталог при извлечении архива с помощью 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/
...

:: пыль прочь 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 

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

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

Экстракты myarchive.tar к / mydirectory

Команды:

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