Bagaimana cara menyalin / mengunduh secara keseluruhan direktori webdav secara rekursif?

9

Ketika saya mencoba untuk menyalin folder dari server webdav ke disk lokal menggunakan Nautilus, itu menyalin apa yang dianggap sebagai file manifes (xml dengan daftar direktori dll.). Dengan mayat saya mendapatkan file kosong.

Saya ingin dapat menyalin pohon direktori secara rekursif secara rekursif. Adakah yang tahu bagaimana saya bisa melakukan ini?

ps: Saya menggunakan Ubuntu 11.04 dengan Nautilus 2.32.2.1 dan Cadaver 0.23.3

drevicko
sumber
Apakah Anda memerlukan alat dengan GUI atau apakah "cukup baik" untuk Anda?
Ocaso Protal
Saya sempat mengintip wget, dan tidak mengklaim melakukan webdav ... Ini akan berhasil bagi saya jika benar
drevicko
2
Coba ini: wget --user = {username} --password = {password} --wait = 20 --limit-rate = 20K -r -p -U Mozilla http: // {situs web} Jika berfungsi, saya tambahkan sebagai jawaban;)
Rinzwind
1
Tapi webdav hanya https biasa, jadi wget harus bekerja. pencarian google cepat memberi saya astron.nl/northstar/nswiki/lib/exe/... untuk mendapatkan gambaran singkat tentang wget dengan webdav
Ocaso Protal
1
menarik .. ketika saya arahkan ke direktori / koleksi webdav, itu mengambil file html untuk direktori itu (yaitu: dengan daftar hal-hal di sana sebagai halaman web) kemudian mengeluh: "localhost / webdav / kaliber-library: Bukan direktorilocalhost /webdav/calibre-library/index.html: Bukan direktori ". Ketika saya mengarahkannya ke root webdav, ini agak acak ... akhirnya mulai mengunduh server web whold .. Perhatikan bahwa itu hanya https dan ditandatangani sendiri, jadi saya harus menambahkan '--tidak periksa-sertifikat'
drevicko

Jawaban:

3

Jawaban ini merangkum saran yang diberikan dalam komentar oleh @Ocaso dan @Rinzwind.

Saya menggunakan ini:

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

Tidak sempurna (unduhan banyak 'index.html? C = M; O = D' dan sejenisnya) tetapi jika tidak berhasil ok.

Unduhan "-r" secara rekursif, mengikuti tautan.

"-Np" mencegah naik ke direktori induk (kalau tidak Anda mengunduh seluruh situs web!).

"-NH" mencegah pembuatan direktori yang disebut "my-host" (yang tidak saya inginkan).

"--Cut-dirs = 1" mencegah pembuatan direktori yang disebut "my-webdav-dir".

"--Tidak ada-periksa-sertifikat" adalah karena saya menggunakan sertifikat yang ditandatangani sendiri di server webdav (saya juga memaksa https).

"-U Mozilla" menetapkan agen pengguna dalam permintaan http ke "Mozilla" - server webdav saya sebenarnya tidak membutuhkan ini, tapi saya tetap memasukkannya.

drevicko
sumber
Menggunakan ini untuk men-download file dari nextcloud itu men-download file dengan konten: This is the WebDAV interface. It can only be accessed by WebDAV clients such as the Nextcloud desktop sync client.. Adakah yang tahu mengapa itu terjadi?
Micromegas
Dugaan saya adalah bahwa nextcloud mengharapkan agen pengguna yang terlihat seperti klien WebDAV (bukan Mozilla, yang merupakan browser). Jika Anda memiliki klien dan sniffer paket (misalnya: wireshark), Anda bisa mengetahui agen pengguna apa yang digunakannya dalam permintaan itu.
drevicko
Atau cari tahu bahwa agen pengguna itu bisa "Mozilla / 5.0 (Android) Nextcloud-android / 3.8.0" dari web .
drevicko
Terima kasih banyak, drevicko !! Saya akan melakukan ini
Micromegas
Juga disini . Semoga berhasil!
drevicko
3

Sebenarnya dengan Cadaver Anda dapat cdke direktori tempat Anda ingin mengunduh file dan mget *.

viktor denischik
sumber
2
Agar ini menjadi jawaban yang bermanfaat, Anda harus memberi tahu pengguna cara melakukan ini.
RolandiXor
1
Hm, mget * .dalam folder atau mget foldernamemenghasilkan 501 Not Implemented. Apakah itu benar-benar bekerja untuk Anda di box.com?
alexanderadam
@Wurstsalat Anda tidak harus memasukkan ekstra '.' ; juga dibutuhkan nama file sebagai argumen, jadi Anda harus melakukan `mget foldername / filename '.
JasoonS
Itu tidak berfungsi untuk saya ketika ada subdirektori (bagian rekursif ).
Radon Rosborough
3

Anda dapat menggunakan dav2fs untuk me-mount server webdav, dan kemudian Anda dapat mengaksesnya seperti yang Anda lakukan pada direktori lokal.

Liam
sumber
juga menggunakan metode ini, akses mudah ke file dan folder
bobbyrne01
Dan metode ini paling lambat dibandingkan dengan yang lain dan tidak akan selalu berfungsi (bug yang terkait dengan nama file-menyemprotkan).
alexanderadam
3

Atau Anda dapat memasangnya sebagai jalur untuk diakses sebagai bagian dari sistem file Anda sendiri.

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

Catatan: /your/local/mount/pointharus menjadi direktori nyata yang ada agar ini berfungsi.

Sejauh yang saya tahu Anda hanya perlu menjalankan yang berikut untuk mendapatkan perintah untuk bekerja: sudo apt-get install davfs2(Jika lebih banyak konfigurasi diperlukan saya minta maaf, sudah lama saya melakukan ini.)

(Saya menambahkan ini sebagai jawaban karena saya merasa jawaban Liam tidak memberikan cukup info.)

Jasoon
sumber
gunakan sudountuk mengunduh file tidak terdengar benar.
Equidamoid
1
@Equidamoid Mount sistem file memerlukan akses root karena ini dapat memungkinkan Anda untuk memotong izin UNIX lokal dalam beberapa kasus.
Radon Rosborough