부모 디렉토리에서 지정된 깊이까지 파일을 가져 오는 데 wget을 비활성화하는 방법이 있습니까? 일반적으로 “-부모 없음”을 사용하면

wget-np부모 디렉토리에서 파일을 가져 오지 못하게하는 옵션 이 있습니다. 비슷하지만 조금 더 유연한 것이 필요합니다. 치다:

www.foo.com/bar1/bar2/bar3/index.html

bar2(!) 보다 “높은”(트리 계층 구조)이 아닌 모든 것을 얻고 싶습니다 . 따라서 bar2가져와야하지만 가져 오지 않아야 bar1합니다.

wget을 더 선택적으로 만드는 방법이 있습니까?

배경 : 비슷한 논리 구조로 시작 지점, 위, 아래로 웹 사이트를 미러링하려고합니다. 이외의 도구가있는 경우 해당 wget레이아웃에 더 적합하면 알려 주시기 바랍니다.

최신 정보

또는 가능한 깊이를 지정하는 대신 “이것이나 해당 URL과 일치하지 않는 한 부모 없음”과 같은 것일 수 있습니다.

업데이트 2

서버에 어떤 구조가 있습니까? 트리로 시각화 할 수 있습니다. 따라서 일반적으로 “-부모 없음”을 사용하면 A 지점에서 시작하여 내려갑니다.

내 소원은 올라갈 수있는 능력입니다 .X 노드까지 올라갈 수 있거나 B 노드 (거리 BA = X)까지 올라갈 수 있습니다 (100 % 동등).

모든 경우에 내려 가기 규칙은 사용자가 정의한대로 유지됩니다 (예 : Y 수준 만 내려 가기).

보관하는 방법? 실제로 문제는 아닙니다. wget기본적으로 서버 구조를 재생성하거나, 여기에 두려워 할 것이 없거나, 아무것도 고칠 필요가 없습니다. 평소와 같이 2 단어로 말입니다.

업데이트 3

아래의 디렉토리 구조-각 디렉토리에는 R-R.html 등의 파일이 하나만 있다고 가정합니다. 하나 이상의 페이지를 가질 수 있기 때문에 이것은 간단합니다.

        R
       / \
      B   G
     / \
    C   F
   / \
  A   D
 /
E

A (A.html)는 내 출발점이며 X = 2입니다 (따라서 B는 가져오고 싶은 최상위 노드입니다). 이 특정 예에서 이는 R.html 및 G.html을 제외한 모든 페이지를 가져 오는 것을 의미합니다. A.html는 내가 있기 때문에 “출발점”이라고 해야 그것에서 시작 B.에서하지,

업데이트 4

이름 지정은 업데이트 3에서 사용됩니다.

wget 옵션 www.foo.com/B/C/A/A.html

문제는 디렉토리 B와 그 아래의 모든 페이지를 가져 오는 옵션입니다 (A.html에서 시작해야 함).



답변

나는 그것을 시도하지 않았지만 -I와 -X를 사용하면 원하는 것을 줄 수 있습니다. 나의 첫 번째 시도는

wget -m -I bar1/bar2 -X "*" http://www.foo.com/bar1/bar2/bar3/index.html

옵션 설명 :

-m:
   --mirror
       Turn on options suitable for mirroring.  This option turns on recursion and time-stamping, sets
       infinite recursion depth and keeps FTP directory listings.  It is currently equivalent to -r -N -l
       inf --no-remove-listing.
-I: list
   --include-directories=list
       Specify a comma-separated list of directories you wish to follow when downloading.  Elements of
       list may contain wildcards.
-X: list
   --exclude-directories=list
       Specify a comma-separated list of directories you wish to exclude from download.  Elements of list
       may contain wildcards.

답변

URL에 최종 /를 추가해야합니다. 그렇지 않으면 원하는 것을 얻을 수 없습니다.

www.myhostname.com/somedirectory 에서 모든 컨텐츠를 가져 오려면 구문이 다음과 같아야합니다.

wget -r -nH http://www.myhostname.com/somedirectory/

끝없이 그것을 시도하고 무슨 일이 일어나는지보십시오. 그런 다음 /로 시도하십시오.


답변

내가 생각하는 바로 여기에 해답이 있습니다 --no-parent옵션 :

   -np
   --no-parent
       Do not ever ascend to the parent directory when retrieving recursively.
       This is a useful option, since it guarantees that only the files below
       a certain hierarchy will be downloaded.

답변

어쩌면 내가 뭔가를 잃어 버렸지 만, 그것이 당신이 원하는 것이라면

wget -c -np -r www.foo.com/bar1/bar2

나를 위해 일합니다 (예제 사용). 물론 이러한 옵션을 사용하면 위에서부터 모든 디렉토리 구조를 얻을 수 있습니다 www.foo.com. bar2최고 수준에서 원한다면

wget -c -np -r -nH --cut-dirs=1 www.foo.com/bar1/bar2

-nH의 못된 www.foo.com--cut-dirs=1제거됩니다 bar1당신이 얻을 것이다, 그래서 bar2그 하위 디렉토리가 현재 디렉토리에 다운로드. 자세한 내용은을 참조하십시오 man wget. 읽을 수 있고 예제가 있습니다.