Bir arşiv nasıl indirilir ve arşiv diske kaydedilmeden nasıl çıkartılır?


62

Belirli bir dizinin altındaki bir arşivi indirmek ve çıkartmak istiyorum. İşte şimdiye kadar nasıl yapıyorum:

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

Ben arşiv indirmek ve ayıklamak için yerine istediğiniz anında kalmadan tar.gzdiske yazılır. Bu çıktısının ile mümkün olduğunu düşünüyorum wgetetmek tarve vermek tarbir hedef, ama pratikte ben parçaları bir araya nasıl bilmiyorum.

Yanıtlar:


95

Sen anlatarak bunu yapabiliyor wgetçıkışına (bayrağıyla standart çıktıya yükü -O-) ve (bayrağıyla kendi çıkışını bastırmak -q):

wget -qO- your_link_here | tar xvz -

Bir hedef dizin belirlemek için:

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

Güncelleme

GNU’ya sahipseniz tar

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

hepsini bir adımda yapmanıza izin vermelidir.

-q sessiz

-O - stdout çıktısı


Belirtilen yol aşağıdaki gibi olmalıdır:wget -qO- your_link_here | tar xvz - -C /target/directory
Marslo

belki insanlara sadece tar yerine tar kullanmasını söyle?
Alexander Mills

wget -qO- <url> | tar -xvz -C <target folder>Gnu katran üzerinde çalıştı.
AlikElzin-kilaka

14

Başka bir seçenek de curlvarsayılan olarak stdout'a yazanları kullanmaktır :

curl -s some_url | tar xvz -C /tmp

2
Seçeneklerinizi diğerlerinden daha çok seviyorum amacurl -s some_url | tar xvz - -C /tmp
FiftiN

1
olarak FiftiN : - önerdi> örn biri kullanabilir depo içindeki dosyaların filtrelenmiş listesini görmek için$ curl -L https://api.github.com/repos/repo_owner/repo_name/tarball | tar tvfz - -C /tmp --wildcards *.py
Alex Glukhovtsev

11

Bu oneliner hile yapar:

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

Kısa açıklama: Parantez içinde sağ taraf ilk olarak yapılır ( -qsessizce yapmasını söyler -O -, çıktıyı stdout'a yazmak için kullanılır).

Sonra Bash gelen süreç ikamesi operatörü kullanarak adlı bir kanal oluşturamadı <(bir oluşturmak için adlandırılmış yöneltme . Bu şekilde geçici bir dosya tanımlayıcısı oluştururuz ve daha sonra bu tanımlayıcının içeriğini <dosya yeniden yönlendirme işlecini kullanarak tar'a yönlendiririz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.