1.scp在建立连接中是需要密码认证的,所以我们第一步就是添加ssh公匙
ssh-keygen -t rsa
结果如下
Generating public/private rsa key pair.
Enter file in which to save the key (/home/.username/ssh/id_rsa):#回车
Enter passphrase (empty for no passphrase):#回车
Enter same passphrase again:#回车
Your identification has been saved in /home/.username /.ssh/id_rsa.
Your public key has been saved in /home/.username /.ssh/id_rsa.pub.
The key fingerprint is:
38:25:c1:4d:5d:d3:89:bb:46:67:bf:52:af:c3:17:0c username@localhost
Generating RSA keys:
Key generation complete.
会在用户目录~/.ssh/产生两个文件,id_rsa,id_rsa.pub
然后把此机器上的id_rsa 文件拷贝到远程服务器/root/.ssh目录下,并命名authorized_keys 即
scp /root/.ssh/id_rsa.pub root@10.1.1.2:/root/.ssh/authorized_keys
这样从本地服务器复制到B服务器就不需要密码了。
2:scp做好了接下来就开始写备份数据库的脚本了。mysqlbackup.sh。此脚本会再本地及远程服务器同时备份。并且只保存近十天的。备份的频率可以从 crontab -e 写cron表达式去设置。
#!/bin/bash
#备份路径
BACKUP=/home/backup/mysql
#当前时间
DATETIME=$(date +%Y-%m-%d_%H%M%S)
echo "===备份开始==="
echo "备份文件存放于${BACKUP}/$DATETIME.tar.gz"
#数据库地址
HOST=localhost
#数据库用户名
DB_USER=root
#数据库密码
DB_PW=fulan123
#创建备份目录
[ ! -d "${BACKUP}/$DATETIME" ] && mkdir -p "${BACKUP}/$DATETIME"
#后台系统数据库
DATABASE=fulan_erp
mysqldump -u${DB_USER} -p${DB_PW} --single-transaction --host=$HOST -q -R --databases $DATABASE | gzip > ${BACKUP}/$DATETIME/$DATABASE.sql.gz
#压缩成tar.gz包
cd $BACKUP
tar -zcvf $DATETIME.tar.gz $DATETIME
#备份到37服务器
scp $DATETIME.tar.gz root@目标服务器ip:/home/mysqlbackup
#删除备份目录
rm -rf ${BACKUP}/$DATETIME
#删除10天前备份的数据
find $BACKUP -mtime +10 -name "*.tar.gz" -exec rm -rf {} \;
echo "===数据库备份到服务器成功==="
3 .在远程服务器上可以也只保存今十天的,然后也可以每天备份完后,然后将数据库同步到此服务器数据库,这样如果生产生有问题就方便查问题。 此功能本人已实现,目前在测试阶段,未完待续。。。。
小贴士:如果crontab任务发现没执行可以去查看日志文件。 cat /var/spool/mail/root