从12年学习建站到现在也差不多7年了,中间断断续续因为主机商跑路、自己操作失误等原因造成了多次的网站数据丢失。如果做好备份,说不定还能看到当年大学时期叫我们安装mysql的笔记。之间我介绍过《自动备份网站到DropBox》,但是现在把国外的站点都关了,主要的站点也都在国内阿里云,于是这个路子行不通了。于是通过关键字wordpress 备份 oss。找到了一个工具ossfs。
1.环境说明
- CentOS7.5
- 自建LNMP环境
- 和阿里云ESC同一个节点的OSS(设置低频访问)
- 获取到access_key_id和access_key_secret
2.安装ossfs
ossfs并不能通过yum直接安装,需要下载操作系统对应的rpm包来安装。
下载ossfs_1.80.5_centos7.0_x86_64.rpm
wget https://github.com/aliyun/ossfs/releases/download/v1.80.5/ossfs_1.80.5_centos7.0_x86_64.rpm
安装依赖
yum install fuse yum install fuse-libs
安装ossfs
rpm -ivh ossfs_1.80.5_centos7.0_x86_64.rpm
3.配置并挂载ossfs
创建配置文件
echo yourBucketName:access_key_id:access_key_secret > /etc/passwd-ossfs chmod 640 /etc/passwd-ossfs
创建目录
mkdir /back
创建这个目录就是为了将oss挂载到该目录,以达到“扩容”的目的。
挂在ossfs
# oss bucket名称 目标目录 endpoint ossfs yourBucketName /back -ourl=oss-cn-zhangjiakou-internal.aliyuncs.com
代表将oss-cn-zhangjiakou-internal.aliyuncs.com节点的“yourBucketName”挂载到本地文件系统中的“/back”目录。
检查效果
df -lh Filesystem Size Used Avail Use% Mounted on devtmpfs 909M 0 909M 0% /dev tmpfs 920M 0 920M 0% /dev/shm tmpfs 920M 560K 919M 1% /run tmpfs 920M 0 920M 0% /sys/fs/cgroup /dev/vda1 40G 17G 22G 44% / ossfs 256T 0 256T 0% /back
这里可以看到/back已经有256T的容量了。
4.创建备份脚本
在“/data/script/”中创建buckup.sh
#!/bin/bash TODAY=$(date +"%Y-%m-%d") if [ -z $1 ];then echo Needed Usage arguments. Please Use --help to get more infomation. exit 1 fi if [ "$1" == "db" ];then domain=$2 dbname=$3 mysqluser=$4 mysqlpd=$5 back_path=$6 mysql_host=$7 cd $back_path mysqldump -h$mysql_host -u$mysqluser -p$mysqlpd $dbname>$back_path/$domain\_db_$TODAY\.sql tar cvzf $back_path/$domain\_db_$TODAY\.tar.gz $domain\_db_$TODAY\.sql --remove-files elif [ "$1" == "file" ];then domain=$2 site_path=$3 back_path=$4 tar cvzf $back_path/$domain\_file_$TODAY\.tar.gz $site_path elif [ "$1" == "--help" ];then clear echo =====================================Help infomation========================================= echo 1. Use For Backup database: echo The \$1 must be \[db\] echo \$2: \[domain\] echo \$3: \[dbname\] echo \$4: \[mysqluser\] echo \$5: \[mysqlpassword\] echo \$6: \[back_path\] echo \$7: \[mysql_host\] echo echo echo 2. Use For Backup webfile: echo The \$1 must be [\file\]: echo \$2: \[domain\] echo \$3: \[site_path\] echo \$4: \[back_path\] echo echo =====================================End of Hlep============================================== exit 0 else echo "Error!Please Usage --help to get help infomation!" exit 2 fi
使用方式:
- 备份网站程序:/data/script/backup.sh file 网站域名 网站根目录 /back/
- 备份数据库:/data/script/backup.sh db 网站域名 数据库名称 数据库用户名 数据库密码 /back/ 数据库IP
5.配置crontab
输入crontab -e,心中如下两个配置:
0 4 * * 0 sh /data/script/backup.sh db tvzr.com dbname db_user db_pwd /back/ 127.0.0.1 0 4 * * 0 sh /data/script/backup.sh file tvzr.com /usr/local/nginx/html/tvzr.com /back/
表示每周日凌晨4点开始备份,备份的频率自己掌握,尽量和自己更新文章的频率一致。