如果你打算长期运营网站,那么一定要做好网站数据的备份工作。

数据是无价的,它是你的互联网资产,丢失了就很难找回来。瓦力箱子之前曾写过一篇网站备份教程,但那只是每天将网站和数据库备份的服务器磁盘。如果服务器出了问题,而你又没有将文件下载到本地电脑硬盘,同样会造成数据丢失。

年初买了台RackNerd性价比非常高VPS服务器年付$12美元,于是把网站迁移过去。迁过去后为防止网站数据丢失,我先利用宝塔面板将网站文件和数据库备份到服务器磁盘,然后用rclone挂载OneDrive网盘把备份文件同步过来,实现双重备份。

这篇文章比较长,设置也有点繁琐。但设置成功后就会自动执行,以后就省心了。

1. 准备工作

在教程开始之前,首先要做一些准备工作,主要有三点。

首先就是注册一个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.

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网盘,输入名称rn2od

name> rn2od

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

Storage> 26

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
====                 ====
lh2od                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 rn2od:rnbak/database
rclone sync /www/backup/site rn2od:rnbak/site

然后按Esc键退出编辑模式,输入:wq保存并退出。

脚本首行是注释,上面的脚本只包含两条命令,第二行是将/www/backup/database目录及里面的数据库备份文件,同步到OneDrive的rnbak/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盘就能看到备份文件已经同步过来了。

好了以上就是利用Rclone程序,将网站和数据库备份文件同步到OneDrive网盘的教程。这样VPS服务器和网盘都有网站备份,双重备份更安全。如果你不放心,还可以每周将Onedrive网盘里的文件手动下载到本地电脑。

最后再提醒下,建议每隔一段时间去Onedrive盘查看下同步是否正常,因为即使是Rclone程序也有可能出问题的。

类似文章