透過 WebDAV 協定存取 Nextcloud 上的檔案

Nextcloud 完全支持 WebDAV 協議,您可以通過 WebDAV 連接和同步 Nextcloud 檔案。在本章中,您將學習如何將 Linux、macOS、Windows 和行動設備連接到您的 Nextcloud 伺服器。

WebDAV stands for Distributed Authoring and Versioning. It is an HTTP extension that makes it easy to create, read, and edit files hosted on remote Web servers. With a WebDAV client, you can access your Nextcloud Files (including shares) on Linux, macOS and Windows in a similar way as any remote network share, and stay synchronized.

在我們開始配置 WebDAV 之前,讓我們快速看一下將客戶端設備連接到 Nextcloud 的推薦方式。

官方 Nextcloud 桌面和行動客戶端

推薦將計算機與 Nextcloud 伺服器同步的方式是使用 官方 Nextcloud 同步客戶端。您可以配置客戶端將檔案保存在任何本地目錄中,並選擇要與之同步的 Nextcloud 伺服器上的目錄。客戶端顯示當前的連接狀態並記錄所有活動,因此您始終知道哪些遠程檔案已下載到您的 PC,並可以驗證在本地 PC 上創建和更新的檔案是否與伺服器正確同步。

推薦將 Android 和 Apple iOS 設備同步的方式是使用 官方 Nextcloud 行動應用程式

要將官方 Nextcloud 應用程式連接到 Nextcloud 伺服器,請使用您在網頁瀏覽器中訪問 Nextcloud 時使用的相同 URL,例如:

https://cloud.example.com

https://example.com/nextcloud (if Nextcloud is installed in a subdirectory called "nextcloud")

第三方 WebDAV 客戶端

如果您願意,您也可以使用任何支持 WebDAV 協議的第三方客戶端(包括可能內建於您的操作系統中的客戶端)將計算機連接到您的 Nextcloud 伺服器。

您還可以使用支持 WebDAV 的第三方應用程式將行動設備連接到 Nextcloud。

使用第三方客戶端時,請注意,它們可能未針對 Nextcloud 進行優化,或未實現您認為對您的使用案例重要的功能。

Nextcloud 社區成員報告使用的行動客戶端包括:

用於配置第三方應用程式以連接到 Nextcloud 的 URL 比官方客戶端的 URL 稍長:

https://cloud.example.com/remote.php/dav/files/USERNAME/

https://example.com/nextcloud/remote.php/dav/files/USERNAME/ (if Nextcloud is installed in a subdirectory called "nextcloud")

Note

When using a third-party WebDAV client (including your operating system's built-in client), you should use an application password for login rather than your regular password. In addition improved security, this increases performance significantly. To configure an application password, log into the Nextcloud Web interface, click on the avatar in the top right and choose Personal settings. Then choose Security in the left sidebar and scroll to the very bottom. There you can create an app password (which can also be revoked in the future without changing your main user password).

Note

在以下示例中,您應將 example.com/nextcloud 替換為您的 Nextcloud 伺服器的 URL(如果安裝在您的域根目錄中,請省略目錄部分),並將 USERNAME 替換為連接用戶的用戶名。

查看您 Nextcloud 的 WebDAV 連線網址(於左下方的設定)。

使用 Linux 訪問檔案

您可以使用以下方法在 Linux 操作系統中訪問檔案。

Nautilus 檔案管理器

當您在 GNOME 控制中心 中配置您的 Nextcloud 帳戶時,您的檔案將自動被 Nautilus 作為 WebDAV 共享掛載,除非您取消選擇檔案訪問

您還可以手動掛載您的 Nextcloud 檔案。使用 davs:// 協議將 Nautilus 檔案管理器連接到您的 Nextcloud 共享:

davs://example.com/nextcloud/remote.php/dav/files/USERNAME/

Note

如果您的伺服器連接未加密 HTTPS,則使用 dav:// 而不是 davs://

配置 Nautilus 檔案管理器使用 WebDAV 的截圖

Note

相同的方法適用於使用 GVFS 的其他檔案管理器,如 MATE 的 Caja 和 Cinnamon 的 Nemo。

使用 KDE 和 Dolphin 檔案管理器訪問檔案

要使用 KDE 中的 Dolphin 檔案管理器訪問您的 Nextcloud 檔案,請使用 webdav:// 協議:

webdav://example.com/nextcloud/remote.php/dav/files/USERNAME/
配置 Dolphin 檔案管理器使用 WebDAV 的截圖

您可以創建指向 Nextcloud 伺服器的永久連結:

  1. 打開 Dolphin,然後在左側的 "位置" 列中點擊 "網絡"。

  2. 點擊標記為 添加網絡資料夾 的圖標。隨後的對話框應顯示 WebDAV 已經被選中。

  3. 如果沒有選中 WebDAV,請選中它。

  4. 點擊 下一步

  5. 輸入以下設置:

    • 名稱:您希望在 位置 書籤中看到的名稱,例如 Nextcloud。

    • 用戶:您用於登錄的 Nextcloud 用戶名,例如 admin。

    • 伺服器:Nextcloud 的域名,例如 example.com (不包括 http:// 或後面的目錄)。

    • 資料夾 -- 輸入路徑 nextcloud/remote.php/dav/files/USERNAME/

  6. (可選)選中 "創建圖標" 復選框,以便在位置列中顯示書籤。

  7. (可選)在 "端口和加密" 復選框中提供任何特殊設置或 SSL 證書。

在 Linux 命令行中創建 WebDAV 挂載

您可以從 Linux 命令行創建 WebDAV 挂載。如果您希望以與其他遠程文件系統挂載相同的方式訪問 Nextcloud,這將非常有用。以下示例顯示了如何創建個人挂載,並在每次登錄到 Linux 計算機時自動掛載。

  1. 安裝 davfs2 WebDAV 文件系統驅動程序,這允許您像其他任何遠程文件系統一樣掛載 WebDAV 共享。使用此命令在 Debian/Ubuntu 上安裝它:

    apt-get install davfs2
    
  2. 使用此命令在 CentOS、Fedora 和 openSUSE 上安裝它:

    yum install davfs2
    
  3. 將自己添加到 davfs2 組:

    usermod -aG davfs2 <username>
    
  4. 然後在您的主目錄中創建一個 nextcloud 目錄作為掛載點,並為您的個人配置文件創建 .davfs2/:

    mkdir ~/nextcloud
    mkdir ~/.davfs2
    
  5. /etc/davfs2/secrets 複製到 ~/.davfs2:

    cp  /etc/davfs2/secrets ~/.davfs2/secrets
    
  6. 將自己設置為所有者,並將權限設置為僅限讀寫所有者:

    chown <linux_username>:<linux_username> ~/.davfs2/secrets
    chmod 600 ~/.davfs2/secrets
    
  7. 將您的 Nextcloud 登錄憑據添加到 secrets 文件的末尾,使用您的 Nextcloud 伺服器 URL 和您的 Nextcloud 用戶名及密碼:

    https://example.com/nextcloud/remote.php/dav/files/USERNAME/ <username> <password>
    or
    $PathToMountPoint $USERNAME $PASSWORD
    for example
    /home/user/nextcloud john 1234
    
  8. 將挂載信息添加到 /etc/fstab:

    https://example.com/nextcloud/remote.php/dav/files/USERNAME/ /home/<linux_username>/nextcloud davfs user,rw,auto 0 0
    
  9. 然後通過運行以下命令測試它是否正常掛載和身份驗證。如果您正確設置,則不需要根權限:

    mount ~/nextcloud
    
  10. 您也應該能夠卸載它:

    umount ~/nextcloud
    

現在,每次登錄到您的 Linux 系統時,您的 Nextcloud 共享應該會自動通過 WebDAV 在您的 ~/nextcloud 目錄中掛載。如果您希望手動掛載,請在 /etc/fstab 中將 auto 更改為 noauto

已知問題

問題

資源暫時不可用

解決方案

如果您在目錄中創建檔案時遇到問題,請編輯 /etc/davfs2/davfs2.conf 並添加:

use_locks 0

問題

證書警告

解決方案

如果您使用自簽名證書,則會收到警告。要更改此情況,您需要配置 davfs2 以識別您的證書。將 mycertificate.pem 複製到 /etc/davfs2/certs/。然後編輯 /etc/davfs2/davfs2.conf 並取消註釋行 servercert。現在按照此示例添加證書的路徑:

servercert /etc/davfs2/certs/mycertificate.pem

使用 macOS 訪問檔案

Note

macOS Finder 存在一系列實現問題 http://sabre.io/dav/clients/finder/,應僅在 Nextcloud 伺服器運行於 Apachemod_phpNginx 1.3.8+ 時使用。可訪問 WebDAV 共享的替代 macOS 相容客戶端包括開源應用程序,如 Cyberduck <https://cyberduck.io/>`_(請參見指導 `在此)和 Filezilla。商業客戶端包括 Mountain DuckForkliftTransmitCommander One

通過 macOS Finder 訪問檔案:

  1. 在 Finder 的頂部菜單欄中,選擇 前往 > 連接到伺服器…

    在 macOS 上輸入您的 Nextcloud 伺服器地址的截圖
  2. 連接到伺服器… 窗口打開時,在 伺服器地址: 字段中輸入您的 Nextcloud 伺服器的 WebDAV 地址,即:

    https://cloud.YOURDOMAIN.com/remote.php/dav/files/USERNAME/
    
    截圖:在 "連接到伺服器…" 對話框中輸入 Nextcloud 伺服器地址
  3. 點擊 連接。您的 WebDAV 伺服器應該會顯示在桌面上作為共享磁碟驅動器。

使用 Microsoft Windows 訪問檔案

如果您使用 Windows 的原生 WebDAV 實現,可以使用 Windows 檔案總管將 Nextcloud 映射到新驅動器。映射到驅動器使您能夠以瀏覽映射網絡驅動器中存儲的檔案的方式瀏覽存儲在 Nextcloud 伺服器上的檔案。

使用此功能需要網絡連接。如果您希望離線存儲檔案,請使用桌面客戶端將 Nextcloud 上的所有檔案同步到本地硬碟的某一或多個目錄中。

Note

Windows 10 現在映射您的硬碟之前,如果啟用了 HTTPS,則 Windows 10 現在默認允許基本身份驗證。

在舊版本的 Windows 上,您必須在 Windows 註冊表中允許使用基本身份驗證:

  • 啟動 regedit 並導航到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters

  • 創建或編輯 BasicAuthLevel``(Windows Vista、7 8)或 ``UseBasicAuth``(Windows XP Windows Server 2003)``DWORD 值,並將其值數據設置為 1 以進行 SSL 連接。值 0 表示禁用基本身份驗證,值 2 允許 SSL 和非 SSL 連接(不建議使用)。

  • 然後退出註冊表編輯器並重新啟動計算機。

使用命令行映射驅動器

以下示例顯示了如何使用命令行映射驅動器。要映射驅動器:

  1. 在 Windows 中打開命令提示符。

  2. 在命令提示符中輸入以下行以映射到計算機的 Z 驅動器:

    net use Z: https://<drive_path>/remote.php/dav/files/USERNAME/ /user:youruser yourpassword
    

    其中 <drive_path> 是指向您的 Nextcloud 伺服器的 URL。例如:

    net use Z: https://example.com/nextcloud/remote.php/dav/files/USERNAME/ /user:youruser yourpassword
    

    計算機將您的 Nextcloud 帳戶的檔案映射到驅動器字母 Z。

Error

If you get the following error System error 67 has occurred. The network name cannot be found., or frequent disconnections, open the Services app and make sure that the WebClient service is running and started automatically at startup.

Note

雖然不建議這樣做,但您也可以使用 HTTP 挂載 Nextcloud 伺服器,這樣連接將不會加密。

如果您打算在公共場所的設備上使用 HTTP 連接,我們強烈建議使用 VPN 隧道來提供必要的安全性。

另一種命令語法是:

net use Z: \\example.com@ssl\nextcloud\remote.php\dav /user:youruser
yourpassword

使用 Windows 檔案總管映射驅動器

使用 Microsoft Windows 檔案總管映射驅動器:

  1. 在您的 MS Windows 計算機上打開 Windows 檔案總管。

  2. 右鍵單擊 計算機 條目,然後從下拉菜單中選擇 映射網絡驅動器…

  3. 選擇一個您希望將 Nextcloud 映射到的本地網絡驅動器。

  4. 指定指向您的 Nextcloud 實例的地址,後面跟著 /remote.php/dav/files/USERNAME/

    例如:

    https://example.com/nextcloud/remote.php/dav/files/USERNAME/
    

    Note

    對於受 SSL 保護的伺服器,勾選 登錄時重新連接 以確保映射在後續重啟時持久。如果您希望以不同用戶身份連接到 Nextcloud 伺服器,請勾選 使用不同憑證連接

    在 Windows 檔案總管上映射 WebDAV 的截圖
  1. 點擊 完成 按鈕。

Windows 檔案總管映射網絡驅動器,使您的 Nextcloud 實例可用。

使用 Cyberduck 訪問檔案

Cyberduck 是一款開源的 FTP、SFTP、WebDAV、OpenStack Swift 和 Amazon S3 瀏覽器,旨在進行 macOS 和 Windows 上的檔案傳輸。

Note

本示例使用 Cyberduck 版本 4.2.1。

要使用 Cyberduck:

  1. 指定一個不帶任何前導協議信息的伺服器。

    例如:example.com

  2. 指定適當的端口。

    您選擇的端口取決於您的 Nextcloud 伺服器是否支持 SSL。如果您打算使用 SSL,Cyberduck 要求您選擇不同的連接類型。

    例如:
    • 80 用於未加密的 WebDAV

    • 443 用於安全的 WebDAV(HTTPS/SSL)

  3. 使用 '更多選項' 下拉菜單將其餘的 WebDAV URL 添加到 '路徑' 字段中。

    例如:remote.php/dav/files/USERNAME/

現在 Cyberduck 啟用了對 Nextcloud 伺服器的檔案訪問。

通過 WebDAV 訪問公共共享

Nextcloud 提供了通過 WebDAV 匿名訪問公共共享的可能性。

要訪問公共共享,請打開:

https://example.com/nextcloud/public.php/webdav

在 WebDAV 客戶端中,使用共享令牌作為用戶名,並將(可選)共享密碼作為密碼。例如,對於共享鏈接 https://example.com/s/kFy9Lek5sm928xPkFy9Lek5sm928xP 將是用戶名。

Note

設置管理共享允許此伺服器上的用戶將共享發送到其他伺服器。此選項還允許通過 WebDAV 訪問公共共享,並需要啟用此功能,除非使用 cURL(見下文)。

已知問題

問題

Windows 無法使用 HTTPS 連接。

解決方案 1

Windows WebDAV 客戶端可能不支持加密連接上的伺服器名稱指示(SNI)。如果您在掛載 SSL 加密的 Nextcloud 實例時遇到錯誤,請聯繫您的提供商為您的 SSL 基於的伺服器分配專用 IP 地址。

解決方案 2

Windows WebDAV 客戶端可能不支持 TLSv1.1 和 TLSv1.2 連接。如果您已限制伺服器配置僅提供 TLSv1.1 及以上,則與伺服器的連接可能會失敗。請參考 WinHTTP 文檔以獲取更多信息。

問題

您收到以下錯誤消息:錯誤 0x800700DF:檔案大小超過了允許的限制,無法保存。

解決方案

Windows 限制從 WebDAV 共享傳輸的檔案的最大大小。您可以通過單擊 修改 來增加 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters 中的值 FileSizeLimitInBytes

要將限制提高到最大值 4GB,選擇 十進制,輸入值 4294967295,然後重啟 Windows 或重新啟動 WebClient 服務。

問題

根據上述步驟在 Windows 上添加 WebDAV 驅動器不會顯示 Nextcloud 可用空間的正確大小,而是顯示 C: 驅動器的大小及其可用空間。

回答

不幸的是,這是 WebDAV 本身的限制,因為它不提供客戶端從伺服器獲取可用空間的方法。Windows 自動回退到顯示 C: 驅動器的大小及其可用空間。因此不幸的是,對於這個問題沒有真正的解決方案。

問題

通過 WebDAV 訪問 Microsoft Office 中的檔案失敗。

解決方案

已知問題及其解決方案記載在 KB2123563 文章中。

問題

無法使用自簽名證書在 Windows 中將 Nextcloud 映射為 WebDAV 驅動器。

解決方案

  1. 通過您喜愛的 Web 瀏覽器訪問您的 Nextcloud 實例。

  2. 點擊直到您在瀏覽器狀態行中遇到證書錯誤。

  3. View the certificate, then from the Details tab, select 'Copy to File'.

  4. 將文件保存到桌面,隨意命名,例如 myNextcloud.pem

  5. Go to Start menu > Run, type MMC, and click 'OK' to open Microsoft Management Console.

  6. 轉到 文件 > 添加/移除管理單元。

  7. Select Certificates, Click 'Add', choose 'My User Account', then 'Finish', and finally 'OK'.

  8. 深入到受信任的根證書頒發機構,證書。

  9. 右鍵單擊證書,選擇所有任務,然後導入。

  10. 從桌面選擇已保存的證書。

  11. 選擇將所有證書放置在以下存儲中,然後點擊 瀏覽。

  12. Check the Box that says Show Physical Stores, expand out Trusted Root Certification Authorities, select Local Computer there, click 'OK', and Complete the Import.

  13. 檢查列表以確保證書顯示。您可能需要刷新才能看到它。

  14. 退出 MMC。

對於 Firefox 用戶:

  1. 啟動您的瀏覽器,轉到 應用菜單 > 歷史紀錄 > 清除最近的歷史紀錄...

  2. 在 '要清除的時間範圍' 下拉菜單中選擇 '所有'。

  3. 選擇 '活動登錄' 復選框

  4. 點擊 '立即清除' 按鈕

  5. 關閉瀏覽器,然後重新打開並測試。

對於基於 Chrome 的瀏覽器(Chrome、Chromium、Microsoft Edge)用戶:

  1. 打開 Windows 控制面板,向下導航到 互聯網選項

  2. 在內容選項卡中,點擊 清除 SSL 狀態 按鈕。

  3. 關閉瀏覽器,然後重新打開並測試。

使用 cURL 訪問檔案

由於 WebDAV 是 HTTP 的擴展,因此可以使用 cURL 來編寫檔案操作腳本。

Note

設置管理共享允許此伺服器上的用戶將共享發送到其他伺服器。如果此選項被禁用,則需要將選項 --header "X-Requested-With: XMLHttpRequest" 傳遞給 cURL。

要創建一個以當前日期命名的資料夾:

$ curl -u user:pass -X MKCOL "https://example.com/nextcloud/remote.php/dav/files/USERNAME/$(date '+%d-%b-%Y')"

要將檔案 error.log 上傳到該目錄:

$ curl -u user:pass -T error.log "https://example.com/nextcloud/remote.php/dav/files/USERNAME/$(date '+%d-%b-%Y')/error.log"

要移動檔案:

$ curl -u user:pass -X MOVE --header 'Destination: https://example.com/nextcloud/remote.php/dav/files/USERNAME/target.jpg' https://example.com/nextcloud/remote.php/dav/files/USERNAME/source.jpg

要獲取根資料夾中的檔案屬性:

    $ curl -X PROPFIND -H "Depth: 1" -u user:pass https://example.com/nextcloud/remote.php/dav/files/USERNAME/ | xml_pp
    <?xml version="1.0" encoding="utf-8"?>
<d:multistatus xmlns:d="DAV:" xmlns:oc="http://nextcloud.org/ns" xmlns:s="http://sabredav.org/ns">
  <d:response>
    <d:href>/nextcloud/remote.php/dav/files/USERNAME/</d:href>
    <d:propstat>
      <d:prop>
        <d:getlastmodified>Tue, 13 Oct 2015 17:07:45 GMT</d:getlastmodified>
        <d:resourcetype>
          <d:collection/>
        </d:resourcetype>
        <d:quota-used-bytes>163</d:quota-used-bytes>
        <d:quota-available-bytes>11802275840</d:quota-available-bytes>
        <d:getetag>"561d3a6139d05"</d:getetag>
      </d:prop>
      <d:status>HTTP/1.1 200 OK</d:status>
    </d:propstat>
  </d:response>
  <d:response>
    <d:href>/nextcloud/remote.php/dav/files/USERNAME/welcome.txt</d:href>
    <d:propstat>
      <d:prop>
        <d:getlastmodified>Tue, 13 Oct 2015 17:07:35 GMT</d:getlastmodified>
        <d:getcontentlength>163</d:getcontentlength>
        <d:resourcetype/>
        <d:getetag>"47465fae667b2d0fee154f5e17d1f0f1"</d:getetag>
        <d:getcontenttype>text/plain</d:getcontenttype>
      </d:prop>
      <d:status>HTTP/1.1 200 OK</d:status>
    </d:propstat>
  </d:response>
</d:multistatus>

使用 WinSCP 訪問檔案

WinSCP 是一款開源的免費 SFTP、FTP、WebDAV、S3 和 SCP 客戶端,適用於 Windows。它的主要功能是進行本地計算機和遠程計算機之間的檔案傳輸。此外,WinSCP 還提供腳本和基本的檔案管理功能。

您可以 下載 WinSCP 的可攜版本,並通過 Wine 在 Linux 上運行。

要在 Linux 上運行 WinSCP,請通過您的發行版的包管理器下載 wine,然後使用命令 wine WinSCP.exe 運行它。

要連接到 Nextcloud:

  • 啟動 WinSCP

  • 在菜單中按 '會話'

  • 按 '新建會話' 菜單選項

  • 將 '檔案協議' 下拉菜單設置為 WebDAV

  • 將 '加密' 下拉菜單設置為 TLS/SSL 隱式加密

  • 填寫主機名字段:example.com

  • 填寫用戶名字段:NEXTCLOUDUSERNAME

  • 填寫密碼字段:NEXTCLOUDPASSWORD

  • 按 '高級...' 按鈕

  • 在左側導航到 '環境','目錄'

  • 在 '遠程目錄' 字段中填寫以下內容:/nextcloud/remote.php/dav/files/NEXTCLOUDUSERNAME/

  • 按 '確定' 按鈕

  • 按 '保存' 按鈕

  • 選擇所需的選項,然後按 '確定' 按鈕

  • 按 '登錄' 按鈕以連接到 Nextcloud

Note

It is recommended to use an app password for the password if you use TOTP as WinSCP does not understand TOTP with Nextcloud at the time of writing (2022-11-07).