一、 問題緣起
1. 需求目的
據說可以阿里雲盤開放了webdav接口,可以使用webdav訪問,看到網上和一些群里有相關內容。於是,開始嘗試搞一下。
據說webdav在很多終端都可使用。想嘗試一下,如果成了,可以解決很多整理+同步資料麻煩的問題。
我在windows上用,相關項目主要是這個:https://github.com/zxbu/webdav-aliyundriver/
另外一個有關項目,看起來想是路由器上或者NAS上用的,暫時無關: https://github.com/messense/aliyundrive-webdav
2. 大概實現方法
項目里可以看到,兩種方式,
一種是用java執行jar包,之后就可以從本地的localhost:8080訪問網盤,再使用raidrive工具將其掛載成本地硬盤的形式;
第二種使用docker,加上安裝docker的部分,免去安裝java的部分,同樣實現可以從本地localhost:8080訪問網盤,再使用raidrive工具掛載成本地硬盤形式。
所以分成兩步:
- 用docker或者powershell執行jar包實現webdav,使阿里雲盤的內容可以從本地的http端口訪問。
- 使用raidrive、cloudrive、rclone等工具,將其變為本地硬盤形式使用。
第一步結果后可以在瀏覽器訪問
第二步后,可以在以本地硬盤形式使用,這里是以raidrive掛載的結果
3 對掛載工具的討論
主頁上推薦的工具是raidrive。
據我看各處的信息了解,對各個工具有以下評價:
- raidrive縮略圖問題沒有解決,每次都要重新緩存縮略圖,其他都好。
- cloudrive不開源,偷偷跑上傳,cpu莫名其妙上去,讓人感到有點不安。cloudrive掛載完顯示在“設備與驅動器”中,與raidrive顯示在“網絡位置”中不同。
- rclone速度成問題,別人評價“只有--vfs-cache-mode full 速度還行,其他都比raidrive慢不少”。
二、 方法1:使用powershell執行jar包
1. 下載jar包。
到這個項目里下載jar包:https://github.com/zxbu/webdav-aliyundriver/
2. 按照步驟拿到refresh_token。
refresh_token特點:測試了一下,重新登錄后或者長期未使用后在瀏覽器上刷新,refresh_token會變;然而,不影響之前拿到的token,之前的可以繼續用。
3. 把jar包改名成webdav.jar,然后放到某個目錄下。
4. 用powershell進到這個目錄里,執行:java -jar webdav.jar --aliyundrive.refresh-token="your refreshToken"。注意替換refresh_token為自己拿到的token。
5. 如果4成功,可以用瀏覽器確定一下,訪問一下:http://localhost:8080;輸入賬號admin,密碼admin查看(如果自己沒改的話,賬號密碼默認admin)。
到這里,就完成了阿里雲盤通過webdav映射到本地http端口上。
如果想要實現開機自啟動的話,可以寫成bat腳本文件,可以參考這里的實現:https://blog.csdn.net/Hesye/article/details/120256825
最后附上代碼:
%1 mshta vbscript:CreateObject("WScript.Shell").Run("%~s0 ::",0,FALSE)(window.close)&&exit
cd D:\2021-12-01-aliyunpan
java -jar .\webdav-aliyundriver-2.4.2.jar --aliyundrive.refresh-token="(your refresh-token)" --server.port="8080" --aliyundrive.auth.enable=true --aliyundrive.auth.user-name="admin(your name)" --aliyundrive.auth.password="admin(your password)"
三、 方法2:docker實現
**1. 按這篇文章這個下載安裝docker,先開啟hyper-V,再下載,如果開不了hyper-V,則用方法1。http://c.biancheng.net/view/3121.html **
**2. 如果1中出現一個wsl問題,按這個解決: https://docs.microsoft.com/zh-cn/windows/wsl/install-manual#step-4---download-the-linux-kernel-update-package **
即下載一個更新包,安裝后再在powershell中執行:wsl --set-default-version 2
3. 如果不想把鏡像放到C盤占空間,再按這兩個之一改一下
https://blog.csdn.net/fleaxin/article/details/109812090
https://zhuanlan.zhihu.com/p/381115119
到這docker就搞定了。
4. 之后掛載阿里雲,參考這個項目https://github.com/zxbu/webdav-aliyundriver/。
即在powershell里執行:
docker run -d --name=webdav-aliyundriver --restart=always -p 8080:8080 -v /etc/localtime:/etc/localtime -v /etc/aliyun-driver/:/etc/aliyun-driver/ -e TZ="Asia/Shanghai" -e ALIYUNDRIVE_REFRESH_TOKEN="your refreshToken" -e ALIYUNDRIVE_AUTH_PASSWORD="admin" -e JAVA_OPTS="-Xmx1g" zx5253/webdav-aliyundriver
注意修改refresh_token為登錄后獲取的refresh_token。
完成這步,就可以在瀏覽器localhost:8080訪問了。
四、 第二步:raidrive掛載本地
先按2、3中方法之一,使用webdav協議將阿里雲盤映射到本地后,再使用raidrive將之變成本地硬盤形式使用。
如圖是需要注意的地方,賬號密碼填寫之前設置的,若未修改則都為admin。