本文首发于只抄博客,欢迎点击原文链接了解更多内容。

前言

Rclone 是一个支持 70 多种云存储的备份工具,包括常见 S3 对象存储、WebDav、OneDrive 网盘等。设置好对应云存储后,只需通过 rclone copy 等简单的命令,即可将本地文件同步至云存储中

安装

Rclone 的安装十分简单,可以选择官方提供的一键脚本一直安装,也可以直接下载二进制文件手动运行,选择其中一种方式即可

一键脚本

curl https://rclone.org/install.sh | sudo bash

手动安装

  1. 进入官方文档下载对应平台架构的二进制文件
  2. 将 rclone 文件移动到 /usr/bin 目录
  3. 赋予权限 chmod 755 /usr/bin/rclone

配置 Rclone

Rclone 有提供官方的配置向导,根据提示填写对应的内容,即可生成配置文件;如果对 Rclone 配置比较熟悉的则可以直接编辑配置文件。下面分别用配置向导添加 OneDrive 网盘和配置文件直接添加 Minio S3 对象存储来进行演示

配置向导

  1. 输入 rclone config

  2. 输入字母 n,来新增一个云存储

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>
  1. 给云存储起个名字 (后续用命令行操作时会用到)
Enter name for new remote.
name> onedrive
  1. 接着会出现支持的云存储列表,输入 33 来选择 OneDrive (以实际显示的顺序为准)
33 / Microsoft OneDrive
   \ (onedrive)
  1. Client Id 和 Client Secert 可以直接回车使用默认值
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>
  1. 选择 OneDrive 的类型,一般输入 1 选择 Microsoft Cloud Global
Option region.
Choose national cloud region for OneDrive.
Choose a number from below, or type in your own string value.
Press Enter for the default (global).
 1 / Microsoft Cloud Global
   \ (global)
 2 / Microsoft Cloud for US Government
   \ (us)
 3 / Microsoft Cloud Germany
   \ (de)
 4 / Azure and Office 365 operated by Vnet Group in China
   \ (cn)
  1. 高级设置,输入 n 跳过
Edit advanced config?
y) Yes
n) No (default)
y/n>
  1. 下面需要打开 OneDrive 网页给 Rclone 授权,由于一般的 Linux 机器没有浏览器,所以输入 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
  1. 关键步骤:我们需要在 Windows 上也下载一个 Rclone,然后在 Rclone 的目录运行 .\rclone.exe authorize "onedrive" "xxxxxxxxxxxxxx" 后会弹出浏览器,登录 OneDrive 账号后,命令行中会显示出授权码,将其填入下方的 config_token 中即可
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 "onedrive" "xxxxxxxxxxxxxx"
Then paste the result.
Enter a value.
config_token> 
  1. 后续步骤一路 y 即可,这样 OneDrive 就添加到我们的 Rclone 中了

配置文件

输入 rclone config 后,会在 .config/rclone 目录中生成一个 rclone.conf 文件,如果我们熟悉 Rclone 配置的话,也可以直接新建编辑该文件,同样是可以生效的

以配置 Minio 为例,参照官方文档的 S3 对象存储部分,通过 vim .config/rclone/rclone.conf 编辑该文件,直接在其中填入云存储的相关配置信息即可

[minio]
type = s3
provider = Minio
env_auth = false
access_key_id = USWUXHGYZQYFYFFIT3RE
secret_access_key = MOJRH0mkL1IPauahWITSVvyDrQbEEIwljvmxdq03
region = us-east-1
endpoint = http://192.168.1.106:9000
location_constraint =
server_side_encryption =

使用 Rclone

直接使用

完成上述配置后,就可以直接使用 rclone copy 等命令将本地文件上传到云存储中

例如下面这行命令就是把 /path/to/files 上传至 minio 中的 bucket 桶中,其中 : 前的代表上面配置的云存储,后面的代表文件夹名或者桶名

rclone copy /path/to/files minio:bucket

定时任务

除此之外,我们还希望 Rclone 能定时运行,将文件备份到指定的云存储,这时候就需要用到 Linux 的 crontab 了

  1. 新建一个 sh 脚本,例如 rclone.sh,然后将上述的备份命令写入其中
#!/bin/bash
rclone copy /path/to/files minio:bucket
  1. 赋予运行权限 chmod 755 rclone.sh
  2. 添加定时任务 crontab -e
0 0 * * *  /root/rclone.sh >> /root/rclone.log 2>&1
  1. 保存后,每天的 0 点,就会自动运行 rclone.sh 脚本,将文件备份到我们指定的云存储中了
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐