Linux下远程备份脚本
参考http://www.vpser.net/manage/scp.html
参考http://www.linuxidc.com/Linux/2008-01/10857.htm
场景:要将公网B机器上的数据库文件备份到局域网的A机器上,B机器上,每隔一天备份一次数据库思路因为局域网的机器无固定IP,所以在A机器上执行 ssh-keygen -t rsa
把这个密钥对中的公共密钥访问属性改为755,然后复制到B机器上去,并改名为 authorized_keys
[root@xxx root]#chmod 755 /root/.ssh/id_rsa.pub
[root@xxx root]# scp /root/.ssh/id_rsa.pub 192.168.1.92:/root/.ssh/authorized_keys
root@xxx's password
id_rsa.pub 100% 218 3.2MB/s 00:00
这样,可以从A机器上去上传文件至B机器,或者从B机器上下载文件至A(这里都是在A的机器上执行的操作)。
定期在A机器上执行如下脚本,就可以周期备份数据到A、B机器上。
#!/bin/bash
#用于数据库远程备份的脚本,会在远程服务器上的指定位置以及本机上各生成一个备份文件
remoteHost=192.168.1.168 #远程服务器IP
remoteDB=/root/backup/ #在远程服务器备份的目录
localDB=/root/backup/ #本机的数据库备份目录
DATABASE=azGuard #要备份的数据库名称
USERNAME=root #数据库用户名
PASSWORD=root #数据库密码
#生成的数据文件名
dbFile=${DATABASE}`date +%Y``date +%m``date +%d`".sql"
remoteFile=${remoteDB}${dbFile}
localFile=${localDB}${dbFile}
command="mysqldump -u${USERNAME} -p${PASSWORD} --databases ${DATABASE} > ${remoteFile}"
echo ${command}
result=`ssh root@${remoteHost} ${command}`
result=`scp root@${remoteHost}:${remoteFile} ${localFile}`