通过rclone挂载onedrive每天定时同步VPS数据

通过rclone挂载onedrive每天定时同步VPS数据

V+变量
2025-01-15 / 1 评论 / 3 阅读 / 正在检测是否收录...

1. 准备工作

在教程开始之前,首先要做一些准备工作,主要有三点。
首先就是注册一个OneDrive网盘账号,如果你已经有了可以忽略这点。其次是可以利用lnmp添加OneDrive作为备份文章备份文件。最后是一句话带你认识Rclone这个软件,Rclone是个非常强大的云存储文件管理命令行程序。

2. 安装Rclone

Rclone安装非常简单,远程登录VPS服务器后,只需执行一条命令:

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

安装成功后的提示如下。

rclone v1.56.0 has successfully installed.
Now run "rclone config" for setup. Check https://rclone.org/docs/ for more details.

需要再安装一下需要的包

apt install fuse3 -y

3. OneDrive授权

这一步是在本地电脑Windows系统操作,进入Rclone下载页面,点击下载Windows版本的Rclone软件,选择Intel/AMD-64Bit即可。如果是32位操作系统,那么选择32Bit的。
下载后将全部文件解压到D:\rclone文件夹,打开CMD命令窗口,依次输入下面两条命令。

cd /d d:\rclone
rclone authorize "onedrive"

第二条命令输入完回车后会自动打开浏览器,登录你的OneDrive账号,点击“是”按钮同意授权。成功后返回到CMD命令窗口就能看到长串授权码,即花括号以及里面的内容。
将授权码复制下来保存备用,有效期1个小时。

Paste the following into your remote machine --->
{"access_token":"EwCAA8l6BAAUwihrrCrmQ4wuIJX5mbj7rQla6TUAAS7oJFl1pmRc4whIlOj5am6oPQ+zf1kOcygsi5JHL2IgXh55prjh3r6P/fSZr8K9UJ58Pksh1YTJkzL/kHywyZnEvM8kDr55B1J//SXLJ1sGNsNR9vH0Rmz9xMrnl6GFrF8z+UQxi+GL3L3MpBN3NenacA0+pmVXKk8hghj64a8xxEFhlc+b0LJCp4yMg+96548752OPQwLZEPikbJ1zB5Wm5IUzuq03zNKa5lOicGET0l8zWW+itYg2Ca+mCS9DRm5e8NcPL5yiLZmRIm4vCI3pIQGKxEKghQG2lLmjMnWJj8BMotxH9Px2/XWs2TJ3BdLbuX2EjdYy8MNoBbaYXafe3uHx!UpdOwFHCiKnJqYomn*8cCFNP7RM1W8DMzXNBAlgTnuaRo6v7xjxFX3xIrXWonyCk*l1Z7glOXEmRS","expiry":"2021-09-16T15:47:47.8171297+08:00"}
<---End paste

4. 配置Rclone

和安装相同,Rclone配置也只需要一条命令。不同的是后续操作比较繁琐,需要有耐心哈。在配置过程中如果输错字母,可以按Ctrl+Backspace删除。
我们首先在VPS远程登录窗口输入下面命令:

rclone config

新建远程网盘连接,输入字母n回车。

No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n

给远程网盘起个名字,因为我是RackNerd服务器备份到OneDrive网盘,输入名称onedrive

name> onedrive

接着会出现一系列网盘名字列表,我输入26选择OneDrive网盘。需要注意的是这个序号以后可能会有变动,填写的时候再次确认下。

Storage> 36

Client ID无需设置,直接回车使用默认的。

OAuth Client Id
Leave blank normally.
Enter a string value. Press Enter for the default ("").
client_id>

Client Secret也不用填写,回车使用默认值。

OAuth Client Secret
Leave blank normally.
Enter a string value. Press Enter for the default ("").
client_secret>

选择OneDrive网盘服务器的区域,我用的是国际版输入1,如果你用的是世纪互联,那就输入4

Choose national cloud region for OneDrive.
Choose a number from below, or type in your own value
 1 / Microsoft Cloud Global
   \ "global"
 2 / Microsoft Cloud for US Government
   \ "us"
 3 / Microsoft Cloud Germany
   \ "de"
 4 / Azure and Office 365 operated by 21Vianet in China
   \ "cn"
region> 1

不需要设置高级配置,输入n后回车

Edit advanced config? (y/n)
y) Yes
n) No (default)
y/n> n

因为我们是远程连接VPS主机,不能自动配置,填写n回车。

Use auto config?
 * Say Y if not sure
 * Say N if you are working on a remote or headless machine
y) Yes (default)
n) No
y/n> n

这时候将第二步获取的OneDrive授权码粘贴到config_token>后面,回车。

Enter a string value. Press Enter for the default ("").
config_token>

选择OneDrive网盘,输入1

Choose a number from below, or type in an existing value
 1 / OneDrive Personal or Business
   \ "onedrive"
 2 / Root Sharepoint site
   \ "sharepoint"
 3 / Sharepoint site name or URL (e.g. mysite or https://contoso.sharepoint.com/sites/mysite)
   \ "url"
 4 / Search for a Sharepoint site
   \ "search"
 5 / Type in driveID (advanced)
   \ "driveid"
config_type> 1

Rclone找到一个OneDrive盘,输入y确定回车。

Drive OK?
Found drive "root" of type "personal"
URL: https://onedrive.live.com/?cid=a40d32de9
y) Yes (default)
n) No
y/n> y

确认OneDrive网盘的所有信息,输入y回车。

[rn2od]
type = onedrive
token = {"access_token":"EwBoA8l6BAAU6k7qJd7*3wELXHy...
drive_id = a40d32de9
drive_type = personal
--------------------
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> y

配置完成后Rclone显示远程网盘列表,至此配置结束,输入q退出。

Current remotes:
Name                 Type
====                 ====
onedrive                onedrive
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> q

经过上面的设置后,我们就成功地将Rclone连接挂载到OneDrive网盘啦。

5. 编写同步脚本

这个脚本也不算麻烦,首先输入下方命令新建同步脚本。

vi rclone.sh

按Insert键进入编辑模式,粘贴以下三条内容。

#!/bin/bash
rclone sync /www/backup/database onedrive:bak/database
rclone sync /www/backup/site onedrive:bak/site

然后按Esc键退出编辑模式,输入:wq保存并退出。
脚本首行是注释,上面的脚本只包含两条命令,第二行是将/www/backup/database目录及里面的数据库备份文件,同步到OneDrive的bak/database文件夹里。第三行是同步网站备份文件。
接着为新建的脚本增加执行权限。

chmod +x rclone.sh

6. 设置定时任务

脚本编写成功后,需要设置定时任务来运行脚本,才能完成自动备份。
在设置之前,首先将VPS服务器的时区设置为东八区,与我们的作息相同。如果你是国内的VPS或云服务器通常不需要设置。

cp /usr/share/zoneinfo/Asia/Chongqing /etc/localtime

输入y确定。
接下来我们设置定时任务,输入下方命令。

crontab -e

按Insert键进入编辑模式,在尾部添加一行即可。

35 1 * * *  /root/rclone.sh >> /root/rclone.log 2>&1

这行内容的意思是,每天凌晨1点35分,运行rclone.sh脚本,将网站和数据库备份文件同步到OneDrive网盘。
然后等到第二天,登录OneDrive盘就能看到备份文件已经同步过来了。

7. 将OneDrive挂载到本地(可选)

创建需要挂载的文件夹

mkdir /onedrive

后台运行挂载命令

1 挂载onedrive到home/onedrive

rclone mount onedrive: /home/onedrive --allow-other --allow-non-empty --vfs-cache-mode writes --daemon

2 挂载123pan到home/123pan

rclone mount 123pan: /home/123pan --allow-other --allow-non-empty --vfs-cache-mode writes --daemon

挂载成功后输入df -h会显示挂载信息

root@v2202411242922300191:/home# df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            3.9G     0  3.9G   0% /dev
tmpfs           791M  656K  791M   1% /run
/dev/vda3       503G   81G  402G  17% /
tmpfs           3.9G     0  3.9G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
123pan:         1.0P     0  1.0P   0% /home/123pan
onedrive:       1.1T  922M  1.1T   1% /home/onedrive

8 卸载挂载

fusermount -u /home/123pan
0

评论 (1)

取消
  1. 头像

    [...]#Values Setting END! 默认备份文件保存3天,可以修改backup.sh里的-3day为你指定的天数。4 挂载onedrive为本地硬盘可以参考本站之前的文章[通过rclone挂载onedrive每天定时同步VPS数据](https://www.vvars.com/Website-construction/Set-up-a-daily-scheduled-task-to-sync[...]

    回复