首页 瞎搞

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


文章评论

目录