Odpowiedzi:
Najczęstszym sposobem weryfikacji integralności pobranych plików jest użycie sum kontrolnych MD5. Zakłada się, że witryna, którą pobierasz z faktycznie opublikowanych sum kontrolnych MD5 ich plików. Możesz zweryfikować sumę kontrolną MD5, tworząc własną sumę kontrolną pobranego pliku i porównując ją z opublikowaną sumą kontrolną. Jeśli są identyczne, pobrany plik jest kompletny i nie jest modyfikowany.
Jeśli nie spodziewasz się, że plik, który pobierasz, zmieni się, możesz wstępnie obliczyć sumę kontrolną i zapisać go w skrypcie, ale jeśli plik zostanie kiedykolwiek zaktualizowany, weryfikacja zakończy się niepowodzeniem.
Aby utworzyć sumę kontrolną MD5 uruchomienia pliku md5sum myFile
. W przypadku wget możesz uznać to polecenie za przydatne, szczególnie jeśli plik, który pobierasz, jest duży:
wget -O - http://example.com/myFile | tee myFile | md5sum > MD5SUM
.
Spowoduje to utworzenie sumy kontrolnej „myFile” podczas pobierania i zapisanie jej w pliku MD5SUM, co może zaoszczędzić trochę czasu.
W przypadku zerwanego połączenia uważam, że najlepszym sposobem byłoby sprawdzenie kodów wyjściowych wget. Jeśli pobieranie powiedzie się bez żadnych błędów, wget powróci 0
. Wszystko inne wskazuje, że coś poszło nie tak. Spójrz na sekcję „Status wyjścia” w man wget
.
Kod powrotu polecenia użytego do pobrania pliku powie ci, czy polecenie wykonało się pomyślnie, czy nie. Zazwyczaj kod powrotu 0 oznacza sukces, a każda niezerowa liczba oznacza błąd. Możesz uzyskać dostęp do kodu powrotu poprzez $?
zmienną.
Podstawowym przykładem użycia wget
byłoby:
#!/bin/bash
wget foo.tgz &> /dev/null
if [[ "$?" != 0 ]]; then
echo "Error downloading file"
else
echo "Success"
fi
&> /dev/null
przekierowuje wszystkie dane wyjściowe wget do, /dev/null
więc jest idealny do tworzenia skryptów, ALE utrudnia to debugowanie wget
błędów.
wget -q ... || { handle ; error ; }
man
podczas czytania odpowiedzi, a dwie rzeczy, które zamierzałem powiedzieć, były już w dwóch odpowiedziach - więc zrobiłem dwa komentarze. Miły akcent również dla ciebie.
wget
może się wydawać, że pobieranie zostało ukończone, nawet jeśli się zepsuło. Informacje proxy o zerwanych połączeniach TCP vs. zamkniętych połączeniach TCP, co jest problematyczne z HTTP, ponieważ domyślnie używa zamkniętego TCP jako znacznika końcowego. Dlatego dodałem sprawdzenie, czy rozmiar pliku w nagłówku odpowiada rozmiarowi pobranego pliku, gdy uruchomiłem masowe pobieranie. Nie jestem pewien, czy wget
sprawdzana jest taka spójność lub co mówi specyfikacja http na ten temat.