1 配置坚果云webdav
首先我们在坚果云后端创建一个备份应用,点击进入 账户信息 - 安全选项
,然后点击下面的添加应用,随便填写一个名字,然后复制生成的应用密码,最后在坚果云根目录下创建一个目录名为 `bitwarden_backup 作为我们后续的同步文件夹
2 服务器配置webdav
安装rclone
curl https://rclone.org/install.sh | sudo bash
安装fuse
# Debian/Ubantu
apt-get update && apt-get install -y fuse
# CentOS
yum install -y fuse
配置webdav,编号可能有变,根据实际选择
#配置webdav
rclone config
#新建
n
#创建webdav,数字可能会变动
40
#输入坚果云webdav地址
https://dav.jianguoyun.com/dav/
#输入webdav类型,这里选择5 其他
5
#输入坚果云的用户名
xxx
#选择密码类型,这里选y,自己输入密码
y
#输入坚果云生成的密码
xxx
#然后一路回车结束
3 挂载网盘
创建挂载目录
mkdir /mnt/rclone_bitwarden_backup
3.1 手动挂载
#挂载
#rclone mount <网盘名称:网盘路径> <本地路径> [参数] --daemon
#取消挂载
#fusermount -qzu <本地路径>
rclone mount jianguoyun:/bitwarden_backup /mnt/rclone_bitwarden_backup --allow-non-empty --daemon --vfs-cache-mode full --log-file /var/log/rclone_bitwarden_backup.log
#查看挂载情况
df -h
3.2 开机自动挂载
下载脚本
wget -N git.io/rcloned && nano rcloned
修改脚本内容
NAME="jianguoyun" #Rclone配置时填写的name
REMOTE='/bitwarden_backup' #远程文件夹,网盘里的挂载的一个文件夹,留空为整个网盘
LOCAL='/mnt/rclone_bitwarden_backup' #挂载地址,VPS本地挂载目录
设置开机自启
mv rcloned /etc/init.d/rcloned
chmod +x /etc/init.d/rcloned
# Debian/Ubuntu
update-rc.d -f rcloned defaults
# CentOS
chkconfig rcloned on
bash /etc/init.d/rcloned start
管理
#开始挂载
bash /etc/init.d/rcloned start
#停止挂载
bash /etc/init.d/rcloned stop
#重新挂载
bash /etc/init.d/rcloned restart
#查看日志
tail -f /$HOME/.rclone/rcloned.log
卸载自动挂载
bash /etc/init.d/rcloned stop
# Debian/Ubuntu
update-rc.d -f rcloned remove
# CentOS
chkconfig rcloned off
rm -f /etc/init.d/rcloned
4 创建计划任务备份bitwarden
因为挂载的本地目录为/mnt/rclone_bitwarden_backup
,所以这里在宝塔中创建个计划任务,定时将需要备份的文件拷贝到这个目录下,创建shell脚本:
#! /bin/bash
#本地挂载路径
backupDir=/mnt/rclone_bitwarden_backup/
#备份的文件名
backupFilename=db.sqlite3
#仅保留多少天数据
days=60
filename=${backupFilename%.*}
ext=${backupFilename##*.}
re="${filename}_(.*)[.]${ext}"
#备份今天的文件
cp -arf /www/wwwroot/bitwarden_data/db.sqlite3 ${backupDir}/${filename}_$(date +%Y%m%d).${ext}
delDay=$(date +"%Y%m%d" -d "-$days days")
delTimestamp=`date -d "$delDay" +%s`
for file in ${backupDir}*
do
if [[ $(basename $file) == ${filename}_*.${ext} ]];
then
if [[ $file =~ $re ]];
then
fileTime=${BASH_REMATCH[1]}
fileTimestamp=`date -d $fileTime +%s`
if [ $fileTimestamp -le $delTimestamp ]
then
echo " delete $file"
rm -rf $file
fi
fi
fi
done
如果需要打包整个bitwarden_data文件夹使用:
#! /bin/bash
#本地挂载路径
backupDir=/mnt/rclone_bitwarden_backup/
#备份的文件夹名
backupFilePath=/www/wwwroot/bitwarden_data/
#仅保留多少天数据
days=60
re="bitwarden_data_(.*)[.]tar[.]gz"
#备份今天的文件
tar -czvPf ${backupDir}/bitwarden_data_$(date +%Y%m%d).tar.gz $backupFilePath
delDay=$(date +"%Y%m%d" -d "-$days days")
delTimestamp=`date -d "$delDay" +%s`
for file in ${backupDir}/*
do
if [[ $(basename $file) == bitwarden_data_*.tar.gz ]];
then
if [[ $file =~ $re ]];
then
fileTime=${BASH_REMATCH[1]}
fileTimestamp=`date -d $fileTime +%s`
if [ $fileTimestamp -le $delTimestamp ]
then
echo " delete $file"
rm -rf $file
fi
fi
fi
done
评论已关闭