Wie kopiere / lade ich rekursiv ein ganzes Webdav-Verzeichnis herunter?

9

Wenn ich versuche, einen Ordner mit Nautilus von einem Webdav-Server auf eine lokale Festplatte zu kopieren, wird eine Manifestdatei (XML mit der Verzeichnisliste usw.) kopiert. Mit Kadaver bekomme ich eine leere Datei.

Ich möchte in der Lage sein, einen ganzen Verzeichnisbaum rekursiv zu kopieren. Weiß jemand, wie ich das machen kann?

ps: Ich benutze Ubuntu 11.04 mit Nautilus 2.32.2.1 und Cadaver 0.23.3

drevicko
quelle
Benötigen Sie ein Tool mit einer GUI oder ist wget "gut genug" für Sie?
Ocaso Protal
Ich hatte einen Blick auf wget, und es behauptete nicht, Webdav zu tun ... Es würde für mich funktionieren, wenn es
drevicko
2
Versuchen Sie Folgendes: wget --user = {Benutzername} --password = {Passwort} --wait = 20 --limit-rate = 20K -r -p -U Mozilla http: // {website} Wenn es funktioniert, füge es hinzu als Antwort;)
Rinzwind
1
Aber webdav ist einfach nur https, also sollte wget funktionieren. Eine schnelle Google-Suche gab mir astron.nl/northstar/nswiki/lib/exe/… , um einen schnellen Überblick über wget mit webdav zu bekommen
Ocaso Protal
1
interessant .. wenn ich es auf ein Webdav-Verzeichnis / eine Webdav-Sammlung zeige, greift es auf die HTML-Datei für dieses Verzeichnis zu (dh: mit der Liste der Dinge dort als Webseite) und beschwert sich dann: "localhost / webdav / calibre-library: Kein Directorylocalhost /webdav/calibre-library/index.html: Kein Verzeichnis ". Wenn ich es auf das Webdav-Stammverzeichnis zeige, ist es ziemlich zufällig ... und beginnt damit, den Whold-Webserver herunterzuladen. Beachten Sie, dass es nur https und selbstsigniert ist, also musste ich '--no-check-certificate' hinzufügen
Drevicko

Antworten:

3

Diese Antwort fasst Vorschläge zusammen, die in Kommentaren von @Ocaso und @Rinzwind gegeben wurden.

Ich habe das benutzt:

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

Nicht perfekt (viele 'index.html? C = M; O = D' und dergleichen heruntergeladen), aber ansonsten funktionierte es einwandfrei.

Das "-r" wird rekursiv über folgende Links heruntergeladen.

Das "-np" verhindert den Aufstieg in übergeordnete Verzeichnisse (sonst laden Sie die gesamte Website herunter!).

Das "-nH" verhindert das Erstellen eines Verzeichnisses mit dem Namen "my-host" (was ich nicht wollte).

Das "--cut-dirs = 1" verhindert das Erstellen eines Verzeichnisses mit dem Namen "my-webdav-dir".

Das "--no-check-Zertifikat" ist, weil ich ein selbstsigniertes Zertifikat auf dem Webdav-Server verwende (ich erzwinge auch https).

Das "-U Mozilla" setzt den Benutzeragenten in der http-Anfrage auf "Mozilla" - mein Webdav-Server brauchte dies eigentlich nicht, aber ich habe es trotzdem aufgenommen.

drevicko
quelle
3

Eigentlich können Sie mit Cadaver cdin ein Verzeichnis, aus dem Sie Dateien herunterladen möchten und mget *.

viktor denischik
quelle
2
Damit dies eine nützliche Antwort ist, müssen Sie dem Benutzer mitteilen, wie dies zu tun ist.
RolandiXor
1
Hm, mget * .in einem Ordner oder mget foldernameführt zu 501 Not Implemented. Hat es bei box.com wirklich für Sie funktioniert?
Alexanderadam
@Wurstsalat Du darfst das zusätzliche '.' ;; Außerdem werden Dateinamen als Argumente verwendet, sodass Sie "mget foldername / filename" ausführen müssen.
JasoonS
Das funktioniert bei mir nicht, wenn es Unterverzeichnisse gibt (der rekursive Teil).
Radon Rosborough
3

Sie können dav2fs verwenden, um den Webdav-Server bereitzustellen, und dann können Sie wie in einem lokalen Verzeichnis darauf zugreifen.

Liam
quelle
Verwenden Sie auch diese Methode, einfachen Zugriff auf Dateien und Ordner
bobbyrne01
Und diese Methode ist im Vergleich zu anderen die langsamste und funktioniert nicht immer (Fehler im Zusammenhang mit Dateinamen-Squirks).
Alexanderadam
3

Alternativ können Sie es als Pfad bereitstellen, auf den Sie als Teil Ihres eigenen Dateisystems zugreifen können.

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

Hinweis: Damit /your/local/mount/pointdies funktioniert, muss es sich um ein real vorhandenes Verzeichnis handeln.

Soweit ich weiß, müssen Sie nur Folgendes ausführen, damit der Befehl funktioniert: sudo apt-get install davfs2(Wenn weitere Konfiguration erforderlich ist, entschuldige ich mich, dass ich dies vor langer Zeit getan habe.)

(Ich habe dies als Antwort hinzugefügt, weil ich der Meinung bin, dass Liams Antwort nicht genügend Informationen enthält.)

JasoonS
quelle
Das sudoHerunterladen einer Datei klingt nicht wirklich richtig.
Equidamoid
@Equidamoid Für das Mounten von Dateisystemen ist Root-Zugriff erforderlich, da Sie in einigen Fällen lokale UNIX-Berechtigungen umgehen können.
Radon Rosborough