파일이 wget에 있으면 다운로드를 건너 뛰시겠습니까?


202

다음은 wget을 실행하는 가장 간단한 예입니다.

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

그러나 pic.png이미 사용 가능한 경우 wget 건너 뛰기 다운로드를 만드는 방법 은 무엇입니까?

답변:


273

다음 매개 변수를 시도하십시오.

-nc, --no-clobber: 기존 파일로 다운로드되는 다운로드를 건너 뜁니다.

샘플 사용법 :

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

35
-ncHTTP 요청 전송 및 후속 파일 다운로드를 막지 않습니다. 파일이 이미 완전히 검색된 경우 파일을 다운로드 한 후 아무 작업도 수행하지 않습니다. 파일이 이미 존재하는 경우 HTTP 요청을 방지하는 방법이 있습니까? stackoverflow.com/questions/33203898/…
ma11hew28

8
링크 된 질문에 언급했듯이 동의하지 않습니다-클로버를 사용하지 않고 파일 이름이 존재하면 종료됩니다. HEAD 요청조차 없습니다. 그렇지 않은 경우에도 :-)로 시작할 파일이 있는지 확인하십시오[ ! -e "$(basename $URL)" ] && wget $URL
plundra

3
--recursive옵션을 사용하고 있기 때문에 다른 결과가 나올 수 있습니다 .
ma11hew28

200

-nc, --no-clobber최신 파일이 다운로드되지 않으므로 옵션은 최적의 솔루션이 아닙니다. 하나는 사용해야 -N올바른 대답은, 그래서, 다운로드 서버가 최신 버전이있는 경우에만 파일을 덮어 쓰기하는 대신 :

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

그런 다음에 사용하거나 사용하지 않고, -N과를 Wget을 실행 -r하거나 -p파일의 새 복사본을 다운로드할지 여부에 관한 결정이 파일의 로컬 및 원격 타임 스탬프와 크기에 따라 달라집니다. -nc와 동시에 지정할 수 없습니다 -N.

-N, --timestamping: 타임 스탬프를 켭니다.


39
서버가 올바르게 구성되지 -N않으면 wget이 항상 다시 다운로드됩니다. 따라서 때로는 -nc더 나은 솔루션입니다.
사용자

2
'서버가 올바르게 구성되지 않은 경우'가 발생하는 적용 가능한 시나리오는 무엇입니까?
AjayKumarBasuthkar

복사 한 위치에서 다운로드 할 때 모든 타임 스탬프를 변경합니다.
Robert

이것이 최선인지 여부는 상황에 따라 다릅니다. 예를 들어, 목록에서 ~ 1600 개의 파일을 다운로드 한 다음 더 많은 파일을 포함하도록 목록을 업데이트했습니다. 파일은 변경되지 않으므로 최신 버전에 신경 쓰지 않으며 서버에 이미있는 1600 파일의 새 버전이 있는지 확인하고 싶지 않습니다.
JBentley

2
@AjayKumarBasuthkar : 서버가 최신 파일을 확인하는 방법을 지원하지 않으면 wget불평합니다 Last-modified header missing. 이것이 바로 상황의 개요입니다.
Piskvor는 건물을

23

-r또는로 -p, 그러나 -N-nd, 또는로 없이 Wget을 실행 -nc하면 파일을 다시 다운로드하면 새 사본이 단순히 기존 사본을 덮어 씁니다.

따라서 추가 -nc하면이 동작이 방지되어 대신 원래 버전이 유지되고 서버의 최신 사본이 무시됩니다.

GNU에서 더 많은 정보를보십시오.


18

내가 찾고있는 대답은 https://unix.stackexchange.com/a/9557/114862 입니다.

-c로컬 파일이 서버 버전보다 크거나 같은 경우 플래그를 사용하면 다시 다운로드하지 않아도됩니다.


1
이것은 -i 플래그를 사용하여 많은 파일을 다운로드 할 때 특히 좋습니다. wget -i filelist.txt -c실패한 파일 목록 다운로드를 다시 시작합니다.
Trevor
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.