Як мені рекурсивно копіювати / завантажувати весь каталог webdav?


9

Коли я намагаюся скопіювати папку з сервера webdav на локальний диск за допомогою Nautilus, він копіює, які додатки мають бути маніфестними файлами (xml із переліком каталогу тощо). З трупом я отримую порожній файл.

Я хотів би мати можливість рекурсивно копіювати ціле дерево каталогів. Хтось знає, як я можу це зробити?

ps: Я використовую Ubuntu 11.04 з Nautilus 2.32.2.1 та Cadaver 0.23.3


Вам потрібен інструмент з графічним інтерфейсом або wget "досить хороший" для вас?
Ocaso Protal

Я зазирнув до wget, і він не вимагав робити webdav ... Це спрацювало б для мене, якби
drevicko

2
Спробуйте це: wget --user = {ім'я користувача} --password = {пароль} - почекайте = 20 --limit-rate = 20K -r -p -U Mozilla http: // {website} Якщо це працює, я додам його як відповідь;)
Рінцвінд

1
Але webdav - це просто https, тому wget повинен працювати. швидкий пошук Google дав мені astron.nl/northstar/nswiki/lib/exe/…, щоб отримати швидкий огляд wget з webdav
Ocaso Protal

1
Цікаво .. коли я вказую його на каталог / колекцію webdav, він захоплює файл html для цього каталогу (тобто: зі списком речей там як веб-сторінка), тоді скаржиться: "localhost / webdav / caliber-library: Не каталогlocalhost /webdav/calibre-library/index.html: Не каталог ". Коли я вказую це на корінь webdav, його досить випадковий ... закінчується, починаючи завантажувати веб-сервер whold. Зауважте, що він є лише https та підписався самостійно, тому мені довелося додати "--no-check-сертифікат"
drevicko

Відповіді:


3

Ця відповідь підсумовує пропозиції, подані в коментарях @Ocaso та @Rinzwind.

Я використав це:

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

Не ідеально (завантажено багато 'index.html? C = M; O = D' тощо), але в іншому випадку працювало нормально.

"-R" завантажується рекурсивно, переходячи за посиланнями.

"-Np" запобігає переходу на батьківські каталоги (інакше ви завантажуєте весь веб-сайт!).

"-NH" запобігає створенню каталогу під назвою "мій хост" (який я не хотів).

"--Cut-dirs = 1" запобігає створенню каталогу під назвою "my-webdav-dir".

"--No-check-сертифікат" - це тому, що я використовую самопідписаний сертифікат на сервері webdav (я також примушую https).

"-U Mozilla" встановлює агент користувача в http-запиті на "Mozilla" - моєму серверу webdav цього насправді не потрібно, але я все одно включив його.


Використовуючи цю функцію, щоб завантажити файл з nextcloud це завантажити файл з вмістом: This is the WebDAV interface. It can only be accessed by WebDAV clients such as the Nextcloud desktop sync client.. Будь-яка ідея, чому це відбувається?
Мікромегаз

Я думаю, що nextcloud очікує, що користувальницький агент схожий на клієнт WebDAV (на відміну від Mozilla, який є браузером). Якщо у вас є клієнт і сніффер пакетів (наприклад: wireshark), ви можете дізнатися, який користувальницький агент він використовує у своїх запитах.
drevicko

Крім того, з’ясуйте, що його користувачем може бути "Mozilla / 5.0 (Android) Nextcloud-android / 3.8.0" з Інтернету .
drevicko

Дякую вам дуже drevicko !! Я зроблю це
Мікромегас

Також тут . Удачі!
drevicko

3

Насправді за допомогою Cadaver ви можете додати cdкаталог, з якого ви хочете завантажити файли та mget *.


2
Щоб це було корисною відповіддю, потрібно сказати користувачеві, як це зробити.
RolandiXor

1
Hm, mget * .у папці чи mget foldernameрезультатах у 501 Not Implemented. Це справді працювало для вас на box.com?
alexanderadam

@Wurstsalat Ви не повинні ставити зайві "." ; також він приймає назви файлів як аргументи, тому вам потрібно буде зробити `mget ім'я папки / ім'я файлу '.
JasoonS

Це не працює для мене, коли є підкаталоги ( рекурсивна частина).
Радон Росборо

3

Ви можете використовувати dav2fs для монтажу сервера webdav, а потім можете отримати доступ до нього так само, як і до локального каталогу.


також використовуйте цей метод, легкий доступ до файлів і папок
bobbyrne01

І цей метод найбільш повільний порівняно з іншими і не завжди працює (помилки, пов’язані з ім'ям файлів-вивірки).
alexanderadam

3

Крім того, ви можете встановити його як шлях, доступ до якого є частиною вашої власної файлової системи.

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

Примітка: для цього /your/local/mount/pointмає бути справжній існуючий каталог.

Наскільки я знаю, вам потрібно виконати наступне, щоб команда працювала: sudo apt-get install davfs2(Якщо потрібна додаткова конфігурація, я вибачаюся, я давно це зробив.)

(Я додав це як відповідь, тому що вважаю, що відповідь Ліама не дала достатньо інформації.)


використання sudoдля завантаження файлу насправді не звучить правильно.
Еквідамоїд

1
@Equidamoid Монтаж файлових систем потребує кореневого доступу, оскільки він може дозволяти вам обходити локальні дозволи UNIX у деяких випадках.
Радон Росборо
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.