Làm cách nào để tôi sao chép / tải xuống toàn bộ thư mục webdav?


9

Khi tôi cố sao chép một thư mục từ máy chủ webdav sang đĩa cục bộ bằng Nautilus, nó sẽ sao chép những gì thích hợp thành một tệp kê khai (xml với danh sách thư mục, v.v.). Với cadaver tôi nhận được một tập tin trống.

Tôi muốn có thể sao chép đệ quy toàn bộ cây thư mục. Có ai biết làm thế nào tôi có thể làm điều này?

ps: Tôi đang sử dụng Ubuntu 11.04 với Nautilus 2.32.2.1 và Cadaver 0.23.3


Bạn có cần một công cụ với GUI hoặc là "đủ tốt" cho bạn không?
Ocaso

Tôi đã có một cái nhìn tại wget, và nó đã không yêu cầu làm webdav ... Nó sẽ hoạt động với tôi nếu nó đã làm
drevicko

2
Hãy thử điều này: wget --user = {username} --password = {password} --wait = 20 --limit-Rate = 20K -r -p -U Mozilla http: // {website} Nếu nó hoạt động, hãy thêm nó như một câu trả lời;)
Rinzwind

1
Nhưng webdav chỉ là https đơn giản, vì vậy wget nên hoạt động. tìm kiếm google nhanh chóng đã cho tôi astron.nl/northstar/nswiki/lib/exe/... để có được một cách nhanh chóng tổng quan về wget với WebDAV
Ocaso Protal

1
thật thú vị .. khi tôi trỏ nó vào một thư mục / bộ sưu tập webdav, nó lấy tệp html cho thư mục đó (tức là: với danh sách những thứ ở đó như một trang web) sau đó phàn nàn: "localhost / webdav / caliber-library: Không phải là directorylocalhost /webdav/calibre-l Library / index.html: Không phải là một thư mục ". Khi tôi trỏ nó vào root webdav, nó khá ngẫu nhiên ... cuối cùng bắt đầu tải xuống máy chủ web whold .. Lưu ý rằng đó chỉ là https và tự ký, vì vậy tôi phải thêm '--no-check-cert'
drevicko

Câu trả lời:


3

Câu trả lời này tóm tắt các đề xuất được đưa ra trong các nhận xét của @Ocaso và @Rinzwind.

Tôi đã sử dụng điều này:

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

Không hoàn hảo (đã tải xuống rất nhiều 'index.html? C = M; O = D' và tương tự) nhưng nếu không thì vẫn hoạt động tốt.

Tải xuống "-r" theo cách đệ quy, theo các liên kết.

"-Np" ngăn tăng dần đến thư mục mẹ (nếu không bạn tải xuống toàn bộ trang web!).

"-NH" ngăn tạo thư mục có tên "my-host" (mà tôi không muốn).

"--Cut-dirs = 1" ngăn tạo thư mục có tên "my-webdav-dir".

"--No-check-cert" là do tôi đang sử dụng chứng chỉ tự ký trên máy chủ webdav (tôi cũng đang buộc https).

"-U Mozilla" đặt tác nhân người dùng trong yêu cầu http thành "Mozilla" - máy chủ webdav của tôi không thực sự cần điều này, nhưng dù sao tôi cũng đã bao gồm nó.


Sử dụng điều này để tải xuống một tệp từ nextcloud, nó sẽ tải xuống một tệp có nội dung : This is the WebDAV interface. It can only be accessed by WebDAV clients such as the Nextcloud desktop sync client.. Bất cứ ý tưởng tại sao điều đó xảy ra?
Micromas

Tôi đoán là nextcloud mong đợi một tác nhân người dùng trông giống như máy khách WebDAV (trái ngược với Mozilla, đó là một trình duyệt). Nếu bạn có ứng dụng khách của họ và trình thám thính gói (ví dụ: wireshark), bạn có thể tìm ra tác nhân người dùng nào sử dụng trong các yêu cầu của nó.
drevicko

Ngoài ra, hãy tìm hiểu rằng tác nhân người dùng của nó có thể là "Mozilla / 5.0 (Android) Nextcloud-android / 3.8.0" từ web .
drevicko

Cảm ơn bạn rất nhiều drevicko !! Tôi sẽ làm điều này
Micromegas

Cũng ở đây . Chúc may mắn!
drevicko

3

Trên thực tế với Cadaver, bạn có thể cdvào thư mục mà bạn muốn tải xuống các tệp và mget *.


2
Để đây là một câu trả lời hữu ích, bạn cần nói cho người dùng biết cách thực hiện.
RolandiXor

1
Hừm, mget * .trong một thư mục hoặc mget foldernamekết quả 501 Not Implemented. Nó thực sự làm việc cho bạn trên box.com?
alexanderadam

@Wurstsalat Bạn không được đặt thêm '.' ; ngoài ra, nó lấy tên tệp làm đối số, vì vậy bạn sẽ cần phải thực hiện 'mget Foldername / filename'.
JasoonS

Điều đó không hiệu quả với tôi khi có các thư mục con (phần đệ quy ).
Radon Rosborough

3

Bạn có thể sử dụng dav2fs để gắn máy chủ webdav, và sau đó bạn có thể truy cập nó như một thư mục cục bộ.


cũng sử dụng phương pháp này, dễ dàng truy cập vào các tập tin và thư mục
bulkrne01

Và phương pháp này chậm nhất so với các phương pháp khác và sẽ không luôn hoạt động (các lỗi liên quan đến sóc tên tệp).
alexanderadam

3

Ngoài ra, bạn có thể gắn kết nó như một đường dẫn để được truy cập như một phần của hệ thống tệp của riêng bạn.

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

Lưu ý: /your/local/mount/pointphải là một thư mục thực sự hiện có để làm việc này.

Theo như tôi biết, bạn chỉ cần chạy các thao tác sau để lệnh hoạt động: sudo apt-get install davfs2(Nếu cần thêm cấu hình, tôi xin lỗi, đã lâu rồi tôi mới làm điều này.)

(Tôi đã thêm câu này dưới dạng câu trả lời vì tôi cảm thấy câu trả lời của Liam không cung cấp đủ thông tin.)


sử dụng sudođể tải xuống một tập tin không thực sự đúng.
Equidamoid

1
@Equidamoid Gắn hệ thống tập tin yêu cầu quyền truy cập root vì nó có thể cho phép bạn bỏ qua các quyền UNIX cục bộ trong một số trường hợp.
Radon Rosborough
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.