liunx服务器通过ssh实现异地备份

发布时间 2023-07-31 17:52:36作者: IT之家

最近开发一套系统,为了安全考虑需要定时备份数据库和文件,前面已经实现本地定时备份数据库和文件,现在记录一下如何实现异地服务器备份。我这里是使用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

4. 使用rsynct复制将备份文件夹复制到目标服务器

rsync -avz -e ssh /backup  root@172.16.19.1:/backup

 5. 将自动备份命令写入corntab服务内

crontab -e # 编辑

00 01 * * * rsync -avz -e ssh /backup  root@172.16.19.1:/backup  # 每天1点钟开始异地备份