재귀 다운로드를 얻었지만 모든 링크를 따르고 싶지 않습니다.


10

wget을 사용하여 웹 사이트를 미러링하려고하지만 많은 파일을 다운로드하고 싶지 않으므로 wget의 --reject옵션을 사용하여 모든 파일을 저장하지 않습니다. 그러나 wget은 여전히 ​​모든 파일을 다운로드 한 다음 거부 옵션과 일치하면 나중에 파일을 제거합니다.

셸 와일드 카드와 일치하는 경우 특정 링크를 따르지 않도록 wget에 알리는 방법이 있습니까? wget이 이것을 할 수 없다면, 이것을 할 수있는 다른 일반적인 리눅스 명령이 있습니까?


3
전체 명령을 게시하십시오. 문제 해결이 훨씬 쉬워집니다.
Joseph Kern

답변:


9

더 유연하고 직관적 인 포함 / 제외 논리가있는 HTTrack 을 사용해 볼 수도 있습니다 . 이 같은...

httrack "https://example.com" -O ExampleMirrorDirectory \
"-*" \
"+https://example.com/images/*" \
"-*.swf"

규칙은 순서대로 적용되며 이전 규칙보다 우선합니다.

  1. 모든 것을 제외
  2. 하지만 https://example.com/images/를 포함 시키십시오 *
  3. 그러나 swf로 끝나는 것은 제외하십시오.

업데이트 된 URL로 CSS, 이미지 등을 다운로드합니까?
brandizzi


1

'man wget'의 --reject 섹션에서 :

"와일드 카드 문자 *,?, [또는]가 acclist 또는 rejlist의 요소에 나타나면 접미사가 아닌 패턴으로 취급됩니다."

이 작업을 수행하는 경우 사용중인 패턴과 일치해야하는 패턴의 예를 제공 할 수 있습니다. 당신은 그들이 일치한다고 말하지만 확실합니까?

또한이 목록을 따옴표로 묶어야하므로 쉘은 인수를 wget에 전달하기 전에 해당 와일드 카드를 확장하지 않습니다.

시스템에 1.12 버전이 없더라도 여기 에있는 매뉴얼의 파일 유형 섹션을 읽으 십시오 . 변경 로그에 따르면 관리자는 몇 가지 경고를 추가했습니다.

* NEWS: Added documentation change re: --no-parents, and various
caveats on accept/reject lists behavior. Rearranged some items in
order of priority.

--reject 옵션은 따옴표로 묶습니다. 파일이 다운로드 된 후 wget이 파일을 제거하기 때문에 파일이 올바른 파일과 일치 함을 알 수 있습니다. 처음에 파일 다운로드를 중단하고 싶습니다
Rory

이 htm (l) 파일입니까? 매뉴얼에 따르면, 이것들은 무엇이든 다운로드됩니다.
Kyle Brandt

예. 거부하려는 파일은 HTML 파일입니다. 나는 그들이 무엇을 다운로드했는지 알고 있습니다. 그것을 막을 방법이 있습니까?
Rory

1

-l NUMBER도움이된다면 옵션 으로 재귀 수준을 제한 할 수 있습니다 (특정 정규식 패턴을 따르지 않음).

"2"레벨은 index.html, 해당 하위 사이트 / 이미지 / etc 및 하위 사이트의 링크를 다운로드합니다.


이 경우에는 도움이되지 않습니다
Rory

1

wget을 어떻게 사용합니까? 이런 식으로 사용하십시오 :

wget -r --reject=gif,jpg,swf http://norc.aut.ac.ir/

이 명령은 gif 및 jpg 및 swf 파일을 무시합니다.


Rory McCann이 거부하려는 파일은 HTML 파일이지만 다른 HTML 파일을 유지하려고하므로이 구문은 그의 질문에 적용되지 않습니다.
Royce Williams

1

한 가지 해결 방법은 프록시 서버를 통해 wget을 실행하는 것입니다. 특정 패턴을 허용하지 않도록 프록시를 설정하십시오. 이렇게하면 wget이 처음부터 다운로드하지 못하게됩니다.

wget은 -R 패턴과 일치하는 파일을 다운로드하고 제거합니다. 확장명이나 파일 이름의 일부가 아닌 패턴과도 일치 할 수 있습니다. 그러나 wget을 먼저 다운로드하고 나중에 삭제하는 것을 멈추지 않습니다.

httrack 몇 가지 좋은 기능을 가지고 있지만 내 경험의 방법은은 "파일"httrack이 index.asp? 유형 = 기본 및 페이지 id = 2234234에 걸쳐 오면 기발한 예를 들어 조금있을 저장
그것을 저장할 수 있지만 보존하도록 지시해야 쿼리의 일부
예 : % h % p / % n % [TYPE : @TYPE = ::] % [PAGEID : PAGEID = ::]. % t
@는 물음표의 자리 표시 자이며 나중에 파일 이름을 바꿀 수 있습니다. 아니면 대신 물음표를 피할 수 있습니까? 문제는. % t가 원래 '.html'이 없었던 URI 끝에 '.html'을 추가한다는 것입니다.이 파일을 제거하면 httrack 다운로드 이미지의 파일 확장자가 부족합니다.

wget IMHO를 사용하는 것이 더 좋습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.