Dosyalar wget içinde mevcutsa indirimi atla?


Yanıtlar:


273

Aşağıdaki parametreyi deneyin:

-nc, --no-clobber: mevcut dosyalara indirilecek indirme işlemlerini atla.

Örnek kullanım:

wget -nc http://example.com/pic.png

35
-ncHTTP isteğinin gönderilmesini ve daha sonra dosyanın indirilmesini engellemez. Dosya zaten tam olarak alınmışsa, dosyayı indirdikten sonra hiçbir şey yapmaz. Dosya zaten varsa HTTP isteğinin yapılmasını önlemek için yine de var mı? stackoverflow.com/questions/33203898/…
ma11hew28

8
Bağlantılı soruda belirtildiği gibi, katılmıyorum - Eğer hiçbir clobber kullanılmazsa ve dosya adı varsa çıkar. HEAD talebi bile yok. Durum böyle olmasa bile, :-) ile başlayan bir dosyanız olup olmadığını kontrol edin[ ! -e "$(basename $URL)" ] && wget $URL
plundra

3
Bence farklı sonuçlar alıyor olabilirim çünkü --recursiveseçeneği kullanıyorum .
ma11hew28

200

-nc, --no-clobberYeni dosyalar indirilmez olarak seçenek en iyi çözüm değildir. Bunun -Nyerine, yalnızca sunucunun daha yeni bir sürümü varsa dosyayı karşıdan yükleyecek ve üzerine yazacak, bu yüzden doğru cevap:

wget -N http://www.example.com/images/misc/pic.png

Sonra birlikte veya olmadan, -N Wget'i çalıştıran -rveya -pbir dosyanın daha yeni kopyasını indirmek için olsun veya olmasın dair karar dosyasının yerel ve uzak zaman damgası ve büyüklüğüne bağlıdır. -ncile aynı anda belirtilmemiş olabilir -N.

-N, --timestamping: Zaman damgasını açın.


39
Sunucu düzgün yapılandırılmadığında -Nbaşarısız olabilir ve wget her zaman yeniden indirilir. Yani bazen -ncdaha iyi bir çözümdür.
kullanıcı

2
'Sunucu düzgün yapılandırılmadığında' gerçekleşebilecek geçerli senaryo ne olabilir?
AjayKumarBasuthkar

kopyalanan bir konumdan indirirken tüm zaman damgalarını değiştirir.
Robert

Bunun en iyi olup olmadığı bağlama bağlıdır. Örneğin, bir listeden ~ 1600 dosya indiriyorum ve sonra listeyi daha fazla dosya içerecek şekilde güncelledim. Dosyalar değişmez, bu yüzden en son sürümü umursamıyorum ve zaten sahip olduğum 1600 dosyanın yeni sürümleri için sunucuyu kontrol etmesini istemiyorum.
JBentley

2
@AjayKumarBasuthkar: Sunucu daha yeni bir dosyayı kontrol etmeyi desteklemediğinde wgetşikayet edecek Last-modified header missing; bu tam olarak özetlenen durumdur.
Piskvor

23

İle Wget'i çalıştırırken -rveya -pancak olmadan -N, -ndya da -nc, yeniden indirerek bir dosyayı yeni bir kopyasını basitçe eski üzerine yazarak sonuçlanacaktır.

Bu nedenle ekleme -ncişlemi bu davranışı önler, bunun yerine orijinal sürümün korunmasına ve sunucudaki yeni kopyaların yok sayılmasına neden olur.

GNU'da daha fazla bilgi bulabilirsiniz.


18

Aradığım cevap https://unix.stackexchange.com/a/9557/114862 adresinde .

-cYerel dosya, sunucu sürümüne eşit veya daha büyük boyuttayken bayrağı kullanmak yeniden indirmeyi önler.


1
Bu özellikle -i bayrağıyla bir grup dosya indirirken harikadır. wget -i filelist.txt -cdosya listesinin başarısız bir şekilde indirilmesine devam edecektir.
Trevor
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.