Я пытаюсь извлечь 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 ',^/,,'