一、为什么需要它
先说清楚痛点:夸克网盘和阿里云盘是两家产品,官方没有任何「一键互转」的通道。要把夸克里的东西弄到阿里云盘,普通人只能先下载到电脑、再上传——文件大一点就慢到怀疑人生,还白白占用本地磁盘。
思路很直接:找一台一直在线的服务器当中转站,让数据在云端「夸克 → 服务器 → 阿里云盘」自己流动,你完全不用动手。夸克和阿里云盘都是国内服务,整条链路不需要代理 / 科学上网。
本文交付物
一套跑在阿里云 ECS 上的 Docker 方案:AList 挂载两个网盘 + alist-sync 每天定时拷贝。你只需要最初配一次,之后每天自动同步。
二、整体架构
中转逻辑:数据从夸克拉到 ECS、再由 AList 推到阿里云盘,ECS 全程只做 relay(转发),不长期存你的文件。
核心组件就两个容器:
一个支持几十种网盘协议的挂载工具。在 ECS 上把它跑起来,把夸克挂到 /quark、阿里云盘挂到 /aliyun,两个盘就像本地目录一样能互拷。
专门负责「把 A 目录按计划拷到 B 目录」的小工具。给它一对路径 + 一个 cron 时间,它就每天准时干活。
三、装 Docker(被墙的坑)
这台 ECS 是 Alibaba Cloud Linux,默认没装 Docker。本来一行官方脚本就能装,但这台机器出网到 Docker 官网被挡了(SSL 握手失败)。
坑 1:Docker 官网 / Docker Hub 被墙
别死磕官方源。引擎用阿里云自己的镜像源装,拉镜像用国内镜像源。实测 daocloud 的部分镜像有白名单、Docker Hub 直连超时,最终靠「全量代理型」镜像源(如 docker.1ms.run)解决。
# 1. 加阿里云 Docker-CE 镜像源(替代被墙的官网) dnf config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo sed -i "s#download.docker.com#mirrors.aliyun.com/docker-ce#g" /etc/yum.repos.d/docker-ce.repo # 2. 安装引擎 + compose 插件 dnf install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin systemctl enable --now docker # 3. 配置国内镜像加速器(只留「可达」的源) cat > /etc/docker/daemon.json <<'EOF' { "registry-mirrors": ["https://docker.1ms.run", "https://docker.1panel.live"] } EOF systemctl restart docker # 4. 拉取两个镜像(镜像源被墙时换全量代理源重试) docker pull alistv3/alist:latest docker pull xjxjin/alist-sync:latest
关键提醒:配完镜像源一定要 systemctl restart docker 才生效;如果某个镜像源在这台机器上不可达(curl 返回 000),就把它从 daemon.json 里删掉,否则会卡在不可达源上超时。
四、起 AList(只绑本地)
用一份 docker-compose.yml 把 AList 跑起来。安全上我做了一个重要决定:把 5244 端口只绑到 127.0.0.1,不暴露到公网——别人从外网扫不到这个后台。
# docker-compose.yml(节选) services: alist: image: alistv3/alist:latest container_name: alist restart: always ports: - "127.0.0.1:5244:5244" # 只绑本地,不暴露公网 volumes: - ./alist-data:/opt/alist/data networks: [syncnet] alist-sync: image: xjxjin/alist-sync:latest depends_on: [alist] environment: BASE_URL: "http://alist:5244" USERNAME: "admin" PASSWORD: "********" # 示例已打码,实际用你自己的强密码 networks: [syncnet] networks: { syncnet: { driver: bridge } }
起好容器后设一个管理员密码(示例已打码:********)。之后要管理后台,在自己电脑上开一条 SSH 隧道即可,不用开放端口:
# 本地终端执行,保持窗口开着,再开浏览器访问 ssh -L 5244:127.0.0.1:5244 root@你的_ECS_IP # 浏览器打开 ↓(仅本机可访问) http://127.0.0.1:5244
挂载两个网盘前,先确认 AList 里的驱动名(版本不同名字可能变):夸克 = Quark,阿里云盘 Open = AliyundriveOpen(不要用旧的 Aliyundrive)。
五、挂载两个网盘(AList 配置)
AList 的存储可以在网页后台手动加,也可以用 Admin API 批量加。下面是两个盘各自的「凭证怎么拿」。所有敏感值都已打码。
夸克网盘:用 Cookie
打开 pan.quark.cn 并登录,按 F12 → Application → Cookies → 选中全部行复制,把整段粘进 Quark 驱动的 cookie 字段。
一定要取「完整 Cookie」:用 Console 里 document.cookie 只返回非 HttpOnly 的字段,会缺 __pus、grey-id 等关键值,导致挂载 init 失败。Application 标签里复制出来的才是全的。
# 示例(已打码,实际用你自己的完整 Cookie)
__pus=****; ctoken=****; __uid=****; __puus=****; isg=****; ...
阿里云盘 Open:用 refresh_token(可扫码)
用官方扫码工具(alist.nn.ci 上的 Aliyundrive Open 取 token 页)扫一下,自动拿到 refresh_token,填进 AliyundriveOpen 驱动的 refresh_token 字段。
# 示例(已打码,实际用你扫码得到的 token)
refresh_token = eyJhbGciOiJSUzI1NiJ9.****(已打码)
坑 2:布尔字段不能传字符串
用 API 建存储时,addition 要整体序列化成字符串,但里面的布尔字段必须传真正的 true / false,不能传 "false" 字符串,否则驱动初始化会失败。这是排错排了半天才发现的。
挂载完,列一下 /quark 和 /aliyun 目录,能正常列出文件即成功。
六、配定时同步(alist-sync)
给同步容器两个关键环境变量:DIR_PAIRS 写「源:目标」路径对,CRON_SCHEDULE 写 cron 时间。
# alist-sync 环境变量(节选) BASE_URL: "http://alist:5244" USERNAME: "admin" PASSWORD: "********" # 已打码 DIR_PAIRS: "/quark/转阿里云盘:/aliyun/来自夸克" CRON_SCHEDULE: "0 3 * * *" # 每天 03:00 自动同步
目标文件夹不存在会自动创建,不用提前在阿里云盘里建。多对目录用 ; 分隔。
验证时我另跑了一个「cron 留空」的一次性容器——这样它会立即拷贝一次而不是等明天。确认 16 个文件全部「复制成功」,再到阿里云盘侧核对落地,链路就通了。
七、踩坑清单(小结)
把全程踩过的坑浓缩成一张表,照着避:
| 坑 | 现象 | 解法 |
|---|---|---|
| Docker 官网被墙 | 官方安装脚本 SSL 失败 | 改用阿里云镜像源装引擎 |
| Docker Hub 拉不到镜像 | registry-1.docker.io 超时 | 国内镜像源 + 全量代理源(如 docker.1ms.run) |
| 镜像源不可达 / 有白名单 | curl 返回 000 / 401 | 只留可达源;白名单外的镜像换代理源拉 |
| 夸克 Cookie 不完整 | 存储 init 失败,列不出目录 | 用 Application 标签复制完整 Cookie,别用 document.cookie |
| 布尔字段传成字符串 | 驱动初始化失败 | API 建存储时布尔字段用真 true/false |
| alist-sync 偶发随机失败 | 某次同步部分文件没拷过去 | 每天跑一次,次日定时会自动补齐 |
| 凭证过期 | 同步某天突然断掉 | 夸克 Cookie / 阿里云盘 token 失效后重新取一次 |
八、安全与收尾
AList 千万不要「裸奔」到公网。当前方案端口只绑 127.0.0.1,需要远程管理就用 SSH 隧道本地访问,这是目前最稳的做法。
如果以后想「给别人也用」,要分清一件事:AList 是单租户架构,别人登录看到的是你挂的盘,不是他自己的。真要让朋友用他自己的夸克 / 阿里云盘,得每人一个独立的 AList 实例(可以做成「开新用户」脚本,后续再谈)。本文的链路是给你自己的私有中转站,不是公共服务。
最后一句大实话:夸克 Cookie 和阿里云盘 token 都会过期,同步「某天自己停了」是常态。失效后重新取一次凭证、在后台改下存储即可,不用重装。