Linux 将 服务器A 的备份数据 自动定时 备份到服务器B

一、编写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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值