Невозможно установить целевой каталог при извлечении архива с помощью 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, но это должно решить вашу непосредственную проблему)
Извлекает myarchive.tar в /mydirectory
Команды:
cd /mydirectory
pax -rv -f myarchive.tar -s ',^/,,'
mv myarchive.tgz mydirectory/ && tar xvf mydirectory/myarchive.tgz
Поскольку ваш tarball был создан с полным путем, скачайте GNU tar и попробуйте еще раз, чтобы увидеть, работает ли он.