Ответы:
От man tar
:
-C directory
In c and r mode, this changes the directory before adding the
following files. In x mode, change directories after opening the
archive but before extracting entries from the archive.
т.е. tar xC /foo/bar -f /tmp/foo.tar.gz
должен делать работу. (в FreeBSD, но GNU tar в этом отношении практически одинаков, см. «Изменение рабочего каталога» в его руководстве )
Выполнение:
(cd foo/bar ; tar xf /tmp/foo.tar.gz )
сделал бы работу.
По сути, это порождает новую оболочку (круглые скобки), в этой подоболочке измените каталог на foo/bar
и затем распакуйте файл.
Вы можете изменить его ;
, &&
чтобы убедиться, что все cd
работает нормально.
tar -xf ancd.tar.gz my/name/file
Вы можете дать имя файла ./file
после tar-файла.
tar -xf ancd.tar.gz ./my/name/file
если это работает, значит, вы создали tar с ./
. используйте команду less для просмотра содержимого tar.
less ...tar.file
Я столкнулся с чем-то похожим и решил эту проблему.
Проблема была в создании файла, а не в созданном файле.
При попытке скопировать и передать файл в каталог A, я указал путь к исходному файлу в команде tar.
tar -cvf MyFile.tar /foo/bar/dir/not/needed/path/*
Что я смог сделать, это решить
cd /foo/bar/dir/not/needed/
tar -cvf /tmp/MyFile.tar path*
При передаче и распаковке архива создаются необходимые подкаталоги.
tar -xvf MyFile.tar