Wget'in dosyaların üzerine yazılmasına nasıl izin verilir


9

wgetKomutu kullanarak , kaç kez çağırdığımdan bağımsız olarak her seferinde yerel dosyamın üzerine yazmasına nasıl izin verebilirim / talimat verebilirim.

Diyelim ki şu konumdan bir dosya indirmek istiyorum: http: //server/folder/file1.html

Burada, ne zaman söylersem wget http://server/folder/file1.html, file1.htmldeğiştirildiğim, indirildiğim zamandan bağımsız olarak bunun yerel sistemime yazılmasını istiyorum. varolan dosyayı değiştirmek / üzerine yazmak.

Aşağıdaki seçenekleri denedim, ancak her seçenek başka bir amaç için / amaçlanmıştır.

  1. -nc => --no-clobber
  2. -N => Zaman damgasını aç
  3. -r => Özyinelemeli almayı aç

Yanıtlar:


7
wget -q http://www.whatever.com/filename.txt -O /path/filename.txt 

-q sessiz moddur, böylece komuttan herhangi bir çıktı olmadan bir cron'a atabilirsiniz


wgetKomutta bunu açıkça kullanarak belirtmeden yapan doğrudan bir seçenek yok -O filenamemu?
Gnanam

3
Wget kullanarak dosyaları indirirken her dosyanın üzerine yazmaya zorlamanın bir yolu yok gibi görünüyor. Ancak, -N seçeneğini kullanmanız daha yeni dosyaların indirilmesini ve üzerine yazılmasını zorlayabilir. wget -N Boyut veya zaman damgası değişirse orijinal dosyanın üzerine yazılır
aleroot

Doğru değil. komutun çıkışını stdout'a yönlendirin ve dosyaya yönlendirin: wget -q $ urlYouNeedToGrap> $ fileYouWantToOverwriteEverytime
rasjani

8

Bu seçenek çalışır

wget -N http://server/folder/file1.html

bilgi

-N,  --timestamping            don't re-retrieve files unless newer than
                               local.

4

curlBunun yerine kullan ?

curl http://server/folder/file1.html > file1.html

Ben bir Linux uzmanı değilim. Arasındaki temel fark nedir wgetve curl? Her komutun belirli bir amaç için olduğundan eminim.
Gnanam

1
@Gnanam: Aslında temel CLI yardımcı programında çok fazla örtüşüyorlar. Her ikisi de bir HTTP bağlantısı kurabilir ve sonucu diske kaydedebilir. Farkları gözden geçirmek için daniel.haxx.se/docs/curl-vs-wget.html Ne olursa olsun, yukarıdaki kullanım tamamen geçerlidir. Bu genel alanda başka araçlar da var: curl.haxx.se/docs/comparison-table.html
Stu Thompson

Bu 2 bağlantı farkı anlamak için gerçekten faydalıdır.
Gnanam

0

Ben de dizinleri (bu yüzden -x bayrağını geçmek) indirmek sürece bunu sanmıyorum. Dosyanın ne olduğunu biliyorsanız, -O dosya adını kullanabilirsiniz, örneğin:
wget http://yourdomain.com/index.html -O index.html


0

Denenmemiş: belki birlikte çalışabilirsiniz wget -r --level=0.

Başka bir olasılık: curl -Oüzerine yazar (ancak sizin için önemli olan veya olmayan dosya adını seçmek için farklı bir yol kullanır).


Bu wgetsatır gerçekten doğru olanı yapmaz çünkü alt dizinlerin hiyerarşisini oluşturur. curl -OÖte yandan, mevcut kopyaların üzerine yazarak dosyayı doğru bir şekilde indirir.
sth

0

Neden betiğinizin etrafına küçük bir paket koymuyorsunuz?

Komut dosyası tüm dosyaları geçici bir konuma taşıyabilir, ardından uzak dosyaları / web sayfalarını silebilir.

Başarılı olduğunda geçici konumdaki dosyaları silin. Hata durumunda dosyaları geri taşıyın ve bir hata oluşturun.

Özellikle tüm dosyaların adını bilmediğiniz sürece sadece wget kullanarak istediğinizi yapmanın basit bir yolu yoktur, bu durumda -O seçeneği indirilen dosyanın dosya adını zorlamanızı sağlar.

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.