Rclone 是一个命令行工具, 用于在不同网盘和对象存储之间同步数据.
本文主要介绍 rclone copy
的用法.
注: Rclone 支持 50 多种网盘和对象存储, 你能想到的国外的网盘基本都支持, 这是受支持列表, 操作方法都是一样的: https://rclone.org/overview/, 如果你想拷贝别的网盘的数据也可以参考下.
注意: 进行文件对拷会消耗服务器大量流量, 推荐使用不限流量的服务器,我这里使用的是 OVH.CA $0.97 传家宝.
准备工作
请切换到 root 用户进行操作
sudo -i
更新软件包
apt update && apt upgrade -y
安装 rclone, 这里使用官方的一键脚本
curl https://rclone.org/install.sh | sudo bash
配置 rclone
输入 rclone config
开始配置
输入 n
选择 New Remote
(添加新的远程路径)
为 OneDrive 输入 onedrive
输入 31
选择 Microsoft OneDrive
(你那里不一定是, 输入你那里显示 OneDrive 的序号即可)
下一步直接敲两个回车使用默认ID或者创建自己的 Client 客户端, 这里附上官方教程:
对于大多数人, 在下一步输入 1
选择 “Microsoft Cloud Global”, 如果你是世纪互联运营的 OneDrive 中国版, 输入 4
显示 Edit advanced config
的时候输入 n
下一步是问你是否使用本机进行浏览器页面验证, 因为我们是在远程服务器上操作, 选择 n
在你的电脑上使用 curl https://rclone.org/install.sh | sudo bash
安装 rclone
打开命令行输入 rclone authorize "onedrive"
, 登录要同步的账号进行授权, 然后复制命令行输出的内容, 从 {"access_token"
开始, 一直到 <---End paste
的左箭头之前.
把复制的内容粘贴到服务器的命令行中, 在下一步选择类型输入 1
, (OneDrive Personal or Business)
一直回车即可.
然后输入 n
, 设置名称为 googledrive
, 按照提示添加即可, 过程类似, 也需要到电脑上操作获取授权 token.
需要注意的是, 如果你使用团队盘, 需要在授权账号前先为你用于授权 rclone 到账号添加团队盘成员.
至少要为使用 rclone 的账号授权为 content manager (内容管理员)
拷贝文件
两个云盘都设置完成后, 在命令行输入
rclone copy onedrive: googledrive:
// 被拷贝的对象在前, 拷贝目的地在后
如果你想拷贝指定目录, 例如 /data
到 /backup/data
rclone copy onedrive:/data googledrive:/backup/data
注意: 如果你只是对拷文件, 没有任何必要将云盘挂载到本地
开启一个新的 SSH 窗口, 输入 top / htop / btop 任意一个观察运行状态, 确保负载不会影响服务器正常运行
看下面两个地方就可以 (左图里是 btop, 其他两个类似右图, 的整体负载显示在最上方)
如果你看到占用极低, 并且你对你的服务器很有信心, 可以增加参数 --transfers 来指定同时传输文件个数
例如 rclone copy onedrive: googledrive: --transfers=10
后台拷贝
因为 Linux 默认在结束 SSH 会话后会关闭通过命令行前台运行的程序, 所以我们需要借助 screen 软件包设置自动运行. (每行分别输入)
apt install screen -y
screen -S transfer
第二行命令会开启一个叫 transfer 的会话, 输入后会自动切换过去
在这个会话里再次输入 rclone 的命令, 会继续之前的操作
rclone copy onedrive: googledrive: --transfers=10
现在你就可以关闭当前的 SSH 会话了, 如果你不放心, 可以重新登录服务器运行 btop / htop / top 查询一下 rclone 程序是否还在高负载运行.
当你返回来想继续操作的时候, 输入 screen -r transfer
恢复这个用于 rclone 的回话
如果你忘了了会话名称, 输入 screen -ls
查询当前所有 screen 开启的会话
输入 exit
可以退出 screen 开启的会话回到主机的命令行
科普一下: 如果你在主机的命令行直接执行 exit, 你会退出当前 ssh 会话 (例如你用 root 登录的, exit 就退出 ssh 了, 你用 debian 用户(非特权用户)登录的, 通过
sudo-i
切换到root, 就是从 root 退回到非特权用户), screen 里面的 ssh 会话同理.
注意: 因为 Google Drive 的限制, 你的每个账号在 24 小时之内最多只能复制约 750GB 数据, 但如果是团队盘, 你可以通过分享给多个账号(包括 Gmail 个人用户)的方式, 分别计算 750GB.