Извлечь конкретный файл из tar архива (FreeBSD ) (в линуксе tar -x some_file -f archive.tar)

FreeBSD, NetBSD, OpenBSD, DragonFly и т. д.

Модератор: arachnid

Аватара пользователя
innkeeper
Сообщения: 110

Извлечь конкретный файл из tar архива (FreeBSD )

Сообщение innkeeper »

Есть tar архив. Из него нужно извлечь только один файл (весь архив оч. большой). В линуксе можно сделать так
tar -x <file> -O -f arhcive.tar

При попытке выполнить такую же комманду на FreeBSD 6.2
tar: Error openning archive: Failed to open '/dev/sa0': no such file or directory

заранее спасибо!
Спасибо сказали:
Thug
Сообщения: 200

Re: Извлечь конкретный файл из tar архива (FreeBSD )

Сообщение Thug »

1)mc рулит :)
2)полную команду можно? Похоже ошибка в написании просто...
Страйкбол - игра админов :)
Спасибо сказали:
Аватара пользователя
innkeeper
Сообщения: 110

Re: Извлечь конкретный файл из tar архива (FreeBSD )

Сообщение innkeeper »

mc тут не поможет. Это комманда используется в автоматизированном скрипте.

В скрипте вообще
gzip -d -c $1 | tar -O -x .PKG/deps (где $1 это tar.gz файл)

Например tar в OpenSolaris не может извлекать файлы напрямую из tar.gz поэтому надо использовать предварительно c gz. Задача сделать скрипт максимально портабельным с gnu утилитами (сейчас это наиболее быстрый и более менее надёжный способ в плане отладки для поставленной задачи)
Спасибо сказали:
Jay
Сообщения: 57
ОС: FreeBSD, Kubuntu Linux

Re: Извлечь конкретный файл из tar архива (FreeBSD )

Сообщение Jay »

tar -x <file> -O -f arhcive.tar

man tar от FreeBSD читать не пробовали? :)
Попробуйте так:

Код: Выделить всё

tar -xOf archive.tar <file>

Только имейте в виду, что <file> - это полный путь от корня архива до файла.
Если у вас упакован каталог, то надо указать путь "каталог/файл".
FreeBSD 6.2-REL, Kubuntu 6.06
pdaXrom r198 на Sharp Zaurus C1000
Спасибо сказали:
Аватара пользователя
innkeeper
Сообщения: 110

Re: Извлечь конкретный файл из tar архива (FreeBSD )

Сообщение innkeeper »

Да читал я man, вот только почему-то первые 5 строк пропускал сразу =))))) Вообще если так посмотреть.. то это ж кошмар как у tar глючит перестановка аргументов.

Спасибо большое!
Спасибо сказали:
Jay
Сообщения: 57
ОС: FreeBSD, Kubuntu Linux

Re: Извлечь конкретный файл из tar архива (FreeBSD )

Сообщение Jay »

Основная проблема, что их (реализаций tar'ов) так много :)
А насчет аргументов все просто.
После опции -f должно идти имя архива.
Опция -x указывает, что выполняется извлечение из архива.
Опция -О выдает результат извлечения на stdout.
Соответственно, шаблон имени файла для извлечения если и может где-то быть, то только после всех опций :)
Поэтому ваша конструкция
tar -x <file> -O -f arhcive.tar

вполне будет работать в таком виде:

Код: Выделить всё

tar -x -O -f arhcive.tar <file>


Я просто написал все ключи в кучу
FreeBSD 6.2-REL, Kubuntu 6.06
pdaXrom r198 на Sharp Zaurus C1000
Спасибо сказали: