Как загрузить архив и извлечь его, не сохраняя архив на диск?

Я хотел бы загрузить и извлечь архив в заданной директории. Вот как я это делал до сих пор:

wget http://downloads.mysql.com/source/dbt2-0.37.50.3.tar.gz tar zxf dbt2-0.37.50.3.tar.gz mv dbt2-0.37.50.3 dbt2 

Я бы хотел вместо этого загрузить и извлечь архив на лету , не имея tar.gz записанного на диск. Я думаю, что это возможно, проложив вывод wget в tar и давая tar цель, но на практике я не знаю, как скомпоновать фрагменты.

2 Solutions collect form web for “Как загрузить архив и извлечь его, не сохраняя архив на диск?”

Вы можете сделать это, указав wget для вывода своей полезной нагрузки в stdout (с флагом -O- ) и подавить собственный вывод (с флагом -q ):

 wget -qO- your_link_here | tar xvz 

Чтобы указать целевой каталог:

 wget -qO- your_link_here | tar xvz -C /target/directory 

Обновить

Если у вас есть GNU tar

 wget -qO- your_link_here | tar --transform 's/^dbt2-0.37.50.3/dbt2/' -xvz 

должен позволить вам сделать все за один шаг.

Этот oneliner делает трюк:

 tar xvzf -C /tmp/ < <(wget -q -O - http://foo.com/myfile.tar.gz) 

краткое объяснение: правая часть в скобках выполняется сначала ( -q говорит wget делать это тихо, -O - используется для записи вывода в stdout).

Затем мы создаем именованный канал, используя оператор подстановки процесса из Bash <( для создания именованного канала) . Таким образом мы создаем временный файловый дескриптор, а затем направляем содержимое этого дескриптора на tar, используя оператор перенаправления файлов.

  • Запуск тысяч параллельных фоновых процессов в сценарии bash
  • Возможно ли выполнить результат wget как команды?
  • Используя wget или другую команду, как скачать сейчас, но конвертировать ссылки позже?
  • Как использовать параметр wget -wait при использовании ввода из файла?
  • wget не может разрешить адрес хоста 80% времени
  • В чем разница между curl и wget?
  • Ошибка wget -output-document = при наличии символа ~
  • wget --spider: как определить, где неработающие ссылки происходят из
  • Поместите два задания Cron в crontab, используя wget
  • Возможно ли объединить --span-hosts с --no-parent в wget?
  • запустить две команды в отключенном экране
  • Interesting Posts

    Ошибка сегментации в системном каталоге `/ tmp`

    Можно ли искать текст в текстовых файлах с помощью Catfish?

    Широковещательная передача всем пользователям в списке друзей с копете?

    Фоновый процесс PID

    Почему заглавные буквы включены в ряд строчных букв в регулярном выражении awk?

    ACL по умолчанию: файлы и каталоги

    Характеристики полосы пропускания, CPU и памяти возвращаются в одной строке от терминала

    Развернуть ~,. и `..`

    Grep / awk / sed для строк, состоящих только из двух букв, и строк, начинающихся с буквы и встречающих определенную длину

    awk распечатать совпадение, только если последняя запись перед другим совпадением

    Как получить список затронутых файлов между двумя точками времени?

    В чем смысл IFS = $ '\ n' в сценариях bash?

    Найти текст в файле и вставить текст после него

    limit.conf модификация не работает

    Не видя пакетов из внутреннего-> внешнего брандмауэра в AWS VPC

    Linux и Unix - лучшая ОС в мире.