Jak rekurencyjnie kopiować / pobierać cały katalog webdav?


9

Kiedy próbuję skopiować folder z serwera webdav na dysk lokalny za pomocą Nautilus, kopiuje to, co wydaje się być plikiem manifestu (xml z listą katalogów itp.). Z trupem dostaję pusty plik.

Chciałbym móc rekurencyjnie kopiować całe drzewo katalogów. Czy ktoś wie, jak to zrobić?

ps: Używam Ubuntu 11.04 z Nautilus 2.32.2.1 i Cadaver 0.23.3


Czy potrzebujesz narzędzia z graficznym interfejsem użytkownika, czy wget jest dla ciebie „wystarczająco dobry”?
— Ocaso Protal

Rzuciłem okiem na wget i nie twierdziłem, że robię webdav ... Gdyby tak było, zadziałałoby dla mnie
— drevicko

2
Spróbuj tego: wget --user = {nazwa użytkownika} --password = {hasło} --wait = 20 --limit-rate = 20K -r -p -U Mozilla http: // {witryna} Jeśli to działa, dodaj go jako odpowiedź;)
— Rinzwind

1
Ale webdav jest zwykłym https, więc wget powinien działać. szybkie wyszukiwanie w Google dało mi astron.nl/northstar/nswiki/lib/exe/… szybki przegląd wget z
— webdav

1
ciekawe .. kiedy wskazuję go na katalog / kolekcję webdav, pobiera plik html dla tego katalogu (tj. z listą rzeczy jako strony internetowej), a następnie narzeka: "localhost / webdav / caliber-library: Not a directorylocalhost /webdav/calibre-library/index.html: Brak katalogu ”. Kiedy wskazuję go na katalog główny webdav, jego raczej losowy ... zaczyna pobierać wspaniały serwer WWW. Pamiętaj, że jest to tylko protokół https i samopodpisany, więc musiałem dodać „- no-check-certificate”
— drevicko

Odpowiedzi:


3

Ta odpowiedź zawiera podsumowanie sugestii podanych w komentarzach @Ocaso i @Rinzwind.

Użyłem tego:

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

Nie idealnie (pobrano wiele „index.html? C = M; O = D” i tym podobne), ale poza tym działało dobrze.

„-R” pobiera rekurencyjnie, podążając za linkami.

„-Np” zapobiega wstępowi do katalogów nadrzędnych (w przeciwnym razie pobierzesz całą stronę internetową!).

„-NH” uniemożliwia utworzenie katalogu o nazwie „mój-host” (czego nie chciałem).

„--Cut-dirs = 1” uniemożliwia utworzenie katalogu o nazwie „my-webdav-dir”.

„--No-check-certificate” wynika z tego, że używam samopodpisanego certyfikatu na serwerze webdav (wymuszam także https).

„-U Mozilla” ustawia agenta użytkownika w żądaniu http na „Mozilla” - mój serwer webdav tak naprawdę tego nie potrzebował, ale i tak go załączyłem.


Używanie tego, aby pobrać plik z nextcloud to nie pobrać plik z treścią: This is the WebDAV interface. It can only be accessed by WebDAV clients such as the Nextcloud desktop sync client.. Wiesz, dlaczego tak się dzieje?
— Micromegas

Domyślam się, że nextcloud oczekuje klienta, który wygląda jak klient WebDAV (w przeciwieństwie do Mozilli, która jest przeglądarką). Jeśli masz klienta i sniffer pakietów (np. Wireshark), możesz dowiedzieć się, jakiego klienta użytkownika używa w swoich żądaniach.
— drevicko

Alternatywnie dowiedz się, że jego agentem użytkownika może być „Mozilla / 5.0 (Android) Nextcloud-android / 3.8.0” z sieci .
— drevicko

Dziękuję bardzo drevicko !! Zrobię to
— Micromegas

Również tutaj . Powodzenia!
— drevicko

3

W rzeczywistości z Cadaver możesz cdprzejść do katalogu, z którego chcesz pobrać pliki i mget *.


2
Aby była to przydatna odpowiedź, musisz powiedzieć użytkownikowi, jak to zrobić.
— RolandiXor

1
Hm, mget * .w folderze lub w mget foldernamewyniku 501 Not Implemented. Czy to naprawdę działało dla ciebie na box.com?
— alexanderadam

@Wurstsalat Nie możesz dodawać dodatkowych „.” ; bierze też nazwy plików jako argumenty, więc będziesz musiał zrobić mget nazwa_folderu / nazwa pliku.
— JasoonS,

To nie działa dla mnie, gdy są podkatalogi ( część rekurencyjna ).
— Radon Rosborough,

3

Możesz użyć dav2fs do zamontowania serwera webdav, a następnie możesz uzyskać do niego dostęp jak w katalogu lokalnym.


skorzystaj również z tej metody, łatwy dostęp do plików i folderów
— bobbyrne01

Ta metoda jest najwolniejsza w porównaniu z innymi i nie zawsze działa (błędy związane z squirksami nazw plików).
— alexanderadam

3

Alternatywnie możesz zamontować go jako ścieżkę dostępną jako część własnego systemu plików.

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

Uwaga: /your/local/mount/pointmusi to być istniejący katalog, aby to działało.

O ile wiem, wystarczy uruchomić następujące polecenie, aby polecenie zadziałało: sudo apt-get install davfs2(Jeśli wymagana jest większa konfiguracja, przepraszam, dawno temu to zrobiłem).

(Dodałem to jako odpowiedź, ponieważ uważam, że odpowiedź Liama ​​nie podała wystarczających informacji).


stosując sudopobrać plik naprawdę nie brzmi dobrze.
— Equidamoid

1
@Equidamoid Montowanie systemów plików wymaga dostępu do konta root, ponieważ może w niektórych przypadkach ominąć lokalne uprawnienia UNIX.
— Radon Rosborough,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.