Ich bin mit einer ziemlich einfachen Situation konfrontiert. Ich muss so wie sie ist einen großen Baum von Dateien auf einen WebDAV- Server hochladen, der über HTTPS erreichbar ist. Ich muss den Upload von einer Linux-Box nur mit Befehlszeile starten. Ich kann Programme auf der Box installieren.
Ich habe Cadaver ausprobiert, aber es unterstützt kein rekursives Hochladen von Verzeichnissen.
Kennen Sie einfache Tools / Skripte, um dies zu erreichen?
Ok, ich habe etwas gefunden, das es getan hat.
Ich habe mit dem davpush.pl
Skript begonnen, das hier zu finden ist: https://github.com/ptillemans/davpush
Einige Änderungen waren erforderlich:
- Ersetzen Sie alle "
dav://
" bis "https://
" - füge "
print POUT "open";
" vor "print POUT $script;
" hinzu
Verdammt, ich muss ein Perl-Skript hacken, um einfach ein Verzeichnis hochzuladen, das unhöflich ist. Ich suche immer noch nach einfachen Tools / Skripten.
quelle
Hier ist ein schnell gehacktes Shell-Skript, das die Verwendung von Cadaver ermöglicht :
Wenn es benannt ist,
davcpy.sh
dann ein Befehl wieermöglicht eine rekursive Kopie von
in eine entfernte mit dem Namen
Beachten Sie, dass die Skriptfunktion von verwendet wird,
cadaver
um weiterhin die interaktive Eingabe von Login / Passwörtern zu ermöglichen. Ich denke, es ist auch robust genug, um seltsame Datei- und Verzeichnisnamen mit Leerzeichen zu verarbeiten, aber ich habe keinen solchen Fall getestet.quelle
Eine Lösung könnte Rclone sein . Dies ist ein Einweg-Befehlszeilen-Synchronisierungsprogramm, ähnlich wie rsync, das (unter anderem) WebDAV unterstützt. Es kann rekursiv ein Verzeichnis kopieren und Dateien überspringen, die auf dem Ziel vorhanden sind. Es gibt einige Befehlszeilenoptionen zur Steuerung des Synchronisierungsverhaltens, z. B. ob Zieldateien gelöscht werden sollen, wenn sie aus der Quelle entfernt werden. Es gibt Pakete für viele Distributionen, aber Sie können auch die einfache Binärdatei installieren und ausführen. Beim ersten Mal müssen Sie eine "Fernbedienung" definieren:
Danach können Sie Dateien und Verzeichnisse kopieren oder synchronisieren:
quelle
Eine Modifikation der Antwort von nberth, die unter OSX funktioniert:
Die Verwendung ist die gleiche. Zitat aus nberths Antwort:
quelle
Ich bin auf Ubuntu Linux. Mit Hilfe von fuse (Dateisystem im Userspace) und mountdavfs (davfs2) können Sie ein Unterverzeichnis auf dem Webdav-Server als lokalen Ordner bereitstellen.
Öffnen Sie Ihr Terminal und gehen Sie wie folgt vor:
Installieren Sie davfs2, falls es noch nicht vorhanden ist:
sudo apt-get install davfs2
Stellen Sie eine Verbindung zum Webdav-Server her:
sudo mount.davfs -o user=knb,rw https://webdav.site.de/data /mnt/somedir
(Besitzer des Dateisystems muss eingegeben werden, sonst sind keine Schreibrechte vorhanden)
Zusätzlich musste ich diese Zeilen eingeben in
/etc/dafs2/davfs2.conf
:Siehe https://bugs.launchpad.net/ubuntu/+source/davfs2/+bug/466960
mount
- Befehl - Ergebnis (Letzte Ausgabezeile):https://webdav.mysite.de/icdp on /media/somedir type fuse (rw,nosuid,nodev,relatime,user_id=1000,group_id=0,allow_other,max_read=16384,uid=1000,gid=0,helper=davfs)
Überprüfen Sie auch, ob es eine seltsame Datei gibt
~/.davfs2/secrets
- möglicherweise erforderlich für permanente Bereitstellungen, die Neustarts überleben.Jetzt können Sie Befehle wie ausgeben
cp -vr /data/myphotos /media/somedir
und die Dateien werden rekursiv kopiert und auf die Webdav-Site hochgeladen.quelle