VPS自动备份脚本,同时上传到多个云盘。

首先安装 mailx
然后配置 mail 使用 163 发送邮件 (末尾添加下面参数)

vim /etc/mail.rc
# send email
set from=server@163.com
set smtp=smtp.163.com:25
set smtp-auth=login
# 授权用户
set smtp-auth-user=server@163.com
# 授权密码
set smtp-auth-password=passwd
# 忽略验证
set ssl-verify=ignore
set nss-config-dir=/etc/maildbs/​

安装rclone支持 上传到 Googledrive 和 onedrive , rclone配置方法:
使用dropbox-upload上传脚本上传到 dropbox
https://raw.githubusercontent.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh
例如:下面脚本中备份笔记web和数据库同时上传到 dropbox Googledrive onedrive 三个云盘。

#############################  备份到 多个云盘脚本 #######################################
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

####################################################  配置变量 #####################################################################
# 添加中文变量, 邮件支持中文
export LANG=en_US.UTF-8
# 记录备份开始时间
start=`date +%Y-%m-%d_%H:%M:%S`

# 文件 变量
New_DIR=/backup/$(date +%Y-%m-%d)
Old_DIR=/backup/$(date -d -30day +%Y-%m-%d)
Web=Web_$(date +%Y%m%d).tar.gz
Note_DB=leanote_db_$(date +%Y%m%d).tar.gz
DBNAME1=leanote
DB_USER=backup
DB_PASS=passwd

# 打包项目web目录
cd /data/backup/site
tar zcf Web_$(date +%Y%m%d).tar.gz /data/webroot/hahabao
# 备份数据库到指定目录。
mysqldump -u $DB_USER -p$DB_PASS $DBNAME1 > /data/backup/db_backup/$Note_DB

#######################################################   上传到 Dropbox ########################################################
# dropbox 新建一个以日期命名的文件夹
/data/app/Dropbox/dropbox_uploader.sh mkdir $New_DIR
#开始上传
/data/app/Dropbox/dropbox_uploader.sh upload /data/backup/site/$Web $New_DIR
/data/app/Dropbox/dropbox_uploader.sh upload /data/backup/db_backup/$Note_DB $New_DIR

#######################################################   上传到 Googledrive ########################################################
# 在google driver 新建一个以日期命名的文件夹
rclone mkdir hahabao_google:$New_DIR
# 开始上传
rclone copy  /data/backup/site/$Web hahabao_google:$New_DIR
rclone copy /data/backup/db_backup/$Note_DB hahabao_google:$New_DIR

#######################################################   上传到 onedrive ########################################################
# 在 onedriver 新建一个以日期命名的文件夹
rclone mkdir hahabao_onedrive:$New_DIR
# 开始上传
rclone copy  /data/backup/site/$Web hahabao_onedrive:$New_DIR
rclone copy /data/backup/db_backup/$Note_DB hahabao_onedrive:$New_DIR

####################################################### 备份完成,邮件通知 ###########################################################
# 记录结束时间
end=`date +%Y-%m-%d_%H:%M:%S`
if [ $? -eq 0 ]
then
    echo -e "服务器数据已经备份到网盘,请知晓!\n开始时间:$start\n结束时间:$end" | /bin/mail -s "VPS备份通知" xxx@qq.com
fi

##############################################   删除本地和云盘旧数据  ########################################################
# 删除本地旧数据, 
find /data/backup -name "*.gz" -type f -mtime +0 -exec rm {} \; > /dev/null 2>&1

# 删除云盘旧数据
rclone delete hahabao_google:$Old_DIR
rclone delete hahabao_onedrive:$Old_DIR
/data/app/Dropbox/dropbox_uploader.sh delete $Old_DIR

##########################################################  END 记录日志 时间 #############################################################################
echo "----------------------------------------------------------------------------"
endDate=`date +"%Y-%m-%d %H:%M:%S"`
echo "★[$endDate] Successful"
echo "----------------------------------------------------------------------------"

Leave a Comment