一、编写bash.sh
#设置mysql的备份保存目录
folder=/home/backup
rm -rf /home/backup
mkdir $folder
cd $folder
day=`date +%Y-%m-%d,%H:%M:%S-backup`
mkdir -p "$day"
cd $day
#数据库服务器ip,填写服务器的公网地址即可
host=ip地址
#用户名
user=root
#密码
password=数据库密码
#要备份的数据库名
#db=testdatabase
#执行备份语句 -A 是备份所有
mysqldump -h$host -u$user -p$password -A > ./all.sql
二、编写push.sh 用于将备份下来的文件传输到服务器B中
需要先安装 expect
yum install expect
#!/bin/bash
expect -c "
set timeout 300
#传输语句 将/home/backup/*下的所有内容传输到/home/autoBackup
spawn bash -c \" scp -r -p /home/backup/* 用户名称@服务器地址:/home/autoBackup\"
expect \"password:\"
send \"密码\r\"
expect eof"
三、编写好脚本之后 给两个脚本加上权限
chmod -R 777 back.sh
chmod -R 777 push.sh
四、设置定时任务
先安装 crontab
yum install crontabs
查看crontab状态
service crond status
可以先通过 cat /etc/crontab 查看示例
Example of job definition:
.---------------- minute (0 - 59) 分钟
| .------------- hour (0 - 23) 小时
| | .---------- day of month (1 - 31) 月中的天
| | | .------- month (1 - 12) OR jan,feb,mar,apr … 月
| | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat 每周的星期几
| | | | |
* * * * * user-name command to be executed 执行的命令
输入crontab -e 编写定时任务 每周六的晚上11点执行
0 23 * * 6 bash /home/bash/back.sh
5 23 * * 6 bash /home/bash/push.sh #因为备份需要点时间所有在back.sh执行5分钟后开始传输
每周六23点05分执行
然后:wq 保存退出
五、重启crontab
service crond restart