전체 webdav 디렉토리를 재귀 적으로 복사 / 다운로드하려면 어떻게합니까?


9

Nautilus를 사용하여 webdav 서버에서 로컬 디스크로 폴더를 복사하려고하면 매니페스트 파일 (디렉토리 목록 등의 XML)이되는 것을 복사합니다. 시체로 빈 파일을 얻습니다.

전체 디렉토리 트리를 재귀 적으로 복사하고 싶습니다. 아무도 내가 어떻게 할 수 있는지 알고 있습니까?

추신 : Nautilus 2.32.2.1 및 Cadaver 0.23.3과 함께 Ubuntu 11.04를 사용하고 있습니다


GUI가있는 도구가 필요합니까, 아니면 "충분히 좋은"것입니까?
Ocaso Protal

나는 wget에서 엿봄을 가지고 있었고, 그것은 webdav를 할 것을 주장하지 않았다 ... 그것이 있다면 나를 위해 일할 것입니다
drevicko

2
이것을보십시오 : wget --user = {username} --password = {password} --wait = 20 --limit-rate = 20K -r -p -U Mozilla http : // {website} 작동하면 추가하십시오 답변으로;)
Rinzwind

1
그러나 webdav는 단순한 https이므로 wget이 작동해야합니다. 빠른 구글 검색은 내가 준 astron.nl/northstar/nswiki/lib/exe/... 빠른 개요를 통해 wget을 가진 WebDAV를 얻을
Ocaso Protal

1
흥미로운 .. 내가 webdav 디렉토리 / 컬렉션을 가리킬 때, 그것은 그 디렉토리에 대한 html 파일 (즉, 웹 페이지와 같은 것들의 목록과 함께)을 잡은 다음에 불평한다 : "localhost / webdav / calibre-library : directorylocalhost가 아니다 /webdav/calibre-library/index.html : 디렉토리가 아님 " 나는 WebDAV를 루트에 그것을 지적하면, WHOLD 웹 서버를 다운로드하기 시작까지의 다소 임의 ... 끝 ... 그건하는 것으로 HTTPS 만 자체 서명, 내가 추가했다, 그래서 '--no 검사 인증서'
drevicko

답변:


3

이 답변은 @Ocaso 및 @Rinzwind의 의견에 제시된 제안을 요약합니다.

나는 이것을 사용했다 :

wget -r -nH -np --cut-dirs=1 --no-check-certificate -U Mozilla --user={uname} 
    --password={pwd} https://my-host/my-webdav-dir/my-dir-in-webdav

완벽하지는 않지만 ( 'index.html? C = M; O = D'등을 많이 다운로드 함) 그렇지 않으면 정상적으로 작동했습니다.

"-r"은 링크를 따라 재귀 적으로 다운로드됩니다.

"-np"는 상위 디렉토리로 오름차순을 방지합니다 (그렇지 않으면 전체 웹 사이트를 다운로드하십시오!).

"-nH"는 "my-host"(내가 원하지 않는)라는 디렉토리를 만들지 못하게합니다.

"--cut-dirs = 1"은 "my-webdav-dir"이라는 디렉토리를 작성하지 못하게합니다.

"--no-check-certificate"는 webdav 서버에서 자체 서명 된 인증서를 사용하고 있기 때문입니다 (https도 강요합니다).

"-U Mozilla"는 http 요청의 사용자 에이전트를 "Mozilla"로 설정합니다. webdav 서버에는 실제로 필요하지 않지만 어쨌든 포함 시켰습니다.


이를 사용하여 nextcloud에서 파일을 다운로드하면 컨텐츠가 포함 된 파일이 다운로드됩니다 This is the WebDAV interface. It can only be accessed by WebDAV clients such as the Nextcloud desktop sync client.. 왜 그런 일이 생길지 아십니까?
Micromegas

내 생각에 nextcloud는 WebDAV 클라이언트처럼 보이는 사용자 에이전트 (브라우저 인 Mozilla와 달리)를 기대합니다. 클라이언트와 패킷 스니퍼 (예 : wireshark)가 있으면 요청에서 사용하는 사용자 에이전트를 찾을 수 있습니다.
drevicko

또한 그것의 사용자 에이전트에서 "모질라 / 5.0 (안드로이드) Nextcloud - 안드로이드 / 3.8.0"을 할 수 있다는 것을 알아 .
drevicko

drevicko 감사합니다 !! 내가 할게요
Micromegas

또한 여기 . 행운을 빕니다!
drevicko

3

실제로 Cadaver를 사용하면 cd파일을 다운로드하려는 디렉토리로 이동할 수 있습니다 mget *.


2
유용한 답변이 되려면 사용자에게이를 수행하는 방법을 알려 주어야합니다.
RolandiXor

1
흠, mget * .폴더에 또는 mget foldername결과 501 Not Implemented. box.com에서 실제로 효과가 있었습니까?
alexanderadam

@Wurstsalat 여분의 '.'를 넣지 않아야합니다. ; 또한 파일 이름을 인수로 사용하므로`mget foldername / filename '을 수행해야합니다.
JasoonS

하위 디렉토리 ( 재귀 부분) 가있을 때 그것은 효과가 없습니다 .
Radon Rosborough

3

dav2fs를 사용하여 webdav 서버를 마운트 한 다음 로컬 디렉토리처럼 액세스 할 수 있습니다.


또한 파일 및 폴더에이 방법을 쉽게 사용
bobbyrne01

그리고이 방법은 다른 방법과 비교할 때 가장 느리고 항상 작동하지는 않습니다 (파일 이름 관련 버그).
alexanderadam

3

또는 파일 시스템의 일부로 액세스 할 경로로 마운트 할 수 있습니다.

sudo mount -t davfs https://your.remote/path /your/local/mount/point

참고 : /your/local/mount/point이것이 작동하려면 실제 기존 디렉토리 여야합니다.

내가 아는 한 명령을 실행하려면 다음을 실행하면됩니다. sudo apt-get install davfs2(더 많은 구성이 필요한 경우 사과를했지만 오래 전에이 작업을 수행했습니다.)

(Liam의 답변이 충분한 정보를 제공하지 못한다고 생각하기 때문에 이것을 답변으로 추가했습니다.)


사용하여 sudo파일을 다운로드 정말 잘 소리가 나지 않는다.
Equidamoid

1
@Equidamoid 마운트 파일 시스템은 경우에 따라 로컬 UNIX 권한을 무시할 수 있으므로 루트 액세스가 필요합니다.
Radon Rosborough
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.