Jest to najprostszy przykład działa wget:Pominąć pobieranie, jeśli pliki istnieją w wget?
wget http://www.example.com/images/misc/pic.png
ale jak zrobić wget pominąć pobieranie jeśli pic.png
jest już dostępny?
Jest to najprostszy przykład działa wget:Pominąć pobieranie, jeśli pliki istnieją w wget?
wget http://www.example.com/images/misc/pic.png
ale jak zrobić wget pominąć pobieranie jeśli pic.png
jest już dostępny?
Spróbuj następujący parametr:
-nc
,--no-clobber
: Przejście do pobrania, które pobrać do istniejących plików.
wykorzystanie próbki:
wget -nc http://example.com/pic.png
Przy uruchomieniu Wget z -r
lub -p
, ale bez -N
, -nd
lub -nc
, ponowne pobranie pliku spowoduje nowa kopia po prostu nadpisuje starą.
Dodanie -nc
zapobiegnie temu zjawisku, zamiast tego spowoduje zachowanie oryginalnej wersji i zignorowanie wszelkich nowszych kopii na serwerze.
Opcja -nc
, --no-clobber
nie jest najlepszym rozwiązaniem, ponieważ nowsze pliki nie zostaną pobrane. Należy używać -N
zamiast która pobierze i zastąpić plik tylko wtedy, gdy serwer ma nowszą wersję, więc poprawną odpowiedzią jest:
wget -N http://www.example.com/images/misc/pic.png
Następnie uruchomieniu Wget z -n, z lub bez
-r
lub-p
, decyzja, czy pobrać nowszą kopię pliku, zależy od lokalnego i zdalnego znacznika czasu i rozmiaru pliku.-nc
nie może być określona w tym samym czasie jak-
N.
-N
,--timestamping
: Włącz raz-tłoczącej.
Gdy serwer nie jest poprawnie skonfigurowany '-N' może się nie udać, a wget zawsze będzie ponownie pobierany. Tak więc czasami '-nc' jest lepszym rozwiązaniem. – user
jaki może być odpowiedni scenariusz, w którym wystąpiłby błąd "Kiedy serwer nie jest skonfigurowany prawidłowo"? – AjayKumarBasuthkar
podczas pobierania z lokalizacji, która została skopiowana, zmieniając wszystkie znaczniki czasu. – Robert
Odpowiedź, której szukałem, to https://unix.stackexchange.com/a/9557/114862.
Używanie flagi
-c
, gdy plik lokalny ma większy lub równy rozmiar niż wersja serwera, pozwoli uniknąć ponownego pobierania.
'-nc' nie uniemożliwia wysłania żądania HTTP, a następnie pobrania pliku. Po pobraniu pliku nie robi nic, jeśli plik został już w pełni pobrany. Czy mimo to nie można wykonać żądania HTTP, jeśli plik już istnieje? http://stackoverflow.com/questions/33203898/wget-skip-download-if-file-already-exists – ma11hew28
Jak zauważyłem w połączonym pytaniu, nie zgadzam się - jeśli no-clobber jest używany, a nazwa pliku istnieje, to kończy. Brak nawet żądania HEAD. Nawet jeśli tak nie było, sprawdź, czy masz plik na początek :-) '[! -e "$ (basename $ URL)"] && wget $ URL' – plundra
Myślę, że mogę uzyskać różne wyniki, ponieważ używam opcji '--recursive'. – ma11hew28