最近开发一套系统,为了安全考虑需要定时备份数据库和文件,前面已经实现本地定时备份数据库和文件,现在记录一下如何实现异地服务器备份。我这里是使用SSH进行备份,所以需要在待备份服务上面安装openssh-server,主服务器上面需要安装openssh-clients。具体操作步骤如下,我这里Liunx使用的是centos7,如果使用的是其它系统的可以将yum改为apt-get即可
1. 待备份服务器安装openssh-server,安装命令如下,如果系统没有安装openssh,下面的命令会进行安装操作
sudo yum install openssh-server # 安装openssh-server
在安装过程中,我遇到了一个问题,就是安装的时候提示 No package openssh-server available 意思就是找不到包,这个问题产生的原因,一般是因为yum的源有问题,可以通过更新yum的方法来解决,代码如下:
cd /etc/yum.repos.d/ # 切换目录到yum的源目录 mv CentOS-Base.repo CentOS-Base.repo.back # 备份yum源文件
wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo # 从阿里云的源下载yum源,如果wget命令无效,你可能需要使用下面的命令安装一下wget
yum install -y wget # 安装wget,如果系统已经有了,就不需要执行这个命令了
yum clean all # 清除yum源的缓存
yum makecache # 重新建立缓存
如果不确认是否已安装openssh-server,可以使用下面的命令查询
rpm -qa|grep openssh #此命令可以显示是否安装了openssh相关的服务
如图所示,服务器已安装了openssh-server服务了,安装成功后可以使用下面的命令启动服务
sudo systemctl start sshd.service # 启动服务,不同版本的centos可能命令会所有区别,如果systemctl命令不行,可以使用 sudo service sshd start
sudo systemctl enable sshd.service # 将服务设置为自动启动,同上,如果systemctl命令不行,可以使用sudo service sshd enable
2. 在主服务器上面安装openssh-client,安装操作与openssh-server的操作差不多,下面是安装命令
sudo yum install openssh-client
3.安装完后使用SSH就可以进行登录了,但是这个时候还只能使用用户名密码登录,文件备份显然是不方便的,所以要进行免密登录,步骤如下:
1). 在待备份的服务器上面生成密钥,命令如下:
ssh-keygen -t rsa # 使用rsa加密方法生成密钥,生成过程中需要确认操作,直接回车确认即可。
2). 密钥生成后,一般会的/root/.ssh/目录下面生成 id_rsa (私钥),id_rsa.pub (公钥)等文件,使用下面的命令将公钥文件复制到客户机上,输入命令后需要输入服务器对应用户名的密码才可以生效,ssh-copy-id命令是专门用户将公钥文件复制到远程主机上的
ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.19.22 # 复制公钥文件到172.16.19.22服务器上面,并且以root用户名登录,其中-i 的参数是指定公钥文件
使用上面的命令,公钥文件就会被写入到目标服务器上面的/ssh/目录下面的,其中~表示,当前用户目录,如果是非root用户则目录为/home/username/,否则就是/root
3). 密钥复制成功就可以使用免密码登录了,可以使用下面的命令登录
ssh root@192.168.1.1
rsync -avp -e ssh /backup/ root@172.168.1.1:/backup # 使用SSH免密登录,将本地的backup文件夹复制到目标服务器的backup -a 归档拷贝 -v 显示复制过程 -p增量复制已存在的文件不再复制
5. 将自动备份命令写入corntab服务内
crontab -e # 编辑 00 01 * * * rsync -avz -e ssh /backup root@172.16.19.1:/backup # 每天1点钟开始异地备份