Это не работает:
tar xf /tmp/foo.tar.gz foo/bar
tar: foo/bar: Not found in archive
Для меня не очевидно, что бы сделать это, кроме как извлечь его на место и переместить файлы.
От 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 в этом отношении практически одинаков, см. «Изменение рабочего каталога» в его руководстве )
если вы хотите извлечь архив tar в другом месте, просто перейдите в каталог назначения и распакуйте его там:
Команда, которую вы использовали, будет искать файл
foo/bar
в архиве и извлекать его.источник
Выполнение:
сделал бы работу.
По сути, это порождает новую оболочку (круглые скобки), в этой подоболочке измените каталог на
foo/bar
и затем распакуйте файл.Вы можете изменить его
;
,&&
чтобы убедиться, что всеcd
работает нормально.источник
Вы можете дать имя файла
./file
после tar-файла.если это работает, значит, вы создали tar с
./
. используйте команду less для просмотра содержимого tar.источник
Я столкнулся с чем-то похожим и решил эту проблему.
Проблема была в создании файла, а не в созданном файле.
При попытке скопировать и передать файл в каталог A, я указал путь к исходному файлу в команде tar.
Что я смог сделать, это решить
При передаче и распаковке архива создаются необходимые подкаталоги.
источник
Измените каталог, куда вы хотите извлечь
если расположение файла извлечения в /u01/backup.tar, то
Извлечь следующим образом:
источник
Команда:
tar -xzvf foo.tar.gz -C /home/user/bar/
извлечет входной файл "foo.tar.gz" в каталог
/home/user/bar
при печати обработанных файлов.источник