Mam do czynienia z dość prostą sytuacją, muszę wgrać duże drzewo plików na serwer WebDAV , które jest osiągalne przez HTTPS. Muszę rozpocząć przesyłanie tylko od pola linux z wierszem poleceń. Mogę instalować programy na pudełku.
Próbowałem Cadaver, ale nie obsługuje rekurencyjnego przesyłania katalogu.
Czy znasz proste narzędzia / skrypty do osiągnięcia tego?
Ok, znalazłem coś, co to zrobiło.
Zacząłem od davpush.pl
skryptu, który można znaleźć tutaj https://github.com/ptillemans/davpush
Potrzebne były pewne zmiany:
- zamień wszystkie „
dav://
” na „https://
” - dodaj „
print POUT "open";
” przed „print POUT $script;
”
Cholera, trzeba zhakować skrypt Perla, aby po prostu załadować niegrzeczny katalog. Wciąż szukam prostych narzędzi / skryptów.
źródło
Oto szybko zhakowany skrypt powłoki, który pozwala to zrobić za pomocą zwłok :
Jeśli jest nazwany,
davcpy.sh
to polecenie takie jakzezwala na kopię rekurencyjną z
w zdalny o nazwie
Zauważ, że używa funkcji skryptowej,
cadaver
aby nadal zezwalać na interaktywne wpisywanie loginu / hasła. Wydaje mi się, że jest wystarczająco solidny, aby obsługiwać dziwne nazwy plików i katalogów zawierające spacje, ale nie testowałem takich przypadków.źródło
Rozwiązaniem może być Rclone . Jest to jednokierunkowy program do synchronizacji wiersza poleceń, podobny do rsync, który obsługuje WebDAV (między innymi). Może rekurencyjnie kopiować katalog, pomijając pliki istniejące w miejscu docelowym. Posiada pewne opcje wiersza poleceń do kontrolowania zachowania synchronizacji, na przykład, czy chcesz usunąć pliki docelowe, jeśli znikną one ze źródła. Dostępne są pakiety dla wielu dystrybucji, ale możesz także zainstalować i uruchomić zwykły plik binarny. Za pierwszym razem musisz zdefiniować „zdalnego”:
Następnie możesz skopiować lub zsynchronizować pliki i katalogi:
źródło
Modyfikacja odpowiedzi Nberth, która działa na OSX:
Użycie jest takie samo. Cytując odpowiedź Nbertha:
źródło
Jestem na Ubuntu Linux. Za pomocą bezpiecznika (System plików w przestrzeni użytkownika) i mountdavfs (davfs2) możesz zamontować podkatalog na serwerze Webdav jako folder lokalny.
Otwórz terminal i postępuj w następujący sposób:
Zainstaluj davfs2, jeśli jeszcze nie istnieje:
sudo apt-get install davfs2
Połącz się z serwerem Webdav:
sudo mount.davfs -o user=knb,rw https://webdav.site.de/data /mnt/somedir
(Należy wprowadzić właściciela systemu plików, w przeciwnym razie nie będą istnieć żadne prawa zapisu)
Dodatkowo musiałem wpisać te linie w
/etc/dafs2/davfs2.conf
:Zobacz https://bugs.launchpad.net/ubuntu/+source/davfs2/+bug/466960
mount
- Polecenie - Wynik (ostatni wiersz wyniku):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)
Sprawdź także, czy jest jakiś dziwny plik
~/.davfs2/secrets
- może być konieczny, aby zamontować stałe, które przetrwają ponowne uruchomienie.Teraz możesz wydawać polecenia takie jak,
cp -vr /data/myphotos /media/somedir
a pliki zostaną skopiowane rekurencyjnie i przesłane na stronę webdav.źródło