dropbox同步linux文件夹(minio)
这篇实操记录围绕在 Linux 服务器上用 rclone 将 MinIO 数据目录同步到 Dropbox,适用于个人服务器或轻量对象存储需要做异地备份的场景。正文先给出 Debian/Ubuntu 安装 rclone 的方式,再说明配置 Dropbox remote 时如何在无浏览器的远程机器上选择手动授权,并借助本地有浏览器的电脑执行 rclone authorize 后把生成的 JSON token 粘贴回服务器。Dropbox 侧需要在开发者后台创建 App,出于安全考虑选择 App folder 而不是 Full Dropbox,并配置 localhost OAuth 回调地址;文章特别提醒文件夹权限和 Individual Scopes 必须在生成 token 前选好,否则 token 可能缺少 list 等权限,只能重新授权。同步命令使用 rclone sync /root/minio dropbox:minio,并通过 --size-only、时间戳思路和 --ignore-errors 避免哈希差异或临时文件导致任务中断,同时排除 data/.minio.sys 这类 MinIO 内部元数据目录。后续还说明 access_token、refresh_token 与 expiry 的关系,只要保留 refresh_token,rclone 可在访问令牌过期后自动刷新。最后通过 crontab 每小时执行同步并写入日志,读者可据此搭建一套简单、可检查、权限相对收敛的 MinIO 到 Dropbox 备份流程。
目录#
[[toc]]


安装rclone#
Debian/Ubuntu#
sudo apt update
sudo apt install rclone -y
或直接下载最新版#
curl https://rclone.org/install.sh | sudo bash#
配置rclone#
前面都是选择 dropbox 即可。
Storage> dropbox
Option client_id.
OAuth Client Id.
Leave blank normally.
Enter a value. Press Enter to leave empty.
client_id>
Option client_secret.
OAuth Client Secret.
Leave blank normally.
Enter a value. Press Enter to leave empty.
client_secret>
Edit advanced config?
y) Yes
n) No (default)
y/n> n
Use web browser to automatically authenticate rclone with remote?
-
Say Y if the machine running rclone has a web browser you can use
-
Say N if running rclone on a (remote) machine without web browser access
If not sure try Y. If Y failed, try N.
y) Yes (default)
n) No
y/n> n
Option config_token.
For this to work, you will need rclone available on a machine that has
a web browser available.
For more help and alternate methods see: https://rclone.org/remote_setup/
Execute the following on the machine with the web browser (same rclone
version recommended):
rclone authorize "dropbox"
Then paste the result.
Enter a value.
【这个是输入自己的 dropbox token 信息的】
也就是下面的一步的 dropbox 配置的 json 信息了
配置 dropbox#
网页地址:
https://www.dropbox.com/developers/apps/create
建立一个新的,根据需要选择自己的 dropbox 信息。
【这里为了安全起见,只选择 App folder 信息,不要选择 Full ,请注意!!】】


也可以去设置里面更改文件名称
[这里的 name 会 自动为你 在 /Apps/xxxxx (创建同名的信息的)


配置 oauth 信息


因为本地使用 rclone 所以直接使用 Localhost 地址:
建议选择两个,保证兼容性吧


勾选这三个才可以选择:


为方便起见,使用命令行操作,
rclone 配置 dropbox 有点复杂,关键就是在于回调地址与 accesstoken 与刷新操作的。
这里借助 mac 下载 rclone 并粘贴对应的 json 配置
brew install rclone
【注意】
注意一开始的时候就得先选择好所有 文件夹的权限以及 Individual Scopes
否则后面的 token 生成的时候就是没有 list 权限,只能重来的。【深有体会,我一直以为是 bug,后来才发现是 token 的问题】
rclone authorize dropbox 你的id 你的secret
注意在 dropbox 配置 http://localhost:53682/ ,注意斜杠。
点击链接进行验证即可。
同步命令#
【不加参数的话,可能会报错,因为两边的哈希计算好像不一样,所以使用 size+timestamp 来进行吧】 使用 size+时间戳校验(推荐)
rclone sync /root/minio dropbox:minio -P --size-only --ignore-errors --exclude 'data/.minio.sys/**'
注意有 token 失效的情况(那就复制 json)
rclone config
| 字段 | 作用 | 有效期 / 失效规则 |
|---|---|---|
| access_token | rclone 每次访问 Dropbox API 时使用的即时令牌 | 4 小时左右有效(expires_in: 14400 秒)。到期后不能再直接用 |
| refresh_token | 长期有效的刷新令牌,用来自动换取新的 access_token | 长期有效 (理论上一直有效,除非你在 Dropbox 网页上撤销权限,或者很长时间不用被官方回收) |
| expiry | 当前这枚 access_token 的到期时间(UTC+8 时间:2025-09-28 03:58:57) | 过了这个时间,access_token 会失效,但 rclone 会自动刷新 |
只要有 refresh_token 这一项,rclone 在 access_token 过期时会自动使用 refresh_token 向 Dropbox 申请新的 access_token 。
添加定时操作:
使用 vim 进行编辑,默认的 nano 太难用了
export EDITOR=vim
crontab -e
1 小时同步一次既能保证数据接近实时
0 * * * * /usr/bin/rclone sync /root/minio dropbox:minio -P --size-only --ignore-errors --exclude '/data/.minio.sys/**' >> /root/rclone-sync.log 2>&1
- 0 * * * * → 每小时的第 0 分执行。
- -size-only → 只比对文件大小,提高速度。
- -ignore-errors → 避免因个别临时文件导致任务中断。
- 输出日志到 /root/rclone-sync.log,方便查看同步记录。
查看定时:
crontab -l
34 1 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null
0 * * * * /usr/bin/rclone sync /root/minio dropbox:minio -P --size-only --ignore-errors --exclude '/data/.minio.sys/**' >> /root/rclone-sync.log 2>&1
/root/minio/data/.minio.sys/ 是 MinIO 自己的内部元数据目录 ,里面保存了如下内容:
- 桶信息、版本控制、usage-cache、临时文件
- 分布式锁、上传会话、删除标记等临时元数据
这些数据仅供 MinIO 自己在当前实例中运行时使用 。
一旦重新部署或迁移到另一台服务器,只要你的 data/ 里的真实对象文件 (例如 public/img/.png、public/tools/ .zip 等)都完整保留,MinIO 会在启动时重新生成必要的 .minio.sys 元数据 。
评论
还没有评论,来发第一个吧