centos6.5环境通过shell脚本备份php的web及mysql数据库并做远程备份容灾
centos6.5环境通过shell脚本备份php的web及mysql数据库并做远程备份容灾
系统:centos6.5
1.创建脚本目录
mkdir -p /usr/local/sh/
创建备份web文件存放目录
mkdir -p /data/backup/www/
创建备份db文件存放目录
mkdir -p /data/backup/db/
授权backup用户对所有数据库的操作权限(注意用来备份mysql数据库)
GRANT ALL PRIVILEGES ON *.* TO 'backup'@'localhost' IDENTIFIED BY 'pass';
2.编辑备份的脚本文件
vim /data/scripts/backup-web-db.sh
#!/bin/bash
#需备份的站点目录
Website_Dir1=www.chinasoft.com
Website_Dir2=www.yayachinasoft.com
#数据库备份用户名密码
MYSQL_UserName=backup
MYSQL_PassWord=pass
#需要备份的数据名
Backup_Database_Name1=yunva
Backup_Database_Name2=yayasdk
#FTP服务器信息
FTP_HostName=ftp_ip
FTP_UserName=web-backup
FTP_PassWord=pass
FTP_BackupDir=website-db-backup/yayachinasoft-yayachinasoft/
#Values Setting END!
#备份文件名
TodayWWWBackup=*-$(date +"%Y%m%d").tar.gz
TodayDBBackup=*-$(date +"%Y%m%d").sql
OldWWWBackup=*-$(date -d -3day +"%Y%m%d").tar.gz
OldDBBackup=*-$(date -d -3day +"%Y%m%d").sql
#备份站点源码
tar -zcf /data/backup/www/$Website_Dir1--$(date +"%Y%m%d").tar.gz -C /var/www/web $Website_Dir1
tar -zcf /data/backup/www/$Website_Dir2--$(date +"%Y%m%d").tar.gz -C /var/www/web $Website_Dir2
#备份数据库
mysqldump -u$MYSQL_UserName -p$MYSQL_PassWord $Backup_Database_Name1 > /data/backup/db/$Backup_Database_Name1-$(date +"%Y%m%d").sql
mysqldump -u$MYSQL_UserName -p$MYSQL_PassWord $Backup_Database_Name2 > /data/backup/db/$Backup_Database_Name2-$(date +"%Y%m%d").sql
#备份配置文件
#cp /etc/php.ini /tmp/conf/php
#cp -r /etc/ningx/* /tmp/conf/nginx
#删除旧的备份文件
rm -f /data/backup/www/$OldWWWBackup
rm -f /data/backup/db/$OldDBBackup
#上传备份文件夹到FTP服务器
cd /data/backup/
lftp $FTP_HostName -u $FTP_UserName,$FTP_PassWord << EOF
cd /$FTP_BackupDir/www
mrm $OldWWWBackup
mput www/$TodayWWWBackup
cd /$FTP_BackupDir/db/
mrm $OldDBBackup
mput db/$TodayDBBackup
bye
EOF
3.添加脚本执行权限
chmod +x /data/scripts/backup-web-db.sh
4.添加计划任务:
每天凌晨2点执行备份任务
crontab -e
#backup-web-db
00 02 * * * /bin/bash /data/scripts/backup-web-db.sh >/dev/null 2>&1
重启生效
systemctl restart crond
公司内部FTP服务;
调试:
手动测试ftp是否能够连接
lftp ftp_ip -u web-backup,pass
手动调试程序是否正常执行:
sh -x /data/scripts/backup-web-db.sh
FTP_HostName=ftp_ip
FTP_UserName=web-backup
FTP_PassWord=pass
FTP_BackupDir=website-db-backup/yayachinasoft-yayachinasoft/
centos6.5环境通过shell脚本备份php的web及mysql数据库并做远程备份容灾的更多相关文章
- shell脚本连接、读写、操作mysql数据库实例
本文介绍了如何在shell中读写mysql数据库.主要介绍了如何在shell 中连接mysql数据库,如何在shell中创建数据库,创建表,插入csv文件,读取mysql数据库,导出mysql数据库为 ...
- Linux 用 shell 脚本 批量 导入 csv 文件 到 mysql 数据库
前提: 每个csv文件第一行为字段名 创建的数据库字段名同csv 文件的字段名 1. 批量导入 多个 csv 文件 for file in ./*.csv;do mv $file tablename. ...
- Shell脚本中执行sql语句操作mysql的5种方法【转】
对于自动化运维,诸如备份恢复之类的,DBA经常需要将SQL语句封装到shell脚本.本文描述了在Linux环境下mysql数据库中,shell脚本下调用sql语句的几种方法,供大家参考.对于脚本输出的 ...
- shell编程系列24--shell操作数据库实战之利用shell脚本将文本数据导入到mysql中
shell编程系列24--shell操作数据库实战之利用shell脚本将文本数据导入到mysql中 利用shell脚本将文本数据导入到mysql中 需求1:处理文本中的数据,将文本中的数据插入到mys ...
- shell脚本专题之-----------全自动编译安装mysql
mysql的编译安装,在博客 开源服务专题之--------mysql的编译安装 中已经说明了,但是还是比较麻烦,尤其是一大堆命令,来手动执行,稍有不慎,就会出错.生产上一般都是先在本地测试环境进行自 ...
- Shell脚本中执行sql语句操作mysql
对于自动化运维,诸如备份恢复之类的,DBA经常需要将SQL语句封装到shell脚本.本文描述了在Linux环境下mysql数据库中,shell脚本下调用sql语句的几种方法,供大家参考.对于脚本输出的 ...
- shell脚本专题之-----------全自动编译安装mysql(免安装版)
mysql的编译安装,在博客 开源服务专题之--------mysql的编译安装 中已经说明了,但是还是比较麻烦,尤其是一大堆命令,来手动执行,稍有不慎,就会出错.生产上一般都是先在本地测试环境进行自 ...
- SHELL脚本中执行SQL语句操作MYSQL的5种方法
对于自动化运维,诸如备份恢复之类的,DBA经常需要将SQL语句封装到shell脚本.本文描述了在Linux环境下mysql数据库中,shell脚本下调用sql语句的几种方法,供大家参考.对于脚本输出的 ...
- mysql数据库每个表的备份脚本
对mysql数据库中的每张表进行按日期备份,思想是:先把每张表的表名取出取出,然后通过for循环去对每个表进行按日期备份 [root@ZFVM-APP-- backup]# vim dataname. ...
随机推荐
- ipmitool+python应用处理大量带外地址
ipmitool 是一种可用在 linux 系统下的命令行方式的 ipmi 平台管理工具,它支持 ipmi 1.5 规范(最新的规范为 ipmi 2.0),通过它可以实现获取传感器的信息.显示系统日志 ...
- 浅谈final修饰的变量
一直大概的知道final关键字的作用,但是自己实际工作中却很少用,除非在声明一些常量值的时候,今天忽然自己在项目中用一个map进行存储一些值.一开始我只是用private修饰的,心里想的是如果fina ...
- Java进阶之路
Java进阶之路——从初级程序员到架构师,从小工到专家. 怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是不仅一个刚刚踏入职场的初级程序 ...
- (转)CS0016: 未能写入输出文件
转自:http://www.pageadmin.net/article/20130305/537.html 编译错误 说明: 在编译向该请求提供服务所需资源的过程中出现错误.请检查下列特定错误详细信息 ...
- Python OS模块中的fork方法实现多进程
import os '''使用OS模块中的fork方式实现多进程''' '''fork方法返回两次,分别在父进程和子进程中返回,子进程中永远返回0,父进程返回的是子进程的is''' if __name ...
- PostgreSQL(一)教程 -----SQL语言
一.概念 PostgreSQL是一种关系型数据库管理系统 (RDBMS).这意味着它是一种用于管理存储在关系中的数据的系统.关系实际上是表的数学术语. 今天,把数据存储在表里的概念已经快成了固有的常识 ...
- Luogu2661 信息传递(图论)
Luogu2661 信息传递(图论) Description 有n个同学(编号为1到n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti ...
- Linux上printf命令的用法
printf格式化输出 基本格式 printf [format] [文本1] [文本2] .. 常用格式替换符 %s 字符串 %f 浮点格式 %c ASCII字符,即显示对应参数的第一个字符 %d,% ...
- 【转】Android 编程下的代码混淆
什么是代码混淆 代码混淆(Obfuscated code)亦称花指令,是将计算机程序的代码,转换成一种功能上等价,但是难于阅读和理解的形式的行为.代码混淆可以用于程序源代码,也可以用于程序编译而成的中 ...
- 为什么使用消息队列,为什么使用RabbitMQ、springAMQP
1.为什么使用消息队列? 2.为什么使用RabbbitMQ? 3.为什么使用spring AMQP?