Tüm bir webdav dizinini özyinelemeli olarak nasıl kopyalarım / indiririm?


9

Bir klasörü bir webdav sunucusundan Nautilus kullanarak yerel bir diske kopyalamaya çalıştığımda, hangi dosyaların manifest dosyası (dizin listesi vb. İle xml) olacağını kopyalar. Kadavra ile boş bir dosya alıyorum.

Tüm dizin ağacını özyinelemeli olarak kopyalamak istiyorum. Bunu nasıl yapabileceğimi bilen var mı?

ps: Nautilus 2.32.2.1 ve Cadaver 0.23.3 ile Ubuntu 11.04 kullanıyorum


GUI'ye sahip bir araca mı ihtiyacınız var veya sizin için "yeterince iyi" mi?
Ocaso Protal

Wget bir göz vardı ve webdav yapmak iddia etmedi ...
Olsaydı

2
Bunu deneyin: wget --user = {username} --password = {password} --wait = 20 --limit-rate = 20K -r -p -U Mozilla http: // {website} Çalışırsa Ekleyeceğim cevap olarak;)
Rinzwind

1
Ama webdav sadece düz https, bu yüzden wget çalışması gerekir. hızlı bir google araması, webdav ile wget üzerinden hızlı bir genel bakış elde etmek için astron.nl/northstar/nswiki/lib/exe/… ' i verdi
Ocaso Protal

1
ilginç .. Ben bir webdav dizini / koleksiyon işaret zaman, o dizin için html dosyasını kapar (yani: bir web sayfası olarak şeylerin listesi ile) sonra şikayet eder: "localhost / webdav / calibre-kütüphane: Bir directorylocalhost değil /webdav/calibre-library/index.html: Dizin değil ". Ne zaman webdav kök işaret, onun oldukça rastgele ... whold web sunucusu indirmeye başlar sona erer .. Sadece https ve kendinden imzalı olduğunu, bu yüzden '--no-check-certificate' eklemek zorunda kaldı
drevicko

Yanıtlar:


3

Bu cevap @Ocaso ve @Rinzwind tarafından yapılan yorumlarda verilen önerileri özetlemektedir.

Bunu kullandım:

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

Mükemmel değil (indirilen çok sayıda 'index.html? C = M; O = D' ve benzeri) ancak başka şekilde çalıştı.

"-R" bağlantıları izleyerek yinelemeli olarak indirilir.

"-Np" üst dizinlere yükselmeyi önler (aksi takdirde tüm web sitesini indirirsiniz!).

"-NH", "ana bilgisayarım" adlı bir dizin oluşturulmasını önler (istemediğim).

"--Cut-dirs = 1", "my-webdav-dir" adlı bir dizin oluşturulmasını önler.

"--No-check-certificate" çünkü webdav sunucusunda kendinden imzalı bir sertifika kullanıyorum (ben de https zorluyorum).

"-U Mozilla", http isteğindeki kullanıcı aracısını "Mozilla" olarak ayarlar - webdav sunucumun buna gerçekten ihtiyacı yoktu, ama yine de ekledim.


Bu kullanma gelen bir dosya indirmek için nextcloud bu içeriğe sahip bir dosyayı indirmek vermez: This is the WebDAV interface. It can only be accessed by WebDAV clients such as the Nextcloud desktop sync client.. Bunun neden olduğu hakkında bir fikrin var mı?
Micromegas

Benim tahminim nextcloud, bir WebDAV istemcisine benzeyen bir kullanıcı aracısı beklemektedir (tarayıcı olan Mozilla'nın aksine). İstemciniz ve bir paket dinleyicisi varsa (örneğin: wireshark), isteklerinde hangi kullanıcı aracısını kullandığını bulabilirsiniz.
drevicko

Alternatif 's kullanıcı aracısı gelen "Mozilla / 5.0 (Android) Nextcloud-android / 3.8.0" olabileceğini öğrenmek web .
drevicko

Çok teşekkür ederim drevicko !! Bunu yapacağım
Micromegas

Ayrıca burada . İyi şanslar!
drevicko

3

Aslında Cadaver ile cddosyaları indirmek istediğiniz dizine ve mget *.


2
Bunun yararlı bir cevap olabilmesi için kullanıcıya bunu nasıl yapacağını söylemeniz gerekir.
RolandiXor

1
Hm, mget * .bir klasörde mget foldernamesonuçlanır 501 Not Implemented. Box.com'da gerçekten işe yaradı mı?
alexanderadam

@Wurstsalat Ekstra 'koymamalısınız'. ; ayrıca dosya adlarını bağımsız değişken olarak alır, bu nedenle `mget katadı / dosyaadı 'yapmanız gerekir.
JasoonS

Alt dizinler ( özyinelemeli bölüm) olduğunda bu benim için çalışmaz .
Radon Rosborough

3

Webdav sunucusunu bağlamak için dav2fs'yi kullanabilir ve ardından yerel bir dizinde yaptığınız gibi erişebilirsiniz.


ayrıca bu yöntemi, dosyalara ve klasörlere kolay erişim kullanın
bobbyrne01

Ve bu yöntem diğerlerine kıyasla en yavaş olanıdır ve her zaman işe yaramaz (dosya adı-squirks ile ilgili hatalar).
alexanderadam

3

Alternatif olarak, bunu kendi dosya sisteminizin bir parçası olarak erişilecek bir yol olarak da bağlayabilirsiniz.

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

Not: Bunun /your/local/mount/pointçalışması için gerçek bir dizin olması gerekir.

Bildiğim kadarıyla, komutun çalışması için aşağıdakileri çalıştırmanız yeterlidir: sudo apt-get install davfs2(Daha fazla yapılandırma gerekiyorsa özür dilerim, bunu uzun zaman önce yaptım.)

(Bunu cevap olarak ekledim çünkü Liam'ın cevabının yeterli bilgi vermediğini hissediyorum.)


sudobir dosyayı indirmek için kullanmak doğru gelmiyor.
Equidamoid

1
@Equidamoid Dosya sistemlerini bağlamak, bazı durumlarda yerel UNIX izinlerini atlamanıza izin verebileceğinden kök erişimi gerektirir.
Radon Rosborough
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.