centos利用scp定时把文件备份到指定的服务器
目前很多时候我们的应用是部署在虚拟机或者容器中,当虚拟机或者容器出现问题的时候,我们备份的一些数据或者文件存在丢失的风险,比如每日定时备份的数据库文件,应用日志等。我想到一个简单的办法,写一个shell脚本,每日定时拷贝我们的文件到一台物理机,给我们的运维工作再增加一道保险。要备份的服务器上要定时执行的脚本: 本地打包并上传到备份服务器。在备份服务器上生成rsa,用于scp免密码登录传输文件;有3
目前很多时候我们的应用是部署在虚拟机或者容器中,当虚拟机或者容器出现问题的时候,我们备份的一些数据或者文件存在丢失的风险,比如每日定时备份的数据库文件,应用日志等。
我想到一个简单的办法,写一个shell脚本,每日定时拷贝我们的文件到一台物理机,给我们的运维工作再增加一道保险。当然文件不是实时的,存在一定风险,请酌情处理。
有3台服务器, 一台是备份机器, 2台要备份的机器
举个列子
192.168.1.31 #虚拟机服务器
192.168.1.32 #物理机
安装步骤:
安装scp一般机器都有安装;
yum install openssh-clients
在备份服务器上生成rsa,用于scp免密码登录传输文件;
#生成密钥对
192.168.1.31> ssh-keygen -t rsa
#用于免密登录,如果存在authorized_keys则复制不成功
192.168.1.31> cp /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys
#用于scp远程免密登录 这里需要输入用户密码
192.168.1.31> scp /root/.ssh/authorized_keys root@192.168.1.32:/root/.ssh/
在要备份的服务器上执行, 看是否安装成功;
192.168.1.32>ssh root@192.168.1.31
192.168.1.32> scp /data/* root@192.168.1.31:/home/backup/site32/
/data 是要备份的目录;
site32 site33 用于区分不同的服务器备份文件, 目录要提前生成;
要备份的服务器上要定时执行的脚本: 本地打包并上传到备份服务器
#!/bin/sh
backpath=/home/wwwbackup/
date=`date +%y%m%d`
site=wwwroot
tar -zcvf ${backpath}${site}"-"${date}.tar.gz /${site}
scp ${backpath}${site}"-"${date}.tar.gz root@192.168.1.31:/home/backup/site32/
find ${backpath} -mtime +3 -exec rm {} \;
更多推荐
所有评论(0)