服务器数据需要定期备份下 记录下过程

系统:Ubuntu
环境:LNMP
服务:Docker

需要备份网站数据 数据库 家目录文件

创建备份脚本文件夹

mkdir backup

下载gdrive 如果有新版 下载最新版本

wget https://github.com/prasmussen/gdrive/releases/download/2.1.1/gdrive_2.1.1_linux_386.tar.gz

解压

tar -zxvf gdrive_2.1.1_linux_386.tar.gz

查看解压情况

ls -al

新出现一个gdrive可执行文件

登入你的Google账户

./gdrive about

复制链接到浏览器打开 登入Google后复制token粘贴到ssh中 回车
会出现你的Google Drive情况

创建备份脚本

vi backup.sh

写入以下内容
#!/bin/sh
date=$(date -d "now" +%Y-%m-%d)
mkdir $date
cd $date
tar -zcvf wwwroot_$date.tar.gz /home/wwwroot/
tar -zcvf root_$date.tar.gz /root/
tar -zcvf Nginxconf_$date.tar.gz /usr/local/nginx/conf/
/usr/local/mysql/bin/mysqldump -u数据库用户名 -p数据库密码 --add-drop-table --complete-insert 数据库名 | gzip > sql_$date.gz
cd ..
./gdrive upload $date/wwwroot_$date.tar.gz
./gdrive upload $date/root_$date.tar.gz
./gdrive upload $date/Nginxconf_$date.tar.gz
./gdrive upload $date/sql_$date.gz
rm -rf ./$(date -d "yesterday" +%Y-%m-%d)
./gdrive delete wwwroot_$(date -d"3 day ago" +%Y-%m-%d)
./gdrive delete root_$(date -d"3 day ago" +%Y-%m-%d)
./gdrive delete Nginxconf_$(date -d"3 day ago" +%Y-%m-%d)
./gdrive delete sql_$(date -d"3 day ago" +%Y-%m-%d)

备份今日网站目录/home/wwwroot/ 家目录/root/ 配置文件目录/usr/local/nginx/conf/ 数据库

gdrive分别上传上述备份文件

删除昨天备份的存储在本地的文件

删除google drive上三天前的文件

创建crontab定时任务

crontab -e

写入

1 6 1 * * sh /userdir/backup/backup.sh

每月一号早上六点一分备份一次

附上shell脚本的日期表达

今天的日期

log=$(date -d "now" +%Y-%m-%d)
echo ${log}

获取昨天的日期

log2=$(date -d "yesterday" +%Y-%m-%d)
echo ${log2}

或者

log2=$(date -d "1 day ago" +%Y-%m-%d)
echo ${log2}

获取前天的日期

log3=$(date -d"2 day ago" +%Y-%m-%d)
echo ${log3}

获取具体日期的前几天

log4=$(date -d"15 day ago 2017-04-16" +%Y-%m-%d)
echo ${log4}

参考

https://www.homedt.net/21823.html
https://bynss.com/wordpress/301088.html
https://www.cnblogs.com/chenmh/p/5300370.html
https://github.com/prasmussen/gdrive/blob/master/README.md#downloads
https://blog.csdn.net/qq_24309787/article/details/93851744