Rclone开机自动挂载onedrive备份网站数据

因为网站数据没备份重新搞一次有点头大,手里有几个onedrive账号,刚好用来备份。

1. 获取微软账号的client_id和client_secret

访问https://portal.azure.com/#blade/Microsoft_AAD_RegisteredApps/ApplicationsListBlade点击应用注册→新注册

名称随意,帐户类型选第三个,选Web,URL自己填一个,点击注册

在返回的页面将看到应用程序(客户端) ID,这个就是等会儿要用的client_id。

点击API权限→添加权限→Microsoft Graph

点击委托的权限,勾选Files.Read, Files.ReadWrite, Files.Read.All, Files.ReadWrite.All, offline_access, User.Read 和 Sites.Read.All(可选),添加权限

添加客户端密码(client_secret),点击证书和密码→新客户端密码,填入说明和截至期限,有效期最长2年,点击添加。

值即为client_secret。

2.安装配置rclone

因为VPS没浏览器,所以本地Windows和VPS都需要装rclone,下载地址在这里rclone

VPS安装

sudo -v ; curl https://rclone.org/install.sh | sudo bash
rclone config

会让你输入一个名字,随便输入一个。存储我这里选的35

client_id和client_secret填入上面微软注册应用生成的。我这个是国际版选的1,编辑高级配置n,是否用浏览器(web browser)验证,选择n

将生成的rclone authorize这一大长串儿复制,

windows解压下载的rclone压缩包,在目录打开终端。粘贴上面复制的东西,rclone换成.\rclone.exe

将会自动打开浏览器,登录验证就行。

接受会看到这个。

把终端生成的token复制粘贴到VPS填入config_token处

最后回车配置就生成好了

3.开机自动挂载onedrive

创建挂载目录

mkdir /onedrive

创建/usr/local/bin/rclone.sh文件,写入

#!/bin/bash
rclone mount syncone: /onedrive --allow-other --allow-non-empty --vfs-cache-mode writes

添加执行权限chmod +x /usr/local/bin/rclone.sh

创建/etc/systemd/system/rclone-mount.service文件,写入

[Unit]
Description=Rclone Mount Service
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
ExecStart=/usr/local/bin/rclone.sh
ExecStop=/bin/fusermount -u /one
Restart=on-failure
User=root

[Install]
WantedBy=multi-user.target

开机自启

systemctl enable rclone-mount.service

重启验证。

4. 自动备份

mkdir /backup
vi /backup/backup.sh
chmod +x /backup/backup.sh
#写入

#!/bin/bash
# The script is used to backup wordpress and database;
DATE=`date +%Y-%m-%d_%s`
cd /backup
/usr/local/mysql/bin/mysqldump 数据库名字 > db_$DATE.sql
tar -zc /var/www/wordpress db_$DATE.sql | gpg -er [email protected] > wordpress.$DATE.tgz.gpg       #这一步是用gpg加密网站文件
/bin/rm -f db_$DATE.sql 
/bin/cp -ar wordpress.$DATE.tgz.gpg /onedrive/
find /backup/ -mtime +7 -type f -name \*.tgz.gpg -exec rm -f {} \;  #删除7天以上备份
exit 0  

创建备份数据库用户并授予权限

mysql> CREATE USER 'backupuser'@'localhost' IDENTIFIED BY '这里是数据库用户密码';
mysql> GRANT PROCESS ON *.* TO 'backupuser'@'localhost' ;
mysql> GRANT SELECT, LOCK TABLES, SHOW VIEW, EVENT, TRIGGER ON `dbname`.* TO 'backupuser'@'localhost' ;

创建~/.my.cnf文件写入数据库用户名和密码

[mysqldump]
user=backupuser
password=xxxxxx

crontab -e 设置定时任务,每天凌晨2点备份一次。

0 2 * * * bash /backup/backup.sh &> /backup/backup.log

大功告成。

 

参考链接:

https://rclone.org/onedrive/

阅读剩余
THE END