115网盘制作备份服务器

1,511次阅读
6条评论

共计 8143 个字符,预计需要花费 21 分钟才能阅读完成。

更新记录

2023-11-19

发现 clouddrive2 添加 115存储 时,单个任务上传超过 5小时 ,会发生中断并且反复重试,打满上行带宽。

115网盘制作备份服务器

2023-11-01

alist 添加115存储发现有以下问题:

  1. 视频无法在 web 端播放,下载也容易报错
  2. 上传超大文件失败,单个任务超过一小时就会发生中断。

clouddrive2 也可以通过移动端 cookie 添加115 存储,并且可以解决上述问题。对比下来,对于 115 兼容性 cd2更佳。

补充 cd2 的部署和使用方式。

背景

企业的生产环境经常会使用到两地三中心的容灾备份方案。

而我的环境目前使用了 crontab + 脚本的方式,定时从 vm 备份到了物理机的冷备硬盘和 onedrive 的免费 15G 空间内。

冷备硬盘的空间足够,不仅可以备份程序数据,还可以备份 vm 快照。而 onedrive 的免费 15G 空间太小,只能备份最重要的数据。

近日随着服务增多,数据量增大,onedrive 的空间捉襟见肘。网上冲浪时一直关注有没有空间更大且价格低廉的公网存储方案。

115 网盘

115网盘之前有听说,但是没有用过。近日有活动,最低花费 539元,可获得33T的空间 + 8年VIP会员。

活动链接:115 2023双11

我的购买方案是:

  • 某宝 26T空号 = 39元
  • 官方购买8年会员 8T = 500 元
  • 合计8年会员 = 539元 33T空间

若使用自己手机注册账号,扩容卡某宝价格大约在 25~30元/T。性价比没有那么高。

如果选择从某宝购买空号,注意购买后执行以下手段保障账号安全:

  1. 更换绑定手机
  2. 修改账号密码
  3. 设置安全密钥
  4. 设置两步验证
  5. 设置密保问题

挂载115网盘 到 Linux

操作系统:Ubuntu 20.04

想利用 115 的空间用作备份服务器或者媒体服务器,常规的客户端使用肯定不现实。GUI 界面的客户端不能和 Linux 计划任务等进行交互。

115网盘制作备份服务器

要想达成诉求,普遍的做法是将网盘空间 挂载在 Linux 操作系统上,之后再进行交互就方便了。

建议使用:clouddrive2 + rclone 方式

clouddrive2 用于连接 115网盘,并提供 webdav 。而 rclone 可以将 webdav 挂载在Linux 系统。

alist

部署

不详述 alist 的作用,只简单介绍部署过程。

参考链接:alist 官网

docker-compose方式部署:

# 创建目录
# mkdir /usr/local/alist && cd /usr/local/alist

# 编辑yml文件
# vim docker-compose.yml
version: '3.3'
services:
    alist:
        restart: always
        volumes:
            - '/etc/alist:/usr/local/alist/data'
        ports:
            - '5244:5244'
        environment:
            - PUID=0
            - PGID=0
            - UMASK=022
        container_name: alist
        image: 'xhofe/alist:latest'

# 启动
# docker-compose start

配置

获取 115 移动端cookie

当在 alist 的 web 控制台添加 115网盘 存储时,会看到它支持以下两种方式:

  • qrcode
  • cookie

115网盘制作备份服务器

115的登录方式有三种

  • PC端
  • web 端
  • 移动端

其中 PC端 和 web端只支持单端登录,即同时只能允许一端在线。

若即想将 115 挂载在 Linux,又想同时使用pc端和手机端,最合适的做法是获取移动端的 cookie 用于挂载,PC端使用手机扫描 QR code 登录。

这样只要移动端不退出登录,cookie 永远有效,有效防止多端使用时被T下线。

我使用的是安卓手机,获取 115 cookie 最方便的办法是安装 vnet,抓 115 app的数据包。

下载链接:vnet 官方网站

步骤为:

  1. 下载并安装 vnet
  2. 进入 vnet,导出CA证书
  3. 手机设置里,安装导出的CA证书
  4. 进入 vnet,添加应用:115
  5. 开启抓包
  6. 进入115,执行任意操作产生数据包
  7. 进入vnet,查看数据包并获取cookie,停止抓包

每个步骤不详细截图了,给到第 7 步的效果图:

115网盘制作备份服务器

​​

115网盘制作备份服务器

cookie 复制出来后,截取冒号后的内容,并去掉末尾的两个;​。

添加存储

在 alist web端,依次点击 存储​ –> 添加​ –> 115​ ,并配置挂载路径和 cookie:
115网盘制作备份服务器

添加完毕后,若无故障,首页即可浏览到 115 网盘空间数据:

115网盘制作备份服务器

clouddrive2

部署

不详述 cd2 的作用,只简单介绍部署过程。

参考链接:clouddrive2 官网

# 创建目录
# mkdir /usr/local/clouddrive2/

# 下载对应版本包
# wget https://github.com/cloud-fs/cloud-fs.github.io/releases/download/v0.5.11/clouddrive-2-linux-x86_64-0.5.11.tgz

# 解压
# unzip clouddrive-2-linux-x86_64-0.5.11.tgz

# 配置systemd单元配置文件
# vim /etc/systemd/system/clouddrive2.service
[Unit]
Description=clouddrive2 server
After=network.target

[Service]
Type=simple
User=root
ExecStart=/usr/local/clouddrive2/clouddrive
Restart=on-failure

[Install]
WantedBy=multi-user.target

# 配置开机自启
# systemctl enable clouddrive2.service

# 启动cd2
# systemctl start clouddrive2.service

配置

获取 115 移动端cookie

同 alist

添加存储

clouddrive2 需要在 web端 注册账号,登录后才能添加存储,免费版本有限制,可参阅官网说明。

与 alist 不同的是 cookie 的填写格式不同。

从 vent 获取到的 cookie 有 4 个字段,分别是 CID​ 、SEID​ 、UID​、115_lang

只需要前 3 个字段,将值填充到模版

格式如下:

[
    {
        "domain": ".115.com",
        "hostOnly": false,
        "httpOnly": true,
        "name": "CID",
        "path": "/",
        "sameSite": "unspecified",
        "secure": false,
        "session": true,
        "storeId": "0",
        "value": "CID的值"
    },
    {
        "domain": ".115.com",
        "hostOnly": false,
        "httpOnly": true,
        "name": "SEID",
        "path": "/",
        "sameSite": "unspecified",
        "secure": false,
        "session": true,
        "storeId": "0",
        "value": "SEID的值"
    },
    {
        "domain": ".115.com",
        "hostOnly": false,
        "httpOnly": true,
        "name": "UID",
        "path": "/",
        "sameSite": "unspecified",
        "secure": false,
        "session": true,
        "storeId": "0",
        "value": "UID的值"
    }
]

115网盘制作备份服务器

添加完毕后,若无故障,首页即可浏览到 115 网盘空间数据。

​​​115网盘制作备份服务器

rclone 挂载 webdav

alist 和clouddrive2 默认会都提供 webdav:

alist:

  • 链接:http://ip:port/dav
  • 账号:alist 用户
  • 密码:alist 用户密码

clouddrive2:

  • 链接:http://ip:port/dav
  • 账号:clouddrive2 用户邮箱
  • 密码:clouddrive2 用户密码

rclone 可以挂载 webdav 到服务器

参考链接:rclone 官方文档

部署

# 安装依赖
apt-get install fuse

# 一键安装rclone
sudo -v ; curl https://rclone.org/install.sh | sudo bash

配置

新建 remotes,依次配置 名称​、类型:webdav​、webdav类型:other​、链接​、用户​、密码

# rclone config
Current remotes:

Name                 Type
==<span style="font-weight: bold;" class="mark">                 </span><span style="font-weight: bold;" class="mark">
115                  webdav
onedrive             onedrive

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> n

Enter name for new remote.
name> 115-test

Option Storage.
Type of storage to configure.
Choose a number from below, or type in your own value.
 1 / 1Fichier
   \ (fichier)
 2 / Akamai NetStorage
   \ (netstorage)
 3 / Alias for an existing remote
   \ (alias)
 4 / Amazon Drive
   \ (amazon cloud drive)
 5 / Amazon S3 Compliant Storage Providers including AWS, Alibaba, Ceph, China Mobile, Cloudflare, ArvanCloud, DigitalOcean, Dreamhost, Huawei OBS, IBM COS, IDrive e2, IONOS Cloud, Liara, Lyve Cloud, Minio, Netease, RackCorp, Scaleway, SeaweedFS, StackPath, Storj, Tencent COS, Qiniu and Wasabi
   \ (s3)
 6 / Backblaze B2
   \ (b2)
 7 / Better checksums for other remotes
   \ (hasher)
 8 / Box
   \ (box)
 9 / Cache a remote
   \ (cache)
10 / Citrix Sharefile
   \ (sharefile)
11 / Combine several remotes into one
   \ (combine)
12 / Compress a remote
   \ (compress)
13 / Dropbox
   \ (dropbox)
14 / Encrypt/Decrypt a remote
   \ (crypt)
15 / Enterprise File Fabric
   \ (filefabric)
16 / FTP
   \ (ftp)
17 / Google Cloud Storage (this is not Google Drive)
   \ (google cloud storage)
18 / Google Drive
   \ (drive)
19 / Google Photos
   \ (google photos)
20 / HTTP
   \ (http)
21 / Hadoop distributed file system
   \ (hdfs)
22 / HiDrive
   \ (hidrive)
23 / In memory object storage system.
   \ (memory)
24 / Internet Archive
   \ (internetarchive)
25 / Jottacloud
   \ (jottacloud)
26 / Koofr, Digi Storage and other Koofr-compatible storage providers
   \ (koofr)
27 / Local Disk
   \ (local)
28 / Mail.ru Cloud
   \ (mailru)
29 / Mega
   \ (mega)
30 / Microsoft Azure Blob Storage
   \ (azureblob)
31 / Microsoft OneDrive
   \ (onedrive)
32 / OpenDrive
   \ (opendrive)
33 / OpenStack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
   \ (swift)
34 / Oracle Cloud Infrastructure Object Storage
   \ (oracleobjectstorage)
35 / Pcloud
   \ (pcloud)
36 / Put.io
   \ (putio)
37 / QingCloud Object Storage
   \ (qingstor)
38 / SMB / CIFS
   \ (smb)
39 / SSH/SFTP
   \ (sftp)
40 / Sia Decentralized Cloud
   \ (sia)
41 / Storj Decentralized Cloud Storage
   \ (storj)
42 / Sugarsync
   \ (sugarsync)
43 / Transparently chunk/split large files
   \ (chunker)
44 / Union merges the contents of several upstream fs
   \ (union)
45 / Uptobox
   \ (uptobox)
46 / WebDAV
   \ (webdav)
47 / Yandex Disk
   \ (yandex)
48 / Zoho
   \ (zoho)
49 / premiumize.me
   \ (premiumizeme)
50 / seafile
   \ (seafile)
Storage> 46

Option url.
URL of http host to connect to.
E.g. https://example.com.
Enter a value.
url> http://127.0.0.1:5244/dav

Option vendor.
Name of the WebDAV site/service/software you are using.
Choose a number from below, or type in your own value.
Press Enter to leave empty.
 1 / Nextcloud
   \ (nextcloud)
 2 / Owncloud
   \ (owncloud)
 3 / Sharepoint Online, authenticated by Microsoft account
   \ (sharepoint)
 4 / Sharepoint with NTLM authentication, usually self-hosted or on-premises
   \ (sharepoint-ntlm)
 5 / Other site/service or software
   \ (other)
vendor> 5

Option user.
User name.
In case NTLM authentication is used, the username should be in the format 'Domain\User'.
Enter a value. Press Enter to leave empty.
user> pengyinwei

Option pass.
Password.
Choose an alternative below. Press Enter for the default (n).
y) Yes, type in my own password
g) Generate random password
n) No, leave this optional password blank (default)
y/g/n> y
Enter the password:
password:
Confirm the password:
password:

Option bearer_token.
Bearer token instead of user/pass (e.g. a Macaroon).
Enter a value. Press Enter to leave empty.
bearer_token> 

Edit advanced config?
y) Yes
n) No (default)
y/n> n

Configuration complete.
Options:
- type: webdav
- url: http://127.0.0.1:5244/dav
- vendor: other
- user: pengyinwei
- pass: *** ENCRYPTED ***
Keep this "115-test" remote?
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> y

Current remotes:

Name                 Type
</span><span style="font-weight: bold;" class="mark">                 </span>==
115                  webdav
115-test             webdav
onedrive             onedrive

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> 

完毕后,生成的配置文件路径是:~/.config/rclone/rclone.conf

挂载

115网盘制作备份服务器

# 创建挂载点
mkdir /115-test

# 使用rclone挂载
rclone mount 115-test:/  /115-test --copy-links --no-gzip-encoding --no-check-certificate --allow-other --allow-non-empty --umask 000 --daemon --vfs-cache-mode full

# 查看挂载
# df -h|grep "/115"
115-test:            1.0P     0  1.0P   0% /115-test

如果本地磁盘空间够大,请开启 --vfs-cache-mode full​。

我最开始没开启,上传大和多文件时会报错。原因参考:rclone.org/commands/rclo…

在开启了--vfs-cache-mode full​后,读写文件将预先写入本地磁盘缓存,路径为~/.cache/rclone​。如果有读写大文件的需求,请保障此目录有足够的容量。

踩坑点

rclone 传输大文件

需要开启 --vfs-cache-mode full​。

alist 传输大文件

alist在传输文件时,会使用代理方式,将文件先写入本地缓存,再上传到网盘空间。

参考链接:alist 代理说明

115网盘制作备份服务器

这带来了两个问题:

  1. 需要保证本地磁盘有足够的空间。我使用了 docker-compose 部署 alist,缓存文件路径在/var/lib/docker/volumes​下。
  2. 文件太大时,因为带宽受限会导致一直上传不上,我怀疑是否 115 对于单个上传链接设定有超时时间1h,在单位时间1h内未上传成功,就会中断。然后 alist 产生的缓存并不会清空,触发再次重试导致一直循环打满带宽且不能成功。

    文件大小:50GB

    带宽:30Mbps

    问题表现:理论上带宽跑满的情况下,3.7小时可以上传完毕。实际传输了一晚上都不行。

    如图:每个小时上传都会产生近乎均匀的抖动

    115网盘制作备份服务器

clouddrive2 传输大文件

和 alist 一样,也会将文件先写入本地缓存,路径为 ~/Waytech/CloudDrive2/temp/​​。

经过验证,cd2可以成功上传 57G 大文件:

115网盘制作备份服务器

对比 alist,在执行上传时带宽平稳:
115网盘制作备份服务器

总结

115 33T空间+ clouddrive2 + rclone 方案可以满足我的远程数据备份要求。

大文件传输时,会对本地磁盘造成压力。例如上传50GB的文件到网盘时,alist & clouddrive2 和 rclone 各自都会产生 50GB 的缓存文件。

用 clouddrive2 代替 alist 后,成功上传了单个 57GB 容量的快照到 115 。说明 115 本身对于上传文件的超时并不是 1h ,只是单纯的 alist 对 115 的适配不好。

引用链接

正文完
 1
pengyinwei
版权声明:本站原创文章,由 pengyinwei 2023-10-30发表,共计8143字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处:https://www.opshub.cn
评论(6条评论)
mjj
2023-11-29 07:19:50 回复

写的非常好,学习了

 Macintosh  Chrome  中国广西南宁市联通
    2023-11-29 17:18:34 回复

    :lol: 你是本站第一个评论的人

     Windows  Chrome
lutian
2023-11-30 23:09:35 回复

不懂就问,挂载后就会自动同步原文件的内容到网盘上吗?
为啥我挂载后,文件里都是网盘里的内容

 Macintosh  Chrome  中国广东省中山市电信
    2023-12-01 15:09:33 回复

    描述不够清晰,我简单回答下
    将 115 网盘以 webdav 方式 mount 在Linux 操作系统的某个目录下时,此目录之后会直接展示网盘中的内容,该目录在未挂载之前的文件不会自动同步到网盘中,而是会被”隐藏“。当取消挂载后又会重新显示。
    执行 ls 挂载后的目录时只会获取到网盘文件列表,文件数据不会和本地存储交互。

     Windows  Chrome
Dok
2024-04-03 23:55:54 回复

你这115的上传稳定性还可以 你不是移动网络吧。 欢迎体验下移动网络 去上传115。 能恶心死你。

另外你测试115的时间点选的还是最好的时候 过24点后 到中午12点前 连接性最好的时候。 你可以试试晚上18-24. 移动宽带恶心的完全不想用(对于上传)

 Windows  Chrome  中国移动
    2024-04-11 14:45:22 回复

    我不用移动宽带。在家用环境下上传自然是会受运营商影响的。

     Windows  Chrome