Rclone:修订间差异
更多操作
创建页面,内容为“远程存储 挂载、传输 备份 数据。 == 安装 == == 命令参数 == == 挂载 == == 服务 == === 文件服务 === Systemd === WebDAV === Systemd 分类:Linux” |
无编辑摘要 |
||
| 第16行: | 第16行: | ||
[[Systemd]] | [[Systemd]] | ||
<span id="rclone-完整实操教程对接alist阿里云盘解决403防盗链"></span> | |||
= Rclone 完整实操教程(对接Alist+阿里云盘,解决403防盗链) = | |||
<span id="一软件简介"></span> | |||
== 一、软件简介 == | |||
Rclone 是跨云存储同步工具,支持阿里云盘、OneDrive、S3、Alist WebDAV 等几十种存储。 搭配 Alist 管理多网盘,是服务器备份、异地同步、文件挂载的首选方案。 本次环境:Arch / Ubuntu + Alist + 阿里云盘Open驱动 + Rclone WebDAV对接。 | |||
----- | |||
<span id="安装-rclone"></span> | |||
= 1. 安装 Rclone = | |||
<span id="一键安装通用linux"></span> | |||
== 一键安装(通用Linux) == | |||
<syntaxhighlight lang="bash">curl https://rclone.org/install.sh | sudo bash</syntaxhighlight> | |||
== 验证版本 == | |||
<syntaxhighlight lang="bash">rclone version</syntaxhighlight> | |||
----- | |||
<span id="配置远端存储对接alist-webdav"></span> | |||
= 2. 配置远端存储(对接Alist WebDAV) = | |||
<span id="方式1交互式配置新手推荐"></span> | |||
== 方式1:交互式配置(新手推荐) == | |||
<syntaxhighlight lang="bash">rclone config</syntaxhighlight> | |||
操作步骤: 1. 输入 <code>n</code> → 创建新远端 2. 名字填写:<code>alist</code> 3. 存储类型选择:<code>webdav</code> 4. URL:<code>http://你的Alist地址/dav</code> 5. '''Vendor(关键):填写 <code>other</code>,不要选alist'''(避免触发直链API导致403) 6. 填入Alist账号、密码 7. 不需要Bearer令牌,直接回车跳过 8. 确认保存,退出配置。 | |||
<span id="方式2直接编辑配置文件"></span> | |||
== 方式2:直接编辑配置文件 == | |||
配置文件路径:<code>~/.config/rclone/rclone.conf</code> | |||
<syntaxhighlight lang="ini">[alist] | |||
type = webdav | |||
url = http://127.0.0.1:5244/dav | |||
vendor = other | |||
user = admin | |||
pass = 你的Alist密码</syntaxhighlight> | |||
== 测试连通性 == | |||
<syntaxhighlight lang="bash"># 列出根目录 | |||
rclone lsf alist: | |||
# 列出aliyunpan下所有文件 | |||
rclone lsf alist:aliyunpan/</syntaxhighlight> | |||
<blockquote>前提:Alist存储设置 1. Web代理:开启 2. WebDAV策略:'''本地代理'''(不再302直链跳转,彻底规避阿里云403 Forbidden) | |||
</blockquote> | |||
----- | |||
<span id="核心命令大全日常高频使用"></span> | |||
= 3. 核心命令大全(日常高频使用) = | |||
<span id="列出文件"></span> | |||
== 3.1 列出文件 == | |||
<syntaxhighlight lang="bash"># 列出目录结构 | |||
rclone ls alist:aliyunpan/Data/ | |||
# 只打印文件路径(适合脚本) | |||
rclone lsf alist:aliyunpan/Data/</syntaxhighlight> | |||
<span id="下载文件最常用"></span> | |||
== 3.2 下载文件(最常用) == | |||
<span id="单文件下载解决403防盗链参数"></span> | |||
=== 单文件下载(解决403防盗链参数) === | |||
<syntaxhighlight lang="bash">rclone copy alist:aliyunpan/Data/backup.tar.gz ./ \ | |||
--no-traverse \ | |||
--header Referer:"https://www.aliyundrive.com" \ | |||
--progress</syntaxhighlight> | |||
参数说明: - <code>--no-traverse</code>:禁止批量遍历目录,减少API请求,防止风控 - <code>--header</code>:携带Referer绕过CDN防盗链 - <code>--progress</code>:显示实时下载进度 | |||
<span id="整目录同步双向备份"></span> | |||
=== 整目录同步(双向备份) === | |||
<syntaxhighlight lang="bash"># 云端 → 本地(只新增,删除远端文件不会删除本地) | |||
rclone sync alist:aliyunpan/Data/BackUp /home/bill/backup --progress | |||
# 严格双向同步,本地和云端完全一致(慎用--delete,会删除多余文件) | |||
rclone sync alist:aliyunpan/Data/BackUp /home/bill/backup --delete --progress</syntaxhighlight> | |||
<span id="上传本地文件到云盘"></span> | |||
== 3.3 上传本地文件到云盘 == | |||
<syntaxhighlight lang="bash">rclone copy ./opt_affine.tar.gz alist:aliyunpan/Data/</syntaxhighlight> | |||
<span id="文件移动重命名"></span> | |||
== 3.4 文件移动、重命名 == | |||
<syntaxhighlight lang="bash"># 云端内部移动文件 | |||
rclone moveto alist:old.tar.gz alist:aliyunpan/tmp/new.tar.gz</syntaxhighlight> | |||
<span id="校验文件完整性"></span> | |||
== 3.5 校验文件完整性 == | |||
<syntaxhighlight lang="bash">rclone check ./local.tar.gz alist:aliyunpan/Data/local.tar.gz</syntaxhighlight> | |||
----- | |||
<span id="rclone-fuse-挂载网盘到本地目录重点"></span> | |||
= 4. Rclone FUSE 挂载网盘到本地目录(重点) = | |||
把Alist网盘挂载成本地文件夹,像操作本地硬盘一样读写文件。 | |||
== 前置条件 == | |||
# 安装fuse工具 | |||
<syntaxhighlight lang="bash"># Ubuntu/Debian | |||
apt install fuse3 | |||
# Arch | |||
pacman -S fuse3</syntaxhighlight> | |||
<ol start="2" style="list-style-type: decimal;"> | |||
<li>开启普通用户权限 编辑 <code>/etc/fuse.conf</code>,取消注释:</li></ol> | |||
<syntaxhighlight lang="ini">user_allow_other</syntaxhighlight> | |||
<span id="后台挂载命令适配阿里云杜绝io报错403"></span> | |||
== 4.1 后台挂载命令(适配阿里云,杜绝IO报错+403) == | |||
<syntaxhighlight lang="bash"># 先清理旧挂载 | |||
pkill rclone | |||
fusermount -u /home/bill/mnt/aliyun | |||
# 执行挂载 | |||
rclone mount alist:aliyunpan /home/bill/mnt/aliyun \ | |||
--allow-other \ | |||
--vfs-cache-mode writes \ | |||
--poll-interval 0 \ | |||
--no-modtime \ | |||
--no-size \ | |||
--no-checksum \ | |||
--daemon</syntaxhighlight> | |||
<span id="参数详解针对阿里云403优化"></span> | |||
=== 参数详解(针对阿里云403优化) === | |||
{| class="wikitable" | |||
|- | |||
! 参数 | |||
! 作用 | |||
|- | |||
| <code>--vfs-cache-mode writes</code> | |||
| 只缓存写入,不预读取全部文件信息,避免批量触发阿里风控,不要用full | |||
|- | |||
| <code>--poll-interval 0</code> | |||
| 关闭自动轮询刷新目录,减少API调用 | |||
|- | |||
| <code>--no-modtime</code> | |||
| 不读取文件修改时间,规避WebDAV权限读取失败 | |||
|- | |||
| <code>--no-size --no-checksum</code> | |||
| 禁止预获取文件大小与校验,防止提前触发下载403 | |||
|- | |||
| <code>--daemon</code> | |||
| 后台守护进程运行 | |||
|} | |||
<span id="卸载挂载点"></span> | |||
== 4.2 卸载挂载点 == | |||
<syntaxhighlight lang="bash">fusermount -u /home/bill/mnt/aliyun</syntaxhighlight> | |||
<span id="开机自动挂载写入fstab"></span> | |||
== 4.3 开机自动挂载(写入fstab) == | |||
<syntaxhighlight lang="ini">alist:aliyunpan /home/bill/mnt/aliyun fuse.rclone allow_other,vfs-cache-mode=writes,poll-interval=0,no-modtime,_netdev 0 0</syntaxhighlight> | |||
<code>_netdev</code>:等待网络就绪再挂载,避免开机失败。 | |||
----- | |||
<span id="定时自动备份shell脚本-crontab"></span> | |||
= 5. 定时自动备份(Shell脚本 + Crontab) = | |||
<span id="一键备份脚本-backup.sh"></span> | |||
== 一键备份脚本 backup.sh == | |||
<syntaxhighlight lang="bash">#!/bin/bash | |||
# 云端路径 | |||
REMOTE="alist:aliyunpan/Data" | |||
# 本地保存目录 | |||
LOCAL="/home/bill/bak" | |||
LOG="/var/log/rclone-bak.log" | |||
echo "==== 开始同步 $(date) ====" >> $LOG | |||
rclone sync $REMOTE $LOCAL --delete --progress >> $LOG 2>&1 | |||
echo "==== 同步结束 $(date) ====" >> $LOG</syntaxhighlight> | |||
授权执行: | |||
<syntaxhighlight lang="bash">chmod +x backup.sh</syntaxhighlight> | |||
<span id="添加定时任务每天凌晨4点自动同步"></span> | |||
== 添加定时任务(每天凌晨4点自动同步) == | |||
<syntaxhighlight lang="bash">crontab -e</syntaxhighlight> | |||
写入: | |||
<pre class="cron">0 4 * * * /home/bill/backup.sh</pre> | |||
----- | |||
<span id="避坑指南你遇到的403问题总结"></span> | |||
= 6. 避坑指南(你遇到的403问题总结) = | |||
<span id="问题1rclone-copy-报错-403-forbidden"></span> | |||
== 问题1:rclone copy 报错 403 Forbidden == | |||
=== 根源 === | |||
Alist WebDAV策略为「302重定向」,直接返回阿里云CDN直链,触发防盗链。 ### 解决方案 1. Alist存储设置: - 开启 Web代理 - WebDAV策略改为:'''本地代理''' 2. Rclone配置 <code>vendor=other</code>,不要使用alist专属API。 3. copy命令增加 <code>--no-traverse</code> + Referer请求头。 | |||
<span id="问题2挂载目录空白ls看不到文件"></span> | |||
== 问题2:挂载目录空白,ls看不到文件 == | |||
# 不要用sudo执行mount命令,普通用户运行; | |||
# 开启 <code>/etc/fuse.conf</code> 里的 <code>user_allow_other</code>; | |||
# 不要使用 <code>--vfs-cache-mode full</code>,改用 <code>writes</code>。 | |||
<span id="问题3挂载后cp文件提示-inputoutput-error"></span> | |||
== 问题3:挂载后cp文件提示 Input/output error == | |||
文件读取触发阿里云直链403。 ✅ 优先使用 <code>rclone copy</code> 命令下载,不要直接读取挂载目录里的大压缩包。 | |||
<span id="问题4普通用户挂载失败root用户正常"></span> | |||
== 问题4:普通用户挂载失败,root用户正常 == | |||
权限限制:fuse不允许非root无权限挂载,开启 <code>user_allow_other</code> 即可解决。 | |||
----- | |||
<span id="常用命令速查表"></span> | |||
= 7. 常用命令速查表 = | |||
{| class="wikitable" | |||
|- | |||
! 功能 | |||
! 命令 | |||
|- | |||
| 查看远端文件 | |||
| rclone lsf alist:path | |||
|- | |||
| 下载单文件 | |||
| rclone copy remote:file ./ | |||
|- | |||
| 目录同步 | |||
| rclone sync remote:src local:dst | |||
|- | |||
| 挂载网盘 | |||
| rclone mount … –daemon | |||
|- | |||
| 卸载 | |||
| fusermount -u 挂载目录 | |||
|- | |||
| 杀掉后台进程 | |||
| pkill rclone | |||
|} | |||
----- | |||
<span id="进阶优化"></span> | |||
= 8. 进阶优化 = | |||
# '''带宽限速''' | |||
<syntaxhighlight lang="bash">rclone copy ... --bwlimit=10M</syntaxhighlight> | |||
<ol start="2" style="list-style-type: decimal;"> | |||
<li>'''断点续传大文件'''</li></ol> | |||
<syntaxhighlight lang="bash">rclone copy --contimeout=60 --retries=3</syntaxhighlight> | |||
<ol start="3" style="list-style-type: decimal;"> | |||
<li>多线程下载:</li></ol> | |||
<syntaxhighlight lang="bash">--transfers=4</syntaxhighlight> | |||
如果你需要,我可以再补充一份:多网盘(阿里云+Cloudflare R2+NAS)三副本异地备份的完整rclone脚本。 | |||
[[分类:Linux]] | [[分类:Linux]] | ||
2026年6月25日 (四) 19:36的最新版本
安装
命令参数
挂载
服务
文件服务
Rclone 完整实操教程(对接Alist+阿里云盘,解决403防盗链)
一、软件简介
Rclone 是跨云存储同步工具,支持阿里云盘、OneDrive、S3、Alist WebDAV 等几十种存储。 搭配 Alist 管理多网盘,是服务器备份、异地同步、文件挂载的首选方案。 本次环境:Arch / Ubuntu + Alist + 阿里云盘Open驱动 + Rclone WebDAV对接。
1. 安装 Rclone
一键安装(通用Linux)
curl https://rclone.org/install.sh | sudo bash验证版本
rclone version
2. 配置远端存储(对接Alist WebDAV)
方式1:交互式配置(新手推荐)
rclone config操作步骤: 1. 输入 n → 创建新远端 2. 名字填写:alist 3. 存储类型选择:webdav 4. URL:http://你的Alist地址/dav 5. Vendor(关键):填写 other,不要选alist(避免触发直链API导致403) 6. 填入Alist账号、密码 7. 不需要Bearer令牌,直接回车跳过 8. 确认保存,退出配置。
方式2:直接编辑配置文件
配置文件路径:~/.config/rclone/rclone.conf
[alist]
type = webdav
url = http://127.0.0.1:5244/dav
vendor = other
user = admin
pass = 你的Alist密码测试连通性
# 列出根目录
rclone lsf alist:
# 列出aliyunpan下所有文件
rclone lsf alist:aliyunpan/前提:Alist存储设置 1. Web代理:开启 2. WebDAV策略:本地代理(不再302直链跳转,彻底规避阿里云403 Forbidden)
3. 核心命令大全(日常高频使用)
3.1 列出文件
# 列出目录结构
rclone ls alist:aliyunpan/Data/
# 只打印文件路径(适合脚本)
rclone lsf alist:aliyunpan/Data/
3.2 下载文件(最常用)
单文件下载(解决403防盗链参数)
rclone copy alist:aliyunpan/Data/backup.tar.gz ./ \
--no-traverse \
--header Referer:"https://www.aliyundrive.com" \
--progress参数说明: - --no-traverse:禁止批量遍历目录,减少API请求,防止风控 - --header:携带Referer绕过CDN防盗链 - --progress:显示实时下载进度
整目录同步(双向备份)
# 云端 → 本地(只新增,删除远端文件不会删除本地)
rclone sync alist:aliyunpan/Data/BackUp /home/bill/backup --progress
# 严格双向同步,本地和云端完全一致(慎用--delete,会删除多余文件)
rclone sync alist:aliyunpan/Data/BackUp /home/bill/backup --delete --progress
3.3 上传本地文件到云盘
rclone copy ./opt_affine.tar.gz alist:aliyunpan/Data/
3.4 文件移动、重命名
# 云端内部移动文件
rclone moveto alist:old.tar.gz alist:aliyunpan/tmp/new.tar.gz
3.5 校验文件完整性
rclone check ./local.tar.gz alist:aliyunpan/Data/local.tar.gz
4. Rclone FUSE 挂载网盘到本地目录(重点)
把Alist网盘挂载成本地文件夹,像操作本地硬盘一样读写文件。
前置条件
- 安装fuse工具
# Ubuntu/Debian
apt install fuse3
# Arch
pacman -S fuse3- 开启普通用户权限 编辑
/etc/fuse.conf,取消注释:
user_allow_other
4.1 后台挂载命令(适配阿里云,杜绝IO报错+403)
# 先清理旧挂载
pkill rclone
fusermount -u /home/bill/mnt/aliyun
# 执行挂载
rclone mount alist:aliyunpan /home/bill/mnt/aliyun \
--allow-other \
--vfs-cache-mode writes \
--poll-interval 0 \
--no-modtime \
--no-size \
--no-checksum \
--daemon
参数详解(针对阿里云403优化)
| 参数 | 作用 |
|---|---|
--vfs-cache-mode writes
|
只缓存写入,不预读取全部文件信息,避免批量触发阿里风控,不要用full |
--poll-interval 0
|
关闭自动轮询刷新目录,减少API调用 |
--no-modtime
|
不读取文件修改时间,规避WebDAV权限读取失败 |
--no-size --no-checksum
|
禁止预获取文件大小与校验,防止提前触发下载403 |
--daemon
|
后台守护进程运行 |
4.2 卸载挂载点
fusermount -u /home/bill/mnt/aliyun
4.3 开机自动挂载(写入fstab)
alist:aliyunpan /home/bill/mnt/aliyun fuse.rclone allow_other,vfs-cache-mode=writes,poll-interval=0,no-modtime,_netdev 0 0_netdev:等待网络就绪再挂载,避免开机失败。
5. 定时自动备份(Shell脚本 + Crontab)
一键备份脚本 backup.sh
#!/bin/bash
# 云端路径
REMOTE="alist:aliyunpan/Data"
# 本地保存目录
LOCAL="/home/bill/bak"
LOG="/var/log/rclone-bak.log"
echo "==== 开始同步 $(date) ====" >> $LOG
rclone sync $REMOTE $LOCAL --delete --progress >> $LOG 2>&1
echo "==== 同步结束 $(date) ====" >> $LOG授权执行:
chmod +x backup.sh
添加定时任务(每天凌晨4点自动同步)
crontab -e写入:
0 4 * * * /home/bill/backup.sh
6. 避坑指南(你遇到的403问题总结)
问题1:rclone copy 报错 403 Forbidden
根源
Alist WebDAV策略为「302重定向」,直接返回阿里云CDN直链,触发防盗链。 ### 解决方案 1. Alist存储设置: - 开启 Web代理 - WebDAV策略改为:本地代理 2. Rclone配置 vendor=other,不要使用alist专属API。 3. copy命令增加 --no-traverse + Referer请求头。
问题2:挂载目录空白,ls看不到文件
- 不要用sudo执行mount命令,普通用户运行;
- 开启
/etc/fuse.conf里的user_allow_other; - 不要使用
--vfs-cache-mode full,改用writes。
问题3:挂载后cp文件提示 Input/output error
文件读取触发阿里云直链403。 ✅ 优先使用 rclone copy 命令下载,不要直接读取挂载目录里的大压缩包。
问题4:普通用户挂载失败,root用户正常
权限限制:fuse不允许非root无权限挂载,开启 user_allow_other 即可解决。
7. 常用命令速查表
| 功能 | 命令 |
|---|---|
| 查看远端文件 | rclone lsf alist:path |
| 下载单文件 | rclone copy remote:file ./ |
| 目录同步 | rclone sync remote:src local:dst |
| 挂载网盘 | rclone mount … –daemon |
| 卸载 | fusermount -u 挂载目录 |
| 杀掉后台进程 | pkill rclone |
8. 进阶优化
- 带宽限速
rclone copy ... --bwlimit=10M- 断点续传大文件
rclone copy --contimeout=60 --retries=3- 多线程下载:
--transfers=4如果你需要,我可以再补充一份:多网盘(阿里云+Cloudflare R2+NAS)三副本异地备份的完整rclone脚本。