Dieser Artikel soll einen kleinen Überblick über den WebDAV-Kommandozeilen-Client dav geben.
Features
Alle WebDAV-Methoden des Basisprotokolls sind implementiert und es stehen Subcommands dafür bereit, wobei diese die WebDAV-Methoden mehr oder weniger abstrahieren.
Im Detail unterstützt dav:
- Auflisten aller Kind-Ressourcen einer Collection. Sowohl nur die direkten als auch der komplette Baum aller darunter liegender Ressourcen können angezeigt werden.
- Download/Upload von einzelnen Dateien und Verzeichnissen
- Erstellen von WebDAV-Collections
- Löschen von Ressourcen und Collections
- Kopieren und Verschieben von Ressourcen
- Lese- und Schreibzugriff auf WebDAV-Properties
- Locking (exclusive lock)
- Proxy-Support
- AES-Verschlüsselung um Dateien und Dateinamen on-the-fly zu ver- und entschlüsseln
- Konfigurationsdatei für Repositories, Proxies und Verschlüsselung
URL
Alle Befehle von dav erwarten als Argument eine URL. Die URL kann eine normale http/https-URL sein, man kann aber auch nur den Hostnamen und Pfad angeben. Da dav intern libcurl verwendet, können wie bei curl auch der Benutzername und das Passwort mit der URL angegeben werden.
Um den Inhalt von http://example.com/webdav/ anzuzeigen geht also:
dav list http://example.com/webdav/
dav list example.com/webdav/
dav list user@example.com/webdav/
dav list user:pw@example.com/webdav/
Es ist jedoch auch möglich, Repositories für seine Lieblingsserver zu konfigurieren. In der dav Konfigurationsdatei muss für den Server der Repository-Name und die Basis-URL konfiguriert sein. Statt der ganzen URL reicht es dann nur den Repositorynamen und optional noch einen Pfad anzugeben.
Für unseren Beispielserver könnte die Konfigurationsdatei $HOME/.dav/config.xml
dann so aussehen:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<repository>
<name>myserver</name>
<url>http://example.com/webdav/</url>
<!-- optional: username -->
<user>user</user>
<!-- optional: base64 encoded password -->
<password>MTIzNDU2Nzg=</password>
</repository>
</configuration>
Den Inhalt der Basis-URL anzuzeigen geht dann mit:
dav list myserver
Auf beliebige Ressourcen unterhalb der Basis-URL kann man zugreifen, in dem man an den Repositorynamen einen Pfad anhängt:
dav list myserver/collection/
Dies würde dann den Inhalt von http://example.com/webdav/collection/ anzeigen.
Anstatt das Repository per Hand in der config.xml Datei zu konfigurieren kann man auch den dav Befehl add-repository verwenden. Dieser startet einen kleinen Assistenten der den Namen des Repositories, die Basis-URL, den Benutzername und das Passwort abfragt und die Konfiguration dafür dann anlegt.
Befehle
list
Den list Befehl haben wir schon gesehen. Dieser zeigt alle Kind-Ressourcen (Dateien) einer Collection (Verzeichnis) an. Dieser funktioniert ähnlich wie das Unix-Tool ls (statt dav list
kann man auch dav ls
schreiben). Ohne Optionen werden nur die Namen der Member angezeigt:
$ dav list myserver
collection
file1
file2
file3
Wie bei ls gibt es auch die -l
Option, mit der zusätzliche Informationen pro Ressource angezeigt werden:
$ dav list -l myserver
d- Feb 08 13:13 collection
-- 4.2 KiB Oct 11 2016 file1
-- 95 bytes Oct 11 2015 file2
-- 5.7 MiB May 24 21:13 file3
Das kleine d in der ersten Spalte zeigt an, dass die Ressource eine Collection ist.
get
Mit get können einzelne Ressourcen oder ganze Collections gedownloadet werden.
Eine einzelne Ressource downloaden geht mit:
dav get myserver/file1
Um eine Collection zu downloaden muss man die -R Option angeben. Es werden dabei die Member der Collection direkt in das aktuelle Arbeitsverzeichnis gedownloadet.
dav get -R myserver/collection
put
Mit put können Dateien und Verzeichnisse geuploadet werden. Das erste Argument ist die Ziel-URL, das zweite die zu uploadende Datei.
Ist das Ziel eine Collection wird dort eine neue Ressource mit dem Namen der Datei erstellt:
dav put myserver localfile.txt
Man kann beim Uploaden auch den Namen der Ziel-Ressource angeben:
dav put myserver/newfilename.txt localfile.txt
Auch alle Dateien eines lokalen Verzeichnisses können geuploadet werden:
dav put -R myserver/newdir/ localdir
andere Befehle
Mit mkdir können WebDAV-Collections erstellt werden:
dav mkdir myserver/newcol/
Ressourcen und Collections können mit remove entfernt werden:
dav remove myserver/file1
Eine komplette Übersicht über alle Befehle gibt es hier.
Kommentare