从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
1
| wget https://github.com/aliyun/ossfs/releases/download/v1.80.5/ossfs_1.80.5_centos7.0_x86_64.rpm
|
安装依赖
1 2
| yum install fuse yum install fuse-libs
|
安装ossfs
1
| rpm -ivh ossfs_1.80.5_centos7.0_x86_64.rpm
|
3.配置并挂载ossfs
创建配置文件
1 2
| echo yourBucketName:access_key_id:access_key_secret > /etc/passwd-ossfs chmod 640 /etc/passwd-ossfs
|
创建目录
创建这个目录就是为了将oss挂载到该目录,以达到“扩容”的目的。 挂在ossfs
1 2
| ossfs yourBucketName /back -ourl=oss-cn-zhangjiakou-internal.aliyuncs.com
|
代表将oss-cn-zhangjiakou-internal.aliyuncs.com节点的yourBucketName挂载到本地文件系统中的/back目录。 检查效果
1 2 3 4 5 6 7 8
| 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| #!/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,心中如下两个配置:
1 2
| 0 4 * * 0 sh /data/script/backup.sh db dev.net.cn dbname db_user db_pwd /back/ 127.0.0.1 0 4 * * 0 sh /data/script/backup.sh file dev.net.cn /usr/local/nginx/html/dev.net.cn /back/
|
表示每周日凌晨4点开始备份,备份的频率自己掌握,尽量和自己更新文章的频率一致。